
在用纯汇编编制的dsp程序时需要做如图所示的调整,这是因为:
在CCS的build options中的linker选项卡中,Autoinit Model有两个选项:Run-Time Autoinitialization和Load-Time Initialization。
因为这两个选项和.cinit和.bss Section有关,所以先简单的介绍一下这两个section相关的知识。从C语言的角度来看的话,.bss section是用来存放C语言中的全局变量的。而.cinit则用来存放全局变量的初始值。例如如果有下面的全局变量buf的话,
short buf[4] = { 0x01, 0x02, 0x03, 0x04};
那么buf放在.bss中,而初始值0x01, 0x02, 0x03, 0x04放在.cinit中。.cinit中储存的实际上是一个copy table,它对于每个需要初始化的全局变量,都有一个复制项与之对应,以55x系为例,上面的这段程序产生的复制项为:
00 04 00 12 34 00

本文探讨了在CCS的构建选项中,链接器的Run-Time Autoinitialization和Load-Time Initialization两种全局变量初始化方法。.bss Section存放全局变量,而.cinit存储初始值。Run-Time Autoinitialization在main函数前通过c_int00完成,而Load-Time Initialization在加载程序时即初始化全局变量,以节省RAM资源。对于没有Flash内存或使用serial boot的系统,Load-Time Initialization更为适用。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



