C2000 LaunchPad RAM运行.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C2000 LaunchPad RAM运行

【C2000 LaunchPad】在FLASH里运行 在FLASH里运行程序,只是将程序烧写到FLASH中,与在RAM里运行没 有本质的区别。但是在FLASH里运行需要设置等待周期,对于对时间要求严 格的过程,需要拷贝到RAM中运行,以达到最高速度。这样,如果对程序处 理不当,就有可能使在RAM中运行正常的程序烧入FLASH中后就无法正常运 行。关于这方面的内容需要看这两个:《TMS320C28x Optimizing C/C++ Compiler Users Guide》、《TMS320C28x Assembly Language Tools Users Guide》 及其它相关文件。 下面在前几节实例的基础上,向大家介绍如何在FLASH里运行程序。 一、更换CMD文件 1、使用F28027.COM文件。 在Project Explorer窗口右击项目名称,在出现的右键菜单里选择Properties, 更换CMD文件方法如下: 也可以在Project Explorer窗口右击F28027.COM文件,在出现的右键菜单里 选择Properties,将这个文件包含在工程中: 2、去掉28027_RAM_lnk.cmd文件。右击28027_RAM_lnk.cmd在出现的右 键菜单里选择Properties,并将它打上勾: 3、F2802x_Headers_nonBIOS.cmd不管在什么情况下都是要用的。它是定 义内部特殊寄存器用的,如CPU定时器寄存器。这些是固定不变的。 二、将需要在RAM中运行的过程拷贝到RAM中。 首先定义哪些过程(函数)需要在RAM里运行,然后使用MemCopy()将 它们搬到RAM中。 1、定义ramfuncs的过程 这里的关键字“ramfuncs”是在CMD文件中定义的: ramfuncs : LOAD = FLASHA, RUN = PRAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END (_RamfuncsLoadEnd), /* LOAD_SIZE(_RamfuncsLoadSize),*/ RUN_START(_RamfuncsRunStart), PAGE = 0 由上可见,在烧写时,将定义的ramfuncs部分写在FLASHA里,系统运 行时再拷贝到PRAML0里运行,这里的RamfuncsLoadStart等,是由编 译器生成的。在文件的开头或包含的头文件中需要加上声明: extern Uint16 RamfuncsLoadStart; extern Uint16 RamfuncsLoadEnd; extern Uint16 RamfuncsRunStart; 定义ramfuncs的过程是使用#pragma宏指令: #pragma CODE_SECTION(SCITXINTA_ISR, ramfuncs); #pragma CODE_SECTION(SCIRXINTA_ISR, ramfuncs); 以上两行代表将SCITXINTA_ISR()及SCIRXINTA_ISR()作为ramfuncs。 对于其它需要指定ramfuncs的过程,参照此方法。 注意:使用#pragma宏指令,要在该过程所在的文件中使用,否则无效。 可以在MAP文件中查看。 以上两行如果不在当前文件中使用,而放在主文件中时,map文件是这样的 ramfuncs 0 003f6112RUN ADDR =003f6112 0000001d F2802x_SysCtrl.obj (ramfuncs) 003f612fF2802x_usDelay.obj (ramfuncs) 如果把这两行放在过程所在的文件中时,MAP文件是这样的: ramfuncs 0 003f6000RUN ADDR =003f6000F2802x_DefaultIsr.obj(ramfuncs:retain) 003f6040 0000001d F2802x_SysCtrl.obj (ramfuncs) 003f605dF2802x_usDelay.obj (ramfuncs) 对于使用汇编语言编制的程序,则使用sect命令,如F2802x_usDelay()过程: .def _DSP28x_usDelay .sect ramfuncs .global __DSP28x_usDelay _DSP28x_usDelay: SUB ACC,#1 BF _DSP28x_usDelay,GEQ ;; Loop if ACC = 0 LRETR 此时的sect命令的使用,也是在过程

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档