C2000 LaunchPad RAM运行

C2000 LaunchPad RAM运行

ID:39549778

大小:52.00 KB

页数:6页

时间:2019-07-06

C2000 LaunchPad RAM运行_第1页
C2000 LaunchPad RAM运行_第2页
C2000 LaunchPad RAM运行_第3页
C2000 LaunchPad RAM运行_第4页
C2000 LaunchPad RAM运行_第5页
资源描述:

《C2000 LaunchPad RAM运行》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、【C2000LaunchPad】在FLASH里运行在FLASH里运行程序,只是将程序烧写到FLASH中,与在RAM里运行没有本质的区别。但是在FLASH里运行需要设置等待周期,对于对时间要求严格的过程,需要拷贝到RAM中运行,以达到最高速度。这样,如果对程序处理不当,就有可能使在RAM中运行正常的程序烧入FLASH中后就无法正常运行。关于这方面的内容需要看这两个:《TMS320C28xOptimizingC/C++CompilerUser'sGuide》、《TMS320C28xAssemblyLanguageToolsUser'sGuide》及其它相关文件。

2、下面在前几节实例的基础上,向大家介绍如何在FLASH里运行程序。一、更换CMD文件1、使用F28027.COM文件。在ProjectExplorer窗口右击项目名称,在出现的右键菜单里选择Properties,更换CMD文件方法如下:也可以在ProjectExplorer窗口右击F28027.COM文件,在出现的右键菜单里选择Properties,将这个文件包含在工程中:2、去掉28027_RAM_lnk.cmd文件。右击28027_RAM_lnk.cmd在出现的右键菜单里选择Properties,并将它打上勾:3、F2802x_Headers_nonBIO

3、S.cmd不管在什么情况下都是要用的。它是定义内部特殊寄存器用的,如CPU定时器寄存器。这些是固定不变的。二、将需要在RAM中运行的过程拷贝到RAM中。首先定义哪些过程(函数)需要在RAM里运行,然后使用MemCopy()将它们搬到RAM中。1、定义ramfuncs的过程这里的关键字“ramfuncs”是在CMD文件中定义的:ramfuncs:LOAD=FLASHA,RUN=PRAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),/*LOAD_SIZE(_RamfuncsLoadSiz

4、e),*/RUN_START(_RamfuncsRunStart),PAGE=0由上可见,在烧写时,将定义的ramfuncs部分写在FLASHA里,系统运行时再拷贝到PRAML0里运行,这里的RamfuncsLoadStart等,是由编译器生成的。在文件的开头或包含的头文件中需要加上声明:externUint16RamfuncsLoadStart;externUint16RamfuncsLoadEnd;externUint16RamfuncsRunStart;定义ramfuncs的过程是使用#pragma宏指令:#pragmaCODE_SECTION(SCI

5、TXINTA_ISR,"ramfuncs");#pragmaCODE_SECTION(SCIRXINTA_ISR,"ramfuncs");以上两行代表将SCITXINTA_ISR()及SCIRXINTA_ISR()作为ramfuncs。对于其它需要指定ramfuncs的过程,参照此方法。注意:使用#pragma宏指令,要在该过程所在的文件中使用,否则无效。可以在MAP文件中查看。以上两行如果不在当前文件中使用,而放在主文件中时,map文件是这样的ramfuncs0003f611200000021RUNADDR=00008000003f61120000001d

6、F2802x_SysCtrl.obj(ramfuncs)003f612f00000004F2802x_usDelay.obj(ramfuncs)如果把这两行放在过程所在的文件中时,MAP文件是这样的:ramfuncs0003f600000000061RUNADDR=00008000003f600000000040F2802x_DefaultIsr.obj(ramfuncs:retain)003f60400000001dF2802x_SysCtrl.obj(ramfuncs)003f605d00000004F2802x_usDelay.obj(ramfuncs

7、)对于使用汇编语言编制的程序,则使用sect命令,如F2802x_usDelay()过程:.def_DSP28x_usDelay.sect"ramfuncs".global__DSP28x_usDelay_DSP28x_usDelay:SUBACC,#1BF_DSP28x_usDelay,GEQ;;LoopifACC>=0LRETR此时的sect命令的使用,也是在过程所在的当前文件中。2、将过程从FLASH拷贝到RAM中。使用以下方法:MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart)

8、;原形如下:voidMemCopy(Uint16*S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。