github上的源码只有flash版本的,使用IAR烧写失败,使用MDK烧写运行也不正常,调试也调试不了,索性配置一个SDRAM版本。
1.拷贝\bsp\imxrt\Libraries\imxrt1050\devices\MIMXRT1052\iar\MIMXRT1052xxxxx_sdram.icf到工程目录;
2.编辑IAR配置里的Linker里的Linker configuration file修改Override default里的icf文件为$PROJ_DIR$\MIMXRT1052xxxxx_sdram.icf
3.用文本编辑器在icf里面添加:define exported symbol __RTT_HEAP_END = m_data3_end-__size_cstack__;
4.修改board.c下的rt_hw_board_init()函数,如下:
-- rt_kprintf("sdram heap, begin: 0x%p, end: 0x%p\n", SDRAM_BEGIN, SDRAM_END);
-- rt_system_heap_init((void *)SDRAM_BEGIN, (void *)SDRAM_END);
-- rt_memheap_init(&system_heap, "sram", (void *)HEAP_BEGIN, HEAP_SIZE);
++ rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
编译后仿真调试就可以了,如果编译出现SECTION(x)相关的错误,将rtdef.h下面的宏定义修改如下:
-- #define SECTION(x) @ x
++ #define SECTION(x) __attribute__((section(x)))
以后再慢慢深入研究。