DSP代码搬运至RAM运行

程序运行过程中,有些函数或程序段和数据等经常调用,正常情况下在FLASH中运行处理消耗时间和资源较大,通常将其移植至RAM中运行,可提高运行效率。

如:

 1 #pragma CODE_SECTION(InitFlash, "ramfuncs") 

解释:

  将InitFlash函数存在ramfuncs中。该语句功能是将InitFlash函数写入RAM中,因为InitFlash经常被调用,这样省得每次都从flash中写入RAM。如果还有经常反复调用的函数,也可自行添加类似语句,需注意#pragma CODE_SECTION (InitFlash, "ramfuncs") 应该写在函数Initflash()所在的C文件中,并且在函数之前声明;在CCS中,如果我们不指定变量的存放位置,编译器会自动给变量分配一个位置,但有的时候我们想要把变量放在一个特定的空间里,那应该怎么办呢?
  CCS提供了以下两个指令:#pragma CODE_SECTION和#pragma DATA_SECTION,其中data_section是针对数据空间的,code_section是针对程序空间的。

CODE_SECTION Pragma命令格式:

 1 #pragma CODE_SECTION (func, "section name") 
为函数func分配一个段空间,且该空间不在.text段(一般程序),段名为"section name。

DATA_SECTION pragma命令格式:

 1 #pragma DATA_SECTION (symbol, "section name") 

将数据对象symbol分配在不同于.bss(一般数据)的空间内,生成一个数据段,段名为"section name“.
例如:

1 #pragma DATA_SECTION (AdcRegs,"AdcRegsFile")

volatile struct ADC_REGS AdcRegs; 


将一个结构体AdcRegs与F2812的外设AD转换寄存器相对应。使得对结构体的操作作用于寄存器。

 

posted @ 2018-08-03 10:54  Siwei_Yang  阅读(2455)  评论(0)    收藏  举报