不同 IDE 将部分代码放在 RAM 中运行
我们在开发过程中往往会遇到需要将某部分代码放到 RAM里面去执行的情况,Keil 网上有很多资料介绍,本篇文章就只介绍 MCUXPresso 和 IAR 两个 IDE 下将代码放到 RAM 的方式。
本文使用的硬件平台:IMXRT1020-EVKB ,软件版本:SDK2.12.1
一、MCUXPresso IDE
导出一个 iled_blinky 工程,由于 MCUXPresso 下的分散加载文件——.ld 文件是由IDE 自动生成的,我们需要先将这个取消掉,才能对其进行更改:
在 debug 文件夹下找到该工程的 .ld 文件:
实际上它是由三个文件组成最终的分散加载文件,我们主要看 evkmimxrt1020_iled_blinky_Debug_memory.ld 和 evkmimxrt1020_iled_blinky_Debug.ld ,前者是定义了内存区域,包括 flash 和 RAM,后续如果有新的内存划分则可以在这个文件添加和修改。
我们主要需要修改的是 evkmimxrt1020_iled_blinky_Debug.ld 文件,找到 MAIN TEXT SECTION 部分
做以下修改和添加:
编译查看 map 文件,可以看到函数的执行地址已经在 ITCM 的地址范围里了:
进调试在 GPIO 的函数里打断点,可以看到窗口显示该函数执行地址,也在 ITCM 里面:
那么如何添加两个文件的呢?其实也是一样,在刚才的步骤中加上就可以,如下图所示:
二、IAR IDE
同样地,使用 MCUXPresso Config Tools导出一个 IAR 的工程,打开后需要做一些配置。
选择 XIP 和主芯片:
选择分散加载文件,点击 OK 后打开分散加载文件:
做以下修改:
查看 map 文件:
进调试查看:
到此两个 IDE 下将代码放在 RAM 中的方式就介绍完毕了。
参考资料:
《IMXRT1020RM》
来源于 IDE 安装目录的参考文档
《MCUXpresso_IDE_User_Guide》
《EWARM_DevelopmentGuide.ENU》
评论