DSP28335/28035程序烧入flash经验

  在DSP程序烧入flash后,为了使得程序运行时间和ram中一样,需要将程序搬运到ram里面。网上通常教的方法是利用memcopy函数,将需要搬迁到Ram的函数从Flash搬运至Ram中。
在main.c写

#pragma CODE_SECTION(adca1_interrupt_isr,"ramfuncs");//指定某函数在ram里运行
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); 
InitFlash();

  如果adca1_interrupt_isr包含了所有的程序,而且没有程序调用的话,这样确实是使得所有的算法都运行到了ram里面,但是如果adca1_interrupt_isr中有几个函数A,B,C,D。它们写在了另一个文件vector.c中,那么这时候,A,B,C,D这几个函数的代码其实仍然是在flash中运行的。这样,程序的执行时间会变得和ram中不同。也就是说,这种方法只能将指定的函数搬运至Ram,这一函数调用的子函数并不会被搬运。
  为了实现真正搬运所需的全部函数,需要对CMD文件进行修改。

   ramfuncs            : LOAD = FLASHD, 
                         RUN = RAML0, 
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         LOAD_SIZE(_RamfuncsLoadSize),
                         PAGE = 0
						{
							-l rts2800_fpu32.lib<boot.obj>(.text)      /**/
							-l rts2800_fpu32_fast_supplement.lib<cos_f32.obj>(.text)
							-l rts2800_fpu32_fast_supplement.lib<sin_f32.obj>(.text)
							-l rts2800_fpu32_fast_supplement.lib<sqrt_f32.obj>(.text)
							-l rts2800_fpu32_fast_supplement.lib<div_f32.obj>(.text)
						}

  以上修改中,将三角函数,开方,除法等函数所在文件对应生成的obj文件,链接到了ram里面。将编译生成的obj文件用连接符l使得它们被分配到FLASH加载RAM运行区域,使得对于时间要求较高的程序真正运行在RAM当中,这样整个程序就和ram里面跑基本效率差不多。
  总结下来,做法是针对需要移到ram运行的程序A,B,C,D,将这部分测序对应生成的obj文件A.obj,B.obj,C.obj,D.obj链接过去。

   ramfuncs            : LOAD = FLASHD, 
                         RUN = RAML0, 
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         LOAD_SIZE(_RamfuncsLoadSize),
                         PAGE = 0
						{
							-l rts2800_fpu32.lib<boot.obj>(.text)      /**/
							-l A.obj(.text)
							-l B.obj(.text)
							-l C.obj(.text)
							-l D.obj(.text)
						}

  有的教程中,提到通过修改cmd文件让所有函数都直接在ram运行,这样我觉得是不好的。因为有时候我们用的芯片要烧入flash可能就是因为ram空间不够了,这时候把所有程序都搬运区ram运行,那么就和直接ram运行没区别了。像28335的ram比较大,影响不大,但是对28035这样ram比较小的dsp,ram空间会不足。
  有部分对时间要求不强的程序,在ram运行,属于浪费了ram。

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值