2026 / 07 / 22
瑞萨RA MCU如何从指定地址开始调试代码(一)之e2 studio篇

随着越来越多的设备要求支持OTA(Over The Air)代码升级,并行开发bootloader和application的需求也越来越多。这就要求在开发阶段,可以将application project地址进行偏移,跟最终的地址空间划分一致。

对于Arm芯片,要求起始地址0开始放置初始堆栈指针,复位向量表等必备内容,如下图所示(以RA2L1手册为例),所以如果0地址处为全FFh,则无法调试代码。


为应对这种需求,可以在IDE中重新指定MCU运行所需的地址偏移(上图中的Initial stack pointer和Initial program counter)。本次以e2 studio为例进行说明。


首先需要将linker script脚本文件进行修改,以memory_regions.ld文件为例,FLASH_START是代码进行编译时,基础的偏移地址,默认为0,根据要求修改为application的目标偏移地址,如0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000。


在Debug Configuration中,将如下的三行代码添加到Startup > Run Commands中。

set $sp = *0x4000

set $pc = *0x4004

set {int}0xe000ed08 = 0x00020000


关于这3行代码,意义依次解释如下:


点击下图中的调试按钮,在新界面中确认如下内容,RESET向量位于0x4C45处,上电后代码停在0x4C44处。


关于最后一个bit的差异,说明如下:

上电后CPU检查地址偏移为0x0004处的数据最低位,假如该位为1,则表明这是一个可用的thumb地址。之后会忽略该位(将其设定为0)并按照修改后的地址取首个指令作为复位句柄。更多细节请参考Arm处理器相关文档。

文件下载
隐私条款

一、接受条款 使用者(也称"您")在访问或使用本网站及其服务时,即已经表示同意并不加修改地接受本《用户协议》、本网站的《隐私声明》、《法律声明》以及其关或相链接的网页和网站的条件和条款的规定。我们强烈建议:在您阅读和接受本《用户协议》时,也应阅读并接受本《用户协议》中所提到《隐私声明》、《法律声明》及其相关或相链接网页或网站所包含的资料,因为《隐私声明》、《法律声明》及其它相关网页或网站可能包含对您适用的进一步规定。(请注意:点击划有底线的词句即可链接到上述《隐私声明》、《法律声明》及其它相关或相链接的网页和网站。

 

二、使用者的资格要求 在本网站中"使用者"指的是浏览、阅读、使用本网站信息或服务的任何个人或组织。本网站的服务仅适用于根据相关法律的规定具有签订有约束力的合同的个人或组织并仅由其使用。本网站的服务不向18周岁以下的个人使用者提供,也不向临时被本网站中止或取消使用者资格的使用者提供。如果使用者不符合本条规定,请停止使用本网站或本网站的服务。

样品
申请

应用
资源

微信