Cortex-M3启动的特点,分享今天得到的教训
可能是别的体系结构看多了,想当然认为CM3也是默认从0x0000_0000启动,但今天自信看了map和lss文件,发现不是这么回事。按照ARM的介绍,系统reset后,硬件自动会把从地址0x0000_0000中取得的内容当然MSP(Main Stack Pointer)的值,把0x0000_0004取得的值赋给PC指针(最后一位要手动清零),所以0x0000_0004上放置的数值才是真正意义上的系统入口。
这就是今天一天的教训,希望对你们有帮助。 所以说先了解大概的理论再入手可以避免很多未知的错误. 莫非要写boot程序,直接做应用就可以了,遇到问题再去查阅 找库例程,自己重头来很麻烦的。 ARM的内核可以配置载入默认向量表的地址,如果芯片公司将这个默认地址固定为0x0000那么就是
从这个地方载入向量表,比如Atmel,向量表就放在0x80000000
spec说得很清楚,是从0004启动的。 第一次写M4的boot时候也遇到过这个问题 CM3比CM0灵活,中断向量表可以配置多个,对bootloader支持很灵活的。 确实如楼主所说。。。M3有点小例外 {:smile:},遇见 嗯,对我有帮助!谢谢分享~ 学习了!
页:
[1]