智能车制作

标题: 关于上电流程的疑问 [打印本页]

作者: BlackFire531    时间: 2013-5-24 14:47
标题: 关于上电流程的疑问
最近想调试一下bootloader,在做准备工作的时候想到有了bootloader,application 程序就需要往后偏移一些,于是就在icf文件里,把数值偏移了4k(0x1000),修改如下(红色为修改的,数值增加了0x1000):
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00001000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00001000;
define symbol __ICFEDIT_region_ROM_end__   = 0x0003ffff;
define symbol __ICFEDIT_region_RAM_start__ = 0x1fff8000;
define symbol __ICFEDIT_region_RAM_end__   = 0x1fffffff;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x1000;
define symbol __ICFEDIT_size_heap__   = 0x2000;
/**** End of ICF editor section. ###ICF###*/


define symbol __region_RAM2_start__                 = 0x20000000;
define symbol __region_RAM2_end__                 = 0x20007fff;


define symbol __FlashConfig_start__                = 0x00001400;
define symbol __FlashConfig_end__                   = 0x0000140f;


使用仿真器先把芯片擦除,然后烧写代码进去,令人奇怪的是,编译完毕竟然可以直接运行。此时从memory窗口查看,地址0x0~0x1000全为0xff,这不是和M4核的原则"复位后处理器从地址0x0000_0000取值装载MSP的"冲突了么?我的0地址是空的,那么cpu是从哪里得到需要跳转的指针的呢?麻烦知道的各位告诉一声,先谢过了。


作者: BlackFire531    时间: 2013-5-27 09:36
求各位大神解惑,不胜感谢!
作者: BlackFire531    时间: 2013-5-28 15:31
原来是因为插着仿真器,所以才会自动定位代码位置。拔掉之后果然无法正常启动。




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2