DSP

DM642 SDRAM的堆栈分析

2019-07-13 18:31发布

    最近项目开发,EVM开发板上的内存居然不够用了,那可是32MB的SDRAM啊.       在DSP/BIOS里面配置的是0x80000000, len = 0x02000000, 默认生成一个16M大小的heap,标识符为:_EXTERNALHEAP。 在   TSK配置里面,tskLoopback配置里面的栈配置:0x100000 = 1MB,够大吧。那SDRAM的堆栈结构式怎样的呢,还真没注意,   查看map文件,发现:     section             page     origin           length        --------               ----      ----------       ----------      .SDRAM$heap     0        80000000    01000000   .stack                 0        81000000    00100000   .tskLoopback$stk         0        81100000    00100000   .far       0        81200000    0008979c   .text       0        812897a0    0003ba20   .const     0        812c51c0    0001bd0c        .cinit     0        812e0ed0    0000735c       接下来的内容, 同样能解释内存布局:   GLOBAL SYMBOLS: SORTED BY Symbol Address    80000000   .data 80000000   PRD_A_TABBEG 80000000   PRD_A_TABEND 80000000   SDRAM$B 80000000   _SDRAM_base 80000000   ___data__ 80000000   ___edata__ 80000000   edata 81000000   GBL_stackbeg 81000000   _HWI_STKTOP 81000000   __stack 810ffff8   _HWI_STKBOTTOM 810fffff   GBL_stackend 81100000   tskLoopback$stack 811fff98   tskLoopback$stkptr 812800c0   _hist 812804c0   _lut ... ... 812f20cc   GBL_initdone   其中_EXTERNALHEAP占0x80000000后16M,系统栈和tskLoopback的栈各占1M, 接下来,.text等section,不超过2M, 在代码段后面, 还有的空闲的内存空间大约16 - 3 = 13M。将_EXTERNALHEAP增大即可。