MCU_segger-JLINK批处理脚本烧录工具-JFlash

关于JLINK升级烧录

使用ARM内核的MCU或者SOC都可以通过JLINK的工具来进行烧录,JLINK提供了命令行和图形界面烧录的方式,一般调用jlink的jflash.exe(图形)和jlink.exe(命令行)。无论我们使用哪一种操作方式,如果从头操作烧录将会是极其麻烦,每烧录一块都需要重头设置,所以才会想引用批处理来处理,这次我们就来说一下如何调用jflash来实现批处理量产脚本。

脚本指令

// jlink自动烧录脚本
@echo off
set n=1
:loop
JFlash.exe -openSTM32.jflash -connect -openXXX.bin -erasechip -programverify -startapplication -jflashloglog.log -exit

set a=

@echo off %find "Target programmed and verified successfully" jlink.log%
if %errorlevel% equ 0 (
set /a n=%n%+1
set /p a=succeed:%n%
) else (
find "ERROR" jlink.log
 set /p a = failed!!
)
if "%a%"=="" goto loop

指令解释

@echo off: 这一行指令信息不打印
set n=1: 定义变量n,记录烧录成功的次数
:loop goto loop:goto语句,和C语言同样的作用,goto 跳转到loop后往后执行。

J-Flahs指令解释和查找

JFlash.exe 的指令我们可以再help中选择j-flash user guide或者直接按F1查看帮助文档。
打开帮助文档
打开帮助文档,我们可以查看jflash支持哪些指令(这里信息很关键)如下:
Command line options
找到文件的Command line options中可以找到支持的指令。
-openSTM32.jflash :打开jflash文件
-connect :连接目标
-openXXX.bin :打开需要烧录的文件,如果是hex\s19
-erasechip :擦除芯片
-programverify :编译和确认
-startapplication :启动程序
-jflashloglog.log :将烧录的log保存在log.log文件中。(文件名和后缀随便取)
-exit:退出烧录
PS:保存log这个是比较有用的,我也是查了好久才从帮助文档发现的。

指令解释

set a= 设置一个打印信息的变量

@echo off %find “Target programmed and verified successfully” jlink.log%:通过find命令检索Target programmed and verified successfully判断烧录是否成功,加上@echo off 是不希望将检索信息打印在终端

if %errorlevel% equ 0 (
set /a n=%n%+1
set /p a=succeed:%n%
) else (
find “ERROR” jlink.log
set /p a = failed!!
)
检索结果保存在errorlevel,如果存在检索内容,则为0,否则再进行检索“ERROR”内容,这次就需要将检索内容打印出来,然后提示失败。
上面我们用到了set /a和set /p,set /a 就相当于数字计算,而set /p是终端输出打印,需要等待键盘输入。具体解释可以看下百度: link.
所以我们就利用set /p的特性,在终端提示后等待键盘键入(保存在a中),进行判断是否为回车if “%a%”=="" goto loop。等键入回车以后,通过goto又重回loop运行。

总结

主要的难点就是运行J-Flash的命令,需要通过帮助文档去查找。保存烧录过程中的log信息,在通过find命令检查对应内容来判断烧录结果,最后goto回loop点开始继续循环运行。

### 使用 J-Link 命令行工具进行程序烧录 #### 准备工作 为了使用 J-Link 命令行工具 `JLink.exe` 进行程序烧录,需先确认已安装并配置好 J-Link 调试环境。此工具由 SEGGER 提供,适用于多种平台和处理器[^2]。 #### 创建批处理文件 创建一个 `.bat` 文件来简化命令行操作过程。该文件将调用 `JLink.exe` 并传递必要的参数完成目标设备上的固件更新任务。对于 STM32F103 系列微控制器而言,可以参考开源项目中的示例脚本来构建自己的烧写脚本[^3]。 下面是一个简单的 Windows 批处理 (.bat) 文件例子: ```batch @echo off set PATH=C:\Path\To\SEGGER;%PATH% JLink.exe -if swd -device STM32F103C8Tx -speed auto -CommanderScript flash.jlink pause ``` 其中 `-if swd` 表明采用串行线调试(SWD),而 `-device` 后面跟的是具体的 MCU 型号;`flash.jlink` 则是指向包含实际编程指令的脚本文件路径。 #### 编辑 J-Link Script 文件 接下来编辑名为 `flash.jlink` 的脚本文件,其内容如下所示: ```jlink h loadfile firmware.hex r g q ``` 这里每条命令的作用分别是: - `h`: 复位目标板。 - `loadfile firmware.hex`: 将指定格式(如 HEX 或 BIN)的目标文件加载到内存中准备刷入。 - `r`: 重启 CPU。 - `g`: 开始运行应用程序。 - `q`: 结束会话退出 J-Link 应用程序。 以上设置完成后即可双击 .bat 文件启动整个烧录流程,在终端窗口观察进度直至结束提示出现为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_38042083

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值