欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IAP

程序员文章站 2022-07-04 20:10:07
...

1.IAP流程(当不需要更新的时候)

1.上电后首先进入一个必须要进入的不可控的区

2.然后跳转到boot

3.然后跳转到cfg,查询状态是否更新(例如,常态是5555,但是查询到是5555,代表不需要更新程序)

4.跳回boot

5.跳转到APP,执行程序

IAP

2.IAP流程(当需要更新的时候)

APP程序运行中通过串口(中断)监测到更新程序的指令,首先改写cfg标志位,然后跳转到boot

IAP

boot查cfg,监测的需要更新程序,擦除flash,写入bin文件,cfg置位

3.伪代码

上电
进入boot程序
if( 查询标志位==没有程序 )
灯快速闪,表示等待发送程序
    上位机通过串口发送程序
    boot程序收到串口发过来的固件,擦写flash
    擦写完成
改写标志位:标志位=有程序
跳转到APP程序
        APP程序运行
             if 需要在线升级程序
                 app程序等待串口发命令或者数据
                 改写标志位:标志位=没有程序
                 跳转到boot
             endif
 endif
 elseif( 查询标志位==有程序 )
      直接跳转到APP程序
      APP程序运行
          if 需要在线升级程序
                 app程序等待串口发命令或者数据
                 改写标志位:标志位=没有程序
                 跳转到boot
          endif
 endif

4.服务器交互

IAP

5.APP生成bin

main函数中中断向量表指向应用程序

SCB->VTOR = (uint32_t)APPLICATION_ADDRESS;

fromelf.exe可以把.axf转.bin文件,在Run #1中写入fromelf路径(只需要--bin前需要改动)

IAP

6.103flash空间分配
//total             128K     0x08000000-----0x08020000         //20000-->131072-->128K
//bootloader   32K       0x08000000
//application  80K        0x08008000
//flag              1K         0x0801C000
//config          15K       0x0801C400   
注意:flash最小单位为1K字节,里面的驱动函数慎重修改

 

相关标签: stm32