boot升级流程及注意点

1、升级流程

【1】编写bootloader和app两个工程

boot升级流程及注意点_第1张图片

 【2】根据对应芯片flash大小分配内存空间,最小以扇区为单位,0x20000对应128K。假如booloader和app各占128K,则keil中对应如下图

boot升级流程及注意点_第2张图片

 【3】flash必须先擦除(可以打印出来看是否擦除成功),后写入(同样可检查是否写入成功,可将写入的字节和从keil中下进去的bin分别打印出来看是否一一对应,我就是在写的时候,每四个字节大小端相反,导致最终跳不到app里,尴尬~)。

【4】写入成功之后就可以跳转app了,此时跳转的地址必须是app里设置的起始地址,比如上图的0x8020000。

【5】在app代码的main函数首行先偏移下SP指针,否则程序会死机。

【6】SP指针指向只要有完整的代码,就可以运行,例如虽然跳转的是0x8020000,但是如果app内SP指向是0x8060000且flash中的0x8060000开始有完整的代码,那么也是能够正常运行的。反之,虽然跳转的是0x8060000,但是如果app内SP指向是0x8020000且flash中的0x8020000开始有完整的代码,那么也是能够正常运行的.

严格按照上述几点应该会没啥问题,有问题了可以在评论区讨论哦~

你可能感兴趣的:(单片机)