使用用户自定义的数组作为RT-Thread的动态内存堆
#define HEAP_BEGIN ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
//Image$$RW_IRAM1$$ZI$$Limit是一个链接器导出的符号,代表ZI段的结束,也就是程序执行区的RAM结束后的地址(执行区的RAM未使用的区域的起始地址)
使用以上宏定义时,编译代码下载到单片机后,程序运行卡死在rt_show_version()后;
通过日志打印发现,HEAP_BEGIN指向如下地址:
Heap_Begin:1fff8008
选中Keil Linker配置项"Use Memory Layout from Target Dialog",上述问题即解决。