STM32基于ST-LINK的命令行结合Bootloader烧录程序

为了解决产品量产时工厂端批量烧录程序的问题,也为了防止出错,特地编写批处理脚本方便烧录程序,工人只需要点击运行批处理文件再结合Bootloader就能完成产品出厂程序的烧录工作;

项目情况:MCU型号STM32F469x,带片外QSPI Flash用来存储TouchGFX的图片资源文件;

工厂需要下载的文件有以下4个:

  • Bootloader 主程序:XXXX_BOOT_ST.bin   下载地址:0x08000000
  • Bootloader UI资源文件:XXXX_BOOTUI_ST.bin  下载地址:0x92000000
  • Application 主程序:XXXX_APP_ST.bin  下载地址:0x08020000
  • Application UI资源文件:XXXX_APPUI_ST.bin  下载地址:0x90000000

常规操作是使用STM32 ST-LINK Utility用户界面,需要一个文件一个文件的选择,设置下载地址,而且针对片外的QSPI Flash还需要使用专用的插件来下载,确实比较麻烦;

可以参考这个文章:【STM32 】通过ST-LINK utility 实现片外FLASH的烧写_u010351030的博客-CSDN博客 https://blog.csdn.net/u010351030/article/details/106384068/

我的解决方案是这样的:

1. 设计好自己的Bootloader, 支持U盘文件升级,可以更新主程序和两个UI资源文件,支持两种更新模式,a. EEPROM标记更新模式,b. 硬件按键强制更新模式;

2. 编写脚本将Bootloader烧写到Flash中;

@echo off
chcp 65001
set FileDir=D:\Project\XXXXProject\XXXX_boot\MDK-ARM\XXXX_boot\XXXX_boot.bin\
set FileName=XXXX_BOOT_ST.bin
cls
ST-LINK_CLI -c SWD -P %FileDir%%FileName% 0x08000000 -V -Rst -Run

3. 将其它3个文件夹拷贝到U盘中,通过硬件按钮强制进入更新模式,通过bootloader将U盘中的程序烧录到对应的Flash中去,完成程序烧录工作;

STM32 ST-LINK CLI v3.5.0.0
STM32 ST-LINK Command Line Interface

ST-LINK SN: 34FF6C063447313046162557
ST-LINK Firmware version: V2J35S7
Connected via SWD.
SWD Frequency = 4000K.
Target voltage = 3.2 V
Connection mode: Normal
Reset mode: Software reset
Device ID: 0x434
Device flash Size: 2048 Kbytes
Device family: STM32F469x/F479x

Loading file...
Flash Programming:
  File : D:\Project\XXXXProject\XXXX_boot\MDK-ARM\XXXX_boot\XXXX_boot.bin\XXXX_BOOT_ST.bin
  Address : 0x08000000
Memory programming...
 100%
Memory programmed in 1s and 360ms.
Verification...OK
Programming Complete.
Programmed memory Checksum: 0x00492D93

MCU Reset.

run application to exit
   

 

你可能感兴趣的:(ARM嵌入式学习,stm32,小程序)