某工程师在应用中需要使用STM32F765片上Bootloader对用户Flash进行升级,结果发现有小批量产品在将Boot0拉高并复位MCU后,DFU升级操作失败,PC也未识别到STM32 bootloader USB设备。
工程师很奇怪,STM32启动时BOOT0为高不就进入片上Bootloader?难道MCU system loader代码有问题?
调研
分析MCU VDD,NRST,BOOT0在上电时的波形,未发现异常。
读取Option Byte并和正常MCU对比,发现两片MCU的启动地址有差异:
分析
部分STM32系列通过BOOT0/BOOT1引脚(或Option Byte)设定MCU从System Memory(Bootloader)或SRAM,还是User Flash启动,但对于STM32F7xx系列的单片机, Option Byte中保存了两个地址,BOOT0决定了从两个地址中的哪个启动,这和其他部分STM32产品是有区别的。
处理
将两个启动地址改为默认值,将BOOT0拉高并上电,插入USB线,PC提示找到STM32 Bootloader usb设备,通过DFU升级成功。
文章评论(0条评论)
登录后参与讨论