查看手册可知DSP内部RAM的分配如下:
DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 Internal RAM */
SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */
SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */
所以在编写程序的时候,可以在cmd文件中将程序中的各个段(例如stack、.text、.bss、.data、.far、.switch、.const、.pinit、.cinit )配置在上面的RAM的任意区域,只要保证该区域有效即可。但是现在项目中却遇到这样的一个奇怪的问题,为了防止将所有段都放在一个RAM区导致RAM空间不足的问题,我将上面的几个段平均的分配给上面的三个段的RAM里面,实验证明,当程序较小的时候,程序确实可以正常运行,但是在实际工程中,随着程序量的增大,就会出现问题,现象如下:程序并没有奔溃,程序依然运行着,但是不正常,某些调用的函数根本就不执行了,一些中断服务函数也进不去了!除非把程序的所有的段都放在SHDSPL2RAM 里面,否则任何搭配都会导致程序运行不正常(注意,是不正常不是不能运行,也就是说某些功能实现不了)

