通过拉高STM32U575的boot0脚进行串口固件升级 通过拉高STM32U575的boot0脚进行串口固件升级一.串口配置波特率115200数据位8检验位1校验方式偶校验EvenGPIO上拉二.通过stm32cubeprogrammer进行boot指令读取分析STM32CubeProgrammer通过拉高boot0进行UART升级固件因此想通过另一块芯片对STM32U575进行固件升级需要了解该软件发送了哪些指令。1.获取升级指令通过STM32_Programmer_CLI.exe来进行升级因为GUI界面打印的log信息太少用命令行的方式可以截取到完整的升级指令。可以通过电脑cmd指令进入到对应的./STM32CubeProgrammer/bin文件夹下。输入命令STM32_Programmer_CLI.exe -c portCOM41 br115200 -vb 3 -w D:\code\升级固件.bin 0x08000000 -v2.指令分析可以直接把打印的log丢给AI进行分析AI会直接解析整个文档生成解析指令。升级过程初始化同步与Bootloader建立同步 发送0x7F 返回0x79获取芯片ID确认目标芯片型号 发送0x02 0xFD(校验) 返回0x79 0x01 0x04 0x82 0x79擦除Flash擦除目标扇区 发送0x44 0xBB(校验) 返回0x79 发送00 03 00 00 00 01 00 02 00 03 03 返回0x79下载固件将固件二进制数据写入Flash 发送0x31 0xCE(校验) 返回0x79 发送 0x08 0x00 0x00 0x00 0x08(地址校验) 返回0x79 发送0xFF (长度-1) {256字节固件数据} {1字节校验} 返回0x79跳转运行跳转到0x0800000运行程序3.升级注意事项在调试过程中遇到几个踩坑的地方说明一下。获取芯片ID时返回的指令大于1个字节串口如果时阻塞读取的话需要一直监听串口数据不能耗时造成数据丢失擦书Flash时后续的指令第一个字节0x00不能省略会造成返回0x1F下载固件时最后一字节的校验 不仅时256字节固件数据还要加上长度0XFF的校验才是准确的如果升级指令正确会一直返回0x79。