实现目标
客户有这样的需求:需要先修改STM32的选项字节(关闭DBANK,使用单bank模式),然后再通过STM32片上的ISP串口接口烧录代码,因为是提供给产线工人使用,所以希望 “一键操作” 来实现该功能。
需求分析
先分析需求,最省事儿,又可靠,还高效的方案就是选择一家烧录器厂商,购买他们的烧录器,就能搞定这件事儿,就是“费钱”。那么“小作坊”如何折腾呢?
事实上,ST提供了丰富的生态,可以助我们快速实现这个功能,使用STM32ProgrammerCLI.exe,自己写一个自动化的脚本就能轻松搞定这个了,让我们一起来实现吧。
实现步骤
刚好我手里有一块STM32G474的NUCLEO开发板,板载了STLink,并且有VCP(虚拟串口)功能,这样的话,硬件就是现成的,只要准备一根USB线和一个跳帽就可以了。
如何通过STM32ProgrammerCLI的串口命令连接STM32?
执行以下脚本内容即可:
:: Configure tools installation path
set stm32programmercli="C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe"
:: Configure the type of connection
set connect_uart=-c port=COM32 br=9600
:: Establish the connection
%stm32programmercli% %connect_uart%
注意,需要这里的串口号,需要插上开发板后,在设备管理器中查看,比如我这里是COM32,我上面的代码中也是COM32。特别要留意,如果连接多个STLink时,要注意别搞错了,还有就是串口波特率,根据线束长度调整,9600速率不高,但是比较稳定,该参数可以修改。
如何修改OptionByte(DBANK位)呢?
%stm32programmercli% %connect_uart% -ob DBANK=0
这样一条命令就可以将Flash 的双Bank配置为单Bank了,是不是很简单。
如何烧录STM32呢?
在硬件上,我们需要将BOOT pin上拉,然后按下复位键,使得STM32进入system boot模式
假设在脚本的同级目录下,有一个“build”文件夹,里面有升级文件:“G4_makefile.bin”,
我们可以这样来实现:
set "download_file=%~dp0/build/G4_makefile.bin"
%stm32programmercli% %connect_uart% -d %download_file% 0x08000000
搞定!,这样一个自动化烧录脚本的基本功能就实现了。
当然,你还可以优化脚本,比如加上升级失败时的处理,脚本执行出错时的异常机制等等。
操作:只需上拉BOOT引脚,按下复位键(产线上可以通过夹具实现),
双击执行脚本,我们就实现了串口修改OB,和STM32的烧录啦。
————————————————
版权声明:本文为CSDN博主「AlexXu_XXD」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xxd_8450343/article/details/151655708
|
|