工具/软件:Code Composer Studio
我的硬件使用连接到外部 SDRAM 的 F28377D。 SDRAM 的一切工作正常。 我可以复制并处理大量数据。
代码还会为某些任务在堆上动态分配内存。 当堆在内部存储器的链接器中定义时、这可以正常工作:
RAMGS5:origin = 0x011000,length = 0x001000
.esysmem:>RAMGS5 PAGE = 1.
现在的问题是、我需要分配比0x1000字大得多的存储空间。 内部 RAM 中没有更多资源、因此我需要使用外部 SDRAM 来存储堆。 我更改了链接器文件以包含以下行:
EMIF1_CS0nA:origin = 0x8000000,length = 0x200000 //连接到 EMIF1 CS0的8MB SDRAM 芯片(低4MB)
EMIF1_CS0nB:origin = 0x80200000、length = 0x200000 //连接到 EMIF1 CS0的8MB SDRAM 芯片(高4 MB)
.esysmem:> EMIF1_CS0nB PAGE = 1//用于分配
即使我在链接器设置中将堆大小保留在0x1000、每次我调用 malloc 时、它都会返回 NULL。 请注意、我没有使用任何 RTOS。
是否缺少其他一些链接器设置?