2026 / 07 / 22
RA 产品如何从指定地址开始调试代码

Question

对于RA产品,如何从指定地址开始调试代码?


Answer:

假如代码是按照指定地址(不同于默认的0地址开始)进行link,则进行调试时,需要重新指定initial stack pointer地址,reset vector地址和Vector Table Offset Register的值,和当前地址匹配,才能进行调试。

下面分别对e2 studioKeil MDKIAR EW for Arm三种IDE进行说明。

 
e2 studio

1. 修改linker script file memory_regions.ld

FLASH_START从默认0修改为0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000


2. Debug Configuration设置

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

set $sp = *0x4000

set $pc = *0x4004

set {int}0xe000ed08 = 0x00004000


3. 调试验证

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

 

 
Keil MDK

1. 修改linker script file memory_regions.scat

FLASH_START从默认0修改为0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000

 

 


2. 
Debug Configuration设置


Keil设定中,首先修改Linker
 > R/O Base,设定为0x4000

 
将如下内容另存为一个*.ini文件(如app_0x4000.ini),放在Project目录下的script文件夹中。

 
FUNC void Setup (void)

{

    SP = _RDWORD(0x00004000);           // Setup Stack Pointer

    PC = _RDWORD(0x00004004);           // Setup Program Counter

    _WDWORD(0xE000ED08, 0x00004000);    // Setup Vector Table Offset Register

}

 
LOAD Objects\RA4M2_TE_app.axf INCREMENTAL    // Download

Setup();                                     // Setup for Running

 
在下图中指向该*.ini文件。

 

 
3. 调试验证

调试效果如下图所示,代码在跳到main()函数时,地址在0x4000+处。

 

 
IAR EW for ARM

1. 修改linker script file memory_regions.icf

FLASH_START从默认0修改为0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000

 


2. Debug Configuration设置

修改Debugger > Extra Options中的设定,如下图所示。


3. 调试验证

代码调试效果如下图所示,跳到main()函数时,地址在0x4000+处。

隐私条款

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

 

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

样品
申请

应用
资源

微信