最近准备用RT1052,开发板的大工程是RT-Thread。
用bootloader加载RTT的APP,出现如下异常。


--超过了0x20020000。越界了。。
如何修改???
SCF文件注掉
;RTT_HEAP +0 EMPTY RTT_HEAP_SIZE{} ;
还不行。

--RTT_HEAP是一个section在SCF文件中定义。

--本意是除了WR+RZ, ARM_LIB_HEAP, ARM_LIB_STACK,,充分利用DTCM中剩余所有空间。
RT-Thread记录(八、理解 RT-Thread 内存管理)_矜辰所致的博客-CSDN博客
这个博文倒是介绍了两种RTT的HEAP管理方法,但是问题还不知道如何解决。
--内存堆管理方式--具体还有3小种策略,但是用相同的API函数。
--内存池管理方式--独特的函数
ARM_LIB_HEAP +0 EMPTY Heap_Size{} ; Heap region growing up
ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size{} ; Stack region growing down
RTT_HEAP +0 EMPTY RTT_HEAP_SIZE{} ;
首先ARM_LIB_HEAP 与 RTT_HEAP为何并存,有啥区别?
猜想ARM_LIB_HEAP是给malloc函数用的,RTT有自己的独特函数
类似的FREE RTOS
FREERTOS 的pvPortMalloc 和
pvPortMalloc是从configTOTAL_HEAP_SIZE中申请内存,
malloc是直接从SRAM 堆 中申请内存,是和全局变量一个地位
总结:ARM_LIB_HEAP给传统C库文件malloc函数使用,RTT_HEAP给RTT独有的rt_malloc和rt_mp_alloc使用。