iar调试器比MDK的调试器厉害一点,可以直接指定PC运行,而MDK的调试始终是ARM复位的那个地址开始的.
这就造成一个很麻烦的问题,在MDK里面调试带BOOT的程序很简单,都是从复位地址开始运行,所以会经过BOOT的这段程序,但是,IAR就不会,而是直接跳到了后面的程序的运行,
错过了初始化的机会,不利于分块设计,所以这里必须用到调试脚本.
关于C-SPY调试的脚本的编写,网上介绍的不多.所以写起来就比较麻烦,
这里是一个拥有K70的脚本.
execUserSetup()
{
__message "execUserSetup() called.\n";
}
Access()
{
__message "Access() called.\n";
}
__var x1;
execUserReset()
{
__message "execUserReset\n";
x1 = __readMemory32(0x4,"Memory");
#SP = __readMemory32(0x0,"Memory");
#PC = x1;
__message "x1 = 0x", x1:%X,"\n";
__message "execUserReset Finish\n";
}
execUserPreload(){
__message "execUserPreload\n";
__message "execUserPreload Finish\n";
}
编写的依据来源于文档.
EWARM_DebuggingGuide.ENU.pdf