不同 IDE 将部分代码放在 RAM 中运行

不同 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》

https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus

来源于 IDE 安装目录的参考文档

《MCUXpresso_IDE_User_Guide》

《EWARM_DevelopmentGuide.ENU》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论