环境:CCS 6.2.0编译器,TMS320C5515 EVM开发板
问题:
1, 在SARAM中定义一个64K的数组的话,实际占用RAM空间为128K,能不能通过设置DSP处理器的RAM单字节对其???即64K数组占用64KRAM。
2.在源文件中定义大数组时会出现要求".stack" 和and ".sysstack"必须在同一页的错误,怎样解决这个问题?? 修改cmd文件吗? 下面是错误的详细描述。
当在在源文件中定义
// 全局数组,SPACE_SIZE = 80K Uint8 heap0_base[SPACE_SIZE ];
当SPACE_SIZE = 80K时会出现链接错误如下图:
编译出的map 文件中关于".stack" 和and ".sysstack"的描述如下左图,如果将数组的大小由80K改为64K,编译能正常通过,map文件如下右图。
其中;
// CMD 文件的定义如下:
MEMORY
{
PAGE 0: /* ---- Unified Program/Data Address Space ---- */
MMR (RW) : origin = 0000000h length = 0000C0h /* MMRs */
VEC (RX) : origin = 00000C0h length = 000300h /* on-chip ROM vectors */
DARAM (RW) : origin = 0000400h length = 00FBFFh /* on-chip DARAM */
SARAM (RW) : origin = 0010000h length = 03FFFFh /* on-chip SARAM */
PAGE 2: /* -------- 64K-word I/O Address Space -------- */
IOPORT (RWI) : origin = 0x000000, length = 0x020000
}
SECTIONS
{
vectors(NOLOAD)
vector : > VEC ALIGN = 256 /* Interrupt vectors */
.text : > DARAM /*ALIGN = 4 /* Code */
.cinit : > SARAM /* Auto-initialization tables */
.const : > SARAM /* Constant data */
.switch : > SARAM /* Switch statement tables */
.data : > SARAM /* Initialized vars */
.cio : > SARAM /* C I/O buffers */
.stack : > SARAM /*ALIGN = 4 /* Primary system stack */
.sysstack : > SARAM /*ALIGN = 4 /* Secondary system stack */
.bss : > SARAM /*fill = 0*/ /* Global & static vars */
.sysmem : > SARAM /* Dynamic memory(malloc) */
.ioport : > IOPORT PAGE 2 /* Global & static ioport vars */
}


