一、系统 bootLoader 基础知识
1、STM32 的系统存储区自带 bootloader,此程序是 ST 在芯片出厂时烧录进去的,主要用于将用户应 用程序下载到芯片内部 Flash。支持 USB,SPI,I2C,CAN,UART 等接口方式下载。如果大家的应用程 序打算采用这种接口方式进行升级,可以考虑采用系统 bootloader,简单易用,无需用户自己写 bootLoader 了。 更重要的是,使用系统 bootLoader 可以不依赖硬件 boot 引脚,可以直接从应用程序跳转到系统 bootLoader,这样灵活性就很大了。
2、STM32 进入系统 bootLoader 主要有两种方法,一种是设置 boot 引脚,另一种是应用程序直接跳 转到系统 bootLoader。
3、
4、系统存储器起始地址为0x1FFF0000,这种模式启动的程序功能是由芯片厂家设置的,STM32在出厂时会这个区域内置一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。我们要使用的DFU就是放在这里。
二、系统bootloader之USB DFU 方式固件升级(这里并不是指U盘切记!!!切记!!!)
1、DFU 的全称是 Device Firmware Upgrade,即设备固件升级;
2、这种升级方式需要用到专用的软件:STM32CubeProg 和 DfuSe;
3、当芯片工作在系统 bootLoader 的 USB DFU 模式,更新完毕程序后,不会自动退出 USB DFU,需 要重新复位芯片后才会退出。由于 DFU 模式会用到 USB 线,插拔 USB 线是难以避免的,所以是否 支持自动退出,并不影响。
三、系统 bootloader 之串口 IAP 固件升级(应该是ISP程序升级)
1、IAP 的全称是 In Application Programming,即在线应用编程。
2、串口 IAP 下载软件使用 STM32CubeProg,并且支持外部 EEPROM,NOR Flash,SPI Flash,NAND Flash 等烧写,也支持 OTA 编程。 使用系统 bootloader 做串口 IAP 升级时,MicroUSB 接口不要接线到电脑端,因为这会导致系统 bootloader 工作在 USB DFU 模式,无法再使用串口 IAP。
四、和自己目前BOOT+APP1+APP2程序升级的区别
1、自己的代码需要自己写BOOT程序,上面这两种方法都是使用的系统BOOT;
2、上面的两种方法需要用到专用的软件STM32CubeProg,自己研究的程序升级并不需要专用的软件;
3、上面两种方法升级完之后老的APP就会擦除,无法恢复老的代码;
4、由于正常的104、101程序升级需要正常的报文交互,如果采用系统BOOT程序升级的话,无法进行104、101报文交互,也就不满足咱们的需求;
五、OTA 在线升级
OTA:Over-the-Air Technology,字面意思理解为:空中下载技术。
OTA 在线升级:通过OTA的方式实现产品软件更新的一种方式。
所以,简单而言,通过外部的方式无线对产品进行更新,而不是用传统的编程器刷入固件的方式就可以称之为 OTA 在线升级。
严格意义上来讲,OTA 指的是空中下载,即只有通过无线的方式进行更新的才称之为 OTA 升级;而那种通过外部的接口接线来实现的更新,应该称之为本地升级。这两者还是有点区别的,只是一般我们都没有那么严格去区分罢了!
六、 IAP(In-Application Programming):在应用编程
IAP,全称“在应用中编程”,是一种嵌入式系统技术,允许用户程序在运行时通过微控制器的对外接口(如USART、IIC、CAN、USB、以太网接口甚至无线射频通道)对内部程序进行更新。这种技术无需中断设备的正常运行,大大提高了设备的可维护性和灵活性。目前流行的远程升级技术OTA技术(全称 Over The Air Technology,即云端下载技术,也叫做“空中下载技术”),其基础是 IAP 技术, 可以简单理解为 IAP 的另一种实现方式,采用的是无线升级方式
七、ISP和DFU程序升级
FLASH 的容量越来越大, ISP 的 USART 真的很慢了。Can 的效率也不是很高. USB 是个更好的替代方法。于是有了DFU模式。
DFU全称为Device Firmware update,是ST官方推出的一个通过USB接口进行IAP升级的方案,同串口ISP一样,他们都集成在了芯片内部的Bootloader区段,可以通过配置boot引脚来启动。不过内置DFU的芯片大部分型号都比较新,如果你用的型号没有内置DFU程序,没关系我们也可以通过CubeMX来快速生成和移植一个DFU功能程序到你的Flash中来使用。