从TMS320F281x DSP片上FLASH中运行应用程序_从FLASH转移到RAM运行_BIOS_CMD配置
- 格式:pdf
- 大小:284.17 KB
- 文档页数:17
f2812把程序从FLASH搬到RAM中运行【转】例程:第一步:// Functions that will be run from RAM need to be assigned to// a different section. This section will then be mapped using// the linker cmd file.#pragma CODE_SECTION(EPwm1_timer_isr, "ramfuncs");#pragma CODE_SECTION(EPwm2_timer_isr, "ramfuncs");MAIN(){// These are defined by the linker (see F2808.cmd)在CMD里面定义的变量extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;User specific code, enable interrupts:// Copy time critical code and Flash setup code to RAM// This includes the following ISR functions: EPwm1_timer_isr(), EPwm2_timer_isr()// EPwm3_timer_isr and and InitFlash();// The RamfuncsLoadStart, RamfuncsLoadEnd, and RamfuncsRunStart// symbols are created by the linker. Refer to the F2808.cmd file.MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd,&RamfuncsRunStart);// Call Flash Initialization to setup flash waitstates// This function must reside in RAMInitFlash();//FLASH初始化的函数不能在FLASH里面运行,必须拷到别的内存空间里运行才能对FLASH进行初始化。
基于TMS320F2812的程序从FLASH到RAM的移植
万浩平;陈剑云;马进
【期刊名称】《工业控制计算机》
【年(卷),期】2009(22)2
【摘要】TMS320F2812 DSP里,代码从内部Flash里运行,比从内部RAM里运行要慢30%左右,所以对运行时间苛刻的程序直接在Flash里运行,往往不能满足要求.需要将代码移植到RAM以提高运行速度.主要研究TMS320F2812数字信号控制器的初始化编译段从片内Flash复制到片内RAM,在运行的时侯达到优化执行速度.方案实现了在开机后,程序执行到c_intoo c函数之前来直接实现这一功能.
【总页数】3页(P87-88,90)
【作者】万浩平;陈剑云;马进
【作者单位】华东交通大学电气与电子工程学院,江西,南昌,330013;华东交通大学电气与电子工程学院,江西,南昌,330013;华东交通大学电气与电子工程学院,江西,南昌,330013
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于TMS320F2812片外FLASH烧写技术 [J], 王林;戴曙光;穆平安;刘微微
2.数字信号处理器TMS320F2812的片内FLASH应用程序设计 [J], 孙中禹
3.基于TMS320F28335的DSP/BIOS系统从FLASH到RAM运行 [J], 陈惠纲;
黎驱
4.基于eCos操作系统的FLASH驱动程序分析与移植 [J], 石强;张丽杰;常佶
5.基于TMS320F28335的程序从FLASH到RAM的移植与运行 [J], 杨宣兵;陈明;彭义
因版权原因,仅展示原文概要,查看原文内容请购买。
一旦编译器生成的这些段,连接器会从各个源文件中取出这些段,并结合它们来创立一个输出文件。
连接器命令文件〔 d〕就是用来告诉连接器去哪里找这些段的。
初始化段必须分配到非易失性存储器,如flash/ ROM,当电源被撤除时,程序不会消失。
未初始化的段可以被分配到RAM中,因为它们是在代码执行期间被初始化的。
关于更多编译段和连接的信息,请参见:"TMS320C28* Assembly LanguageTools User’s Guide "(SPRU513) 和" the TMS320C28* Optimizing C/C++ piler User’s Guide"(SPRU514)。
仪器〔TI〕提供了多个例子显示如何使用器命令文件分配编译段。
其中一个就是"Running an Application from Internal Flash Memory on the TMS320F28** DSP "(SPRA958)。
此应用文档提供的例子,演示了使用基于RAM和Flash的工程的器命令文件。
3.软件:本应用文档相关的代码文件,包括修改后的版本的CodeStartBranch.asm文件和非DSP/BIOS™工程用的文件DSP28***_SectionCopy_nonBIOS.asm,由the C/C++ Header Files and Peripheral E*amples提供。
每个TMS320F28***处理器都提供了现成的连接器命令文件。
提供的例如工程演示了如何使用这些文件。
本应用文档以TMS320F2808为例。
该软件独立存放于F28***_Flash_to_Ram文件夹中。
代码使用的来自the C/C++ Header Files and Peripheral E*amples的几个文件,经过了Code poser Studio™ 3.3和F28***代码生成工具B3版本的测试。
《绪论》F2812和F2810的特点和区别特点:1)CPU 32位定点CPU 主频高达150MHz 增强型哈佛总线结构支持JTAG仿真接口2)存储器4MB的程序/数据寻址空间(片外1MB)片上高达128KX16位FLASH存储器18KX16位单周期访问片内RAM3)两个事件管理器EVM 每个EVM模块包括:8通道16位PWM 死区产生和配置单元外部可屏蔽功率或驱动保护中断正交脉冲编码接口(QEP)三个捕捉单元,捕捉外部时间,特别适合于电机控制4)串行通信外设一个高速同步串行外设接口(SPI)两个UART接口模块(SCI)增强的CAN2.0B接口模块多通道缓冲串口(McBSP)5)ADC模块12位,2X8通道(两个S/H),A/D转换周期200ns,输入电压0~3V。
6)其它外设:锁相环(PLL)控制的时钟倍频系数看门狗定时模块三个外部中断3个32位CPU定时器128位保护密码高达56个通用I/O引脚支持IDLE,STANDBY,HALT 等省电模式区别:F2812有外部存储器接口,TMS320F2810没有;TMS320F2812有128K的Flash TMS320F2810仅64K;F2812具有外部扩展接口XINTF,高达1MW的寻址空间,支持可编程的等待状态和读写选通时序,提供三个独立的片选信号,而F2810没有F281x外部接口:一个高速同步串行外设接口(SPI),两个UART接口模块(SCI),增强的CAN2.0B 接口模块,多通道缓冲串口(McBSP)。
TMS320F28x系列中的F2810、F2811、F2812间有何区别?TMS320F2812有外部存储器接口,而TMS320F2811和TMS320F2810没有。
TMS320F2812和TMS320F2811有128K的Flash,而TMS320F2810仅64K。
与单片机相比,DSP有何特点?接口方便;编程方便;具有高速性;稳定性好;精度高;可重复性好;集成方便DSP器件比16位单片机单指令执行时间快8~10倍完成一次乘加运算快16~30倍。
1. 一定要下载最新的FLASH烧写插件,可以避免很多奇怪的错误出现,这一点非常重要,本人就是在此问题困扰了一整天。
名称是:C2000-2[1][1].00-SA-to-UA-TI-FLASH2X.EXE我使用的产品版本号为2.02.0012. 下载烧写FLASH配套CMD文件、LIB文件以及起始代码asm文件。
CMD文件名称:DSP281x_Headers_nonBIOS.cmdCMD文件名称:F2812.cmdLIB文件名称:rts2800_ml.libASM文件名称:DSP281x_CodeStartBranch.asm另外在RAM调试时用以下两个文件:F2812_EzDSP_RAM_lnk.cmdDSP281x_Headers_nonBIOS.cmd附件给出了2个CMD文件、ASM文件、LIB文件以及C文件。
其中C文件仅仅作为大家参考。
3. 配置C文件配置好主程序的C文件,才能将FLASH成功烧录,并且将FLASH中的文件拷贝到RAM中运行。
关于C文件的配置。
首先在F2812.CMD文件中,我们可以看到有关于加载FLASH到RAM的内容:ramfuncs : LOAD = FLASHD,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSystem();)之后即可:InitSystem();memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd - &RamfuncsLoadStart);Initflash();所以,我们需要定义所用变量:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;我的这些定义都是:DSP281x_GlobalPrototypes.h 当中,当然,也可以放在其他系统初始化的地方。
在TMS320F28XXX DSP上实现从flash拷贝整个程序到ram运行的方法1. 前言TMS320F28XXX DSP 里,代码从内部flash里运行,比从内部RAM里运行要慢30%左右,所以对运行时间苛刻的程序直接在flash里运行,往往不能满足要求。
故而,需要将代码拷贝到RAM以提高运行速度。
TI文档只提供了部分代码从flash拷贝到RAM中的方法。
然而,在一些应用中,需要将整个代码段都拷贝到RAM中执行,以提高整体运行速度。
本文通过对TMS320F28XXX 的启动代码研究,来探讨如何在从FLASH启动后将整个代码段拷贝到RAM 中,然后在RAM中运行的方法。
2. F28XXX 启动过程F28XXX启动代码固化在内部ROM中。
当F28XXX上电或者热复位后,首先由芯片本身将一些寄存器初始化:PIE disabled(ENPIE=0,VMAP=1,OBJMDE=0,AMODE=0,MOM1MAP=1),然后dsp会对XMPNMC管脚采样,根据采样值的高低,来决定启动模式是“微处理器模式”还是“微计算机模式”。
当XMPNMC=0时,为“微计算机模式”,此时,启动ROM存储器被使能而XINTF Zone 7被禁止。
复位向量从内部启动ROM获取,启动ROM在复位期间一直被使能。
启动ROM里的复位向量(位于0x3FFFC0)指向InitBoot函数(位于0x3FFC00)。
在完成器件初始化(InitBoot)之后,Boot loader将检查GPIO管脚的状态,然后再决定选用的启动模式。
启动模式有4种:跳转到flash,跳转到H0 SARAM,跳转到OTP或者调用片上启动程序。
InitBoot Function 所做工作有:1.初始化状态寄存器;2.将堆栈指针设为0x400;3.读CSM密码保护部分;4.调用SelectBootMode;5.调用ExitBoot在完成选择启动模式过程之后,根据选择的启动模式,dsp会跳到相应的启动入口。
TMS320F28x DSP片内Flash的在线编程技术
罗欣;刘震
【期刊名称】《仪表技术与传感器》
【年(卷),期】2005(000)007
【摘要】在研究TMS320F28x DSP片内Flash存储器的特性的基础上,开发了一种DSP片内Flash的远程在线编程系统.该系统中,上位机通过CAN总线向DSP终端发送编程命令和编程数据,然后通过DSP自身功能实现对Flash的在线编程.对该系统的硬件构成进行了说明,给出了具体的软件实现方法和流程,特别是针对程序在不同存储空间的切换、Flash中程序入口地址的修改、Flash写入代码的生成等技术难点进行了分析和说明.这种远程在线编程方法为DSP系统的软件维护和升级带来了方便,具有广泛的应用价值.
【总页数】4页(P40-43)
【作者】罗欣;刘震
【作者单位】西北工业大学自动化学院,陕西,西安,710072;西北工业大学自动化学院,陕西,西安,710072
【正文语种】中文
【中图分类】TP368
【相关文献】
1.TMS320LF240x系列DSP片内FLASH的在线编程 [J], 李兴建;曹五顺;李琨
2.基于串口的TMS320F240片内FLASH编程技术 [J], 白洁;赵振宇
3.基于USB的TMS320F2803x片内Flash在线编程技术 [J], 熊金
4.TMS320LF240XA系列DSP片内FLASH编程技术 [J], 赖欣;胡泽;赖晓斌;汪春浦
Scope嵌入式仿真开发平台讲座(31) TKScope率先发布AVR增强型Flash 组件支持片内/片外Flash在线编程 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。