更改 cortex-m3 启动地址并调试
By Cerman
开发流程:
1. 在目标选项卡中选择 flash 烧写区域,如图 1 所示。Stm32f103zet6 的 flash 空
间有 512k,这里从 flash 的最后一个页进行烧写,起始地址为 0x08010000,剩余
空间大小为 0x70000。
图 1 目标选项卡选项
2. 在输出选项卡中注意生成的可执行文件名及其路径,这里工程名为 text3,如图
2 所示。生成文件位置供后续脚本文件制作使用。
1
图 2 输出选项卡选项
3. 在调试选项卡下去掉 Load Application at Startup 选项,在 Initialization File 中
选择制作的脚本文件(见附录),.\表示文件与工程存储在同一路径下。如图
3 所示。
图 3 调试选项卡选项
2
4.在功能选项卡中勾掉 Update Target before Debugging,如图 4 所示。
图 4 功能选项卡选项
5.在 Settings->Flash Download 界面编辑编程算法,改变地址范围到期望值,
如图 5 所示。
图 5 下载选项卡选项
3
6.点击 Debug 按钮进行程序的下载和调试,如图 6 所示。在调试界面的 restart
按钮不可用,若要复位可重新进入调试界面。效果如图 7 所示,这样就可以改
变程序的烧写地址并调试了!
图 6 菜单栏相关按钮
图 7 修改地址后的调试界面
4
附录:
boot.ini 文件,用记事本编辑并放在工程文件中的任意位置即可:
FUNC void Setup (void)
{
SP = _RDWORD(0x08010000);
PC = _RDWORD(0x08010004);
_WDWORD(0xE000ED08, 0x08010000);
}
LOAD ..\text3.axf INCREMENTAL //非常重要!
//在开发流程的第二步中查看到输出文件
//并根据该文件的路径索引到 axf 文件,该例中的 text3.axf 在上一层目录中
// 堆栈指针
// PC
// 中断向量偏移地址
Setup();
g, main
//跳转到 main
5