本帖最后由 一代睡神的崛起 于 2018-11-2 12:52 编辑 随着电子产品日新月异的更迭换代,原代产品出货后发现其中有细微的bug在测试的时候没有注意到,于是在修复过程中需要通过bootload烧写Flash进行固件升级从而更新产品。很多人在IAP升级过程中只是一味盲目的拿着demo在一通copy和paste没有过多的在乎原理,即使成功了其中的原理也没有吃透。因此遂向大家征集,希望大佬们慷慨讲述。 到中午了,给大家画一下流程图吧。如下图,进行IAP升级得准备两个程序,一个Flash程序,一个用户APP程序。第一个项目程序不执行正常的功能操作,而只是通过某种通信方式接收程序或数据,执行对第二部分代码的更新;第二个代码才是真正的功能代码。上电后执行操作为:①检查是否对第二部分代码进行更新②如果不需要更新进行程序跳转正常执行③如果需要更新则进入APP程序。值得注意的是,第一个Flash程序需要通过直接烧录到MCU当中去,这个东西用过的人都知道。而第二个程序笔者公司的产品升级是通过生成DFU文件然后移交给手机APP修改bootload进行在线升级固件。至于如何生成DFU文件,这里我就不多讲了,大家百度去。最后附上DFU源码包。至于怎么跳转,用户可以设置条件,建议耗时短,APP程序里面也有官方也有,这里不多说了。最重要的是一定要明白Flash地址意义。 |
PWD13F60功率模块在应用时是否需要加额外的散热器
使用L476_NUCLEO板串口通信,波特率为什么到460800就收不到数据?目标为1382400
为什么Stm32F103驱动ov7670有严重的分屏现象。
签到
签到
STM32f407ZG使用STM32CubeMX创建USB应用失败
关于STM32的高精度定时器应用问题请求帮助
STM32L031X 1.65V 低压应用
L6470的应用问题,高速不转振动
MDK能否仿真App应用程序(STM32起始地址不为0x08000000)?
点评
AN2606,以及:
– AN3154: CAN protocol used in the STM32 bootloader
– AN3155: USART protocol used in the STM32 bootloader
– AN3156: USB DFU protocol used in the STM32 bootloader
– AN4221: I2C protocol used in the STM32 bootloader
– AN4286: SPI protocol used in the STM32 bootloader有你关心的所有信息。
根本的原理很简单:自举程序和用户代码肯定分别存放在程序的某个区域,其实自举程序都在芯片出厂的时候烧录好了,你所需要的就是做两件事:
1. 进入自举程序
2.按自举程序的命令格式发送数据
升级固件,说白了,就是写数据到flash中去,只是这种这数据的操作,和一般的写数据有那点不太一样而已。
点评
点评
点评
官方的代码是最好的教程
点评
点评
点评
点评
点评