大家好,请教个问题,就是我使用rt_thread stduio软件开发的使用GD32F470VGT6单片机,内存设置不能超过448KB, 如果设置超过了,就启动不了,打印错误信息如下:
而这个单片机是有512KB内存的,为什么用不了呢,我在board.h 文件 #define GD32_SRAM_SIZE 512
修改这个值的。
在link.ld文件如下设置:
在link_sct文件 如下设置:
🙂感谢@道友 回复。
最近研究了下GD32F470芯片手册,发现标称的内存512KB, 其实是连TCMSRAM一起算的,即TCMSRAM+SRAM0+SRAM1+SRAM2+ADDSRAM = 512KB, 其中SRAM0 - ADDSRAM 这段内存地址是连续的,从地址0x20000000开始。而TCMSRAM地址却是从0x10000000 - 0x1000FFFF, 即64KB。如下图:
所以第一个连续内存只能写448KB。GD32F450芯片也是有类似同上的分存分布。相当于存在两个内存堆了,目前使用RT-thread 提供的memheap 多内存堆使用方法,在 broad.c文件手动加上TCMSRAM初始化,经测试可以正常使用。
部分代码如下:
测试函数:
测试效果图: