STM新闻官 发表于 2024-12-4 14:27

STM32 IAP和Bootloader实战经验合集-2

本帖最后由 STM新闻官 于 2024-12-4 15:56 编辑

STM32F769的双bank Flash,可以在执行程序的同时对另一个bank进行擦除和编程的操作。利用这个特性,可以实现在线程序更新,双bank启动的功能。本文将结合笔者在实际应用中遇到的问题,针对性的介绍nDBOOT分别设置为0和1时,两种不同的启动方式。同时你也可以参考AN4826和STM32F7 Cube库中的例程来进一步加深理解。


在STM32 的系列产品中,很多型号都带有USB 接口,为使用USB 来进行代码升级提供了便利。这些型号中又有很大一部分可以通过内部System Memory 中的Bootloader 直接进行USB DFU 升级,具体哪些型号支持USB DFU,可参考应用笔记AN2606《STM32 微控制器系统存储器自举模式》。有些型号虽然有USB,但是System Memory 中的Bootloader 并没有支持USB DFU,比如STM32F102 / STM32F103、或者Bootloader V2.x 的。


客户计划使用STM32L011xx开发一款光模块产品,需要MCU支持I2C接口下载代码。但STM32L011xx内部Bootloader没有支持I2C接口,所以需要我们使用IAP的方式来帮助客户实现该功能。


问题:有客户想用我们的STM32 NUCLEO(如STM32F072NUCLEO) 开发板来测试串口Bootloader。


本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析。


部分STM32 是具有空片检测功能的,以便直接进入System Memory 中执行Bootloader,方便通过某些个外设来直接进行编程。比如STM32L011xx、STM32L021xx、STM32F04x和STM32F09x。有看过《STM32F091 空片使用System Bootloader下载代码》和《STM32L011x 和STM32L021x启动模式注意事项》的都知道这个功能。


针对客户在STM32L011D4P6应用开发过程中,碰到的启动模式问题进行了分析。并且根据问题,介绍开发工具、烧录工具中如何配置以避免影响。


某客户在其产品的设计中,使用了STM32F411。由于产品外观的要求,无法在外部对BOOT 脚进行控制,而且外观上只有USB 接口是留在外边的,需要使用USB DFU 进行升级。而且USB接口只用于代码升级,没有其他功能,所以客户不想去碰USB 代码,希望能够直接使用System Memory 中的Bootloader 进行代码升级。


伴随着固件升级需求的增加,STM32提供了灵活的升级方式。本文一步一步介绍如何利用USB DFU Class以及ST提供的DfuSe demo软件工具实现IAP(In Application Program)功能,但并不涉及到DFU class移植。


本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析。


STM32 IAP和Bootloader实战经验合集-3
页: [1]
查看完整版本: STM32 IAP和Bootloader实战经验合集-2