STM32_bootloader流程解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32 bootloader 流程解析
stm32在内部有硬件bootloader,但那是在生产烧录时使用的。
stm32在flash开头的4K程序空间是可以设置成防擦除的,是天生的bootloader存放区。
我的思想是在开头的4K空间(0x8000000-0x8000FFF)放置一个独立程序,主程序编译地址
放在0x8001000后端。
上电时,bootloader程序先判断是否满足升级条件(IO电平判断),然后选择是循环等待
升级,或者直接跳转到主程序区。
现给出流程如下,大家可交流探讨。
BOOT流程.JPG (11.13 KB)
boot程序流程
程序流程详细.JPG (35.79 KB)
程序详细流程
说的太过简单笼统了,
经过一个来星期的调试,总算完成了这个东西..
调试中发现一个问题,在已经开始执行BOOT程序之后,再进行切换到应用程序时,有些中断会出问题.
而在BOOT启动时(所有软硬件操作都没开始)马上切换到应用程序就不会出问题.
一直没找到怎么解决.
最后只好把IAP程序和应用程序合在一起使用,在上电后的短时间内执行IAP,无响应就进入应用程序,没有所谓的BOOT区了.
stm32在flash开头的4K程序空间是可以设置成防擦除的,是天生的bootloader存放区。我的思想是在开头的4K空间(0x8000000-0x8000FFF)放置一个独立程序,主程序编译地址放在0x8001000后端。
楼主所说的stm32在flash开头的4K程序空间是可以设置成防擦除的,如何设置?而且主程序编译地址放在0x8001000后端,如何实现啊,望指教!!!
我最近也在做类似的事情,但是在跳转到功能程序出问题了。功能程序应该如何设置?
如果一个程序不从默认的Flash地址开始存储,需要设置哪些东西,在Keil 开发环境中。谢谢!