MDK 调试默认加载的是MCU的首地址,当APP地址不一样时初始化跳转会失败。
MDK提供了调试时初始化脚本函数,通过配置脚本可以达成自动跳转的目的
脚本语法位于help文件 uVision User‘s Guide/Debugging/Debug Scripting目录下

通过设置Debug选项来调用脚本

脚本示例:
FUNC void Setup (void) {
SP= _RDWORD(0x08000000 + 0x4000);
PC= _RDWORD(0x08000000 + 0x4004);
}
Setup();
0x0800_4000 是APP的起始地址,0x0800_4004 是SP的地址
The _RDWORD debugger function reads the unsigned long integer value at address.
进入调试模式后不运行,查看SP和PC的值和flash的值时一致的代表脚本无误

PC的值最后一位与thumb模式有关
本文介绍了如何使用MDK的调试脚本功能解决APP地址不匹配导致的初始化跳转失败问题。通过编写特定的脚本,设置SP和PC的值为APP的起始地址,确保在调试模式下正确执行。调试时,检查SP和PC的值是否与Flash中的值一致,以验证脚本是否正确。此方法适用于MCU的调试优化,确保程序能够从正确的地址开始执行。
4809

被折叠的 条评论
为什么被折叠?



