在ram中调试stm32程序,方式有3个:
第一:在mdk开发环境中进入调试模式,通过载入一个初始化文件,内容如下:
/*----------------------------------------------------------------------------
Setup() configure PC & SP for RAM Debug
*----------------------------------------------------------------------------*/
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
LOAD %L INCREMENTAL // load the application
Setup(); // Setup for Running
第二:通过芯片内置的bootloader程序和相关烧写工具(mcuisp),烧写完成后bootloader程序自动跳转dao相关内存地址开始执行新程序。但是bootloader烧写算法本身会消耗一定数量deram,需要根据不同芯片做出处理,主要是code烧写和中断向量表必须加上固定大小的偏移。
第三:自己编写一个引导程序烧写到flash中,每次重启芯片后固定从0x8000000地址处开始执行,然后再跳转到ram中的程序代码处执行。
|
|