Image
Image

发给她更好fh

+ 关注

粉丝 1     |     主题 43     |     回帖 563

STM32F4单片机bootloader及在线升级IAP基本原理
2025-3-10 21:33
  • ST MCU
  • 87
  • 6051
  偏移设置原位置在启动文件中对应的系统初始化void SystemInit(void)中,因此在每一份程序的main函数要要增 ...  
  ......  
  APP中升级处理 讲APP中升级处理前,先将一下APP区代码的结构,如下所示,不同分区中每一份代码都要包含三部 ...  
  这个增加了一个按键选择功能,帮助测试APP1和APP2区代码的跳转。  
  源码: #include #include "stm32_flash.h" #include "App_Init.h" int main(void) { GPIO_InitTypeD ...  
  ......  
  BootLoader2的方案也很简单根据跳转标志跳转至APP1还是APP2,否则停留在当前BootLoader2中,同时进行将相对 ...  
  源码如下: int main(void) { while(1) { if(((*(vu32*)(0x08008000+4))&0xFF000000)==0x08000000)/ ...  
  ......  
  BootLoader设计 然后是BootLoader设计,BootLoader1的功能就是引导跳转至BootLoader2区,跳过flag区。 ...  
  升级方案设计 升级方案如下图所示  
  目前标志位存两个变量,一个是用于跳转的flag当值为0x11时BootLoader2引导跳转至APP1区,当值为0x22时跳转 ...  
  标志位区内容、  
  BootLoader2占空扇区2-4,大小96k。sector5-7存储APP1,sector8-10存储APP2.最后sector11预留使用。 ...  
  首先需要根据flash的情况进行分区确定每个扇区的功能,这次采用双BootLoader的设置,使用BootLoader1跳过se ...  
  flash分区  
  iap升级实例 这里以我测试用的双区模式为例,使用一个标志位进行APP1和APP2区域的切换。只讲基本过程,具体 ...  
  第一种比较好实现,缺点就是每次升级都需要做一次代码的对调。第二种比较难以实现,因为flash中中断向量表 ...  
  双区模式,代码备份功能具备,当然对应的对于小容量产品就显的比较占用空间。双区模式又根据APP区的用法分 ...  
  自定义bootloader+app1+app2、  
2
3
近期访客