JLink中文网站 > 最新资讯 > J-Link Commander脚本怎么编写 J-Link Commander批量烧写命令为什么不执行
J-Link Commander脚本怎么编写 J-Link Commander批量烧写命令为什么不执行
发布时间:2026/07/31 18:00:45

  把J-Link Commander从手动操作改成批量烧写后,比较容易遇到两类情况:一类是命令窗口已经打开,却停在设备、接口或探针选择位置;另一类是脚本很快结束,但芯片里的程序没有更新。围绕“J-Link Commander脚本怎么编写J-Link Commander批量烧写命令为什么不执行”,需要先分清命令文件和J-Link Script File,再把连接、擦除、下载、校验、退出以及返回值处理写完整。

  一、J-Link Commander脚本怎么编写

 

  J-Link Commander批处理通常使用普通命令文件,文件中的内容与Commander窗口里手动输入的命令一致,每行执行一条。文件扩展名可以使用.jlink或.txt。.JLinkScript主要用于处理特殊芯片连接、复位策略或外部存储器初始化,两者用途不同,不能混在一起使用。

 

  1、先准备J-Link命令文件

 

  以STM32F407VE通过SWD烧写BIN文件为例,新建program.jlink,内容可以这样写:

  ①使用纯文本编辑器创建文件,每一行只填写一条Commander命令,不要把Windows批处理语句写进来。

 

  ②BIN文件本身没有目标地址,执行loadfile时必须补充烧写起始地址;ELF、HEX或SREC通常已经带有地址信息,可以直接填写文件路径。

 

  ③r用于复位,h用于暂停,erase用于擦除目标Flash。工程不要求整片擦除时,可以删除erase,减少不必要的重复擦写。

 

  ④文件末尾保留exit。缺少这一行时,Commander执行完下载后还会继续等待输入,外层BAT也会一直停在当前进程。

 

  J-Link Commander会按照命令文件中的顺序逐行执行,每行放置一条Commander命令,loadfile可将指定数据文件下载到目标Flash。

 

  2、在BAT中指定设备和连接参数

 

  命令文件负责复位、擦除和下载,芯片型号、调试接口、速度及批处理选项,更适合放在BAT启动参数中:

  ①将JLink.exe、命令文件和日志文件改成电脑上的实际路径,所有带空格的路径都用英文双引号包住。

 

  ②-Device填写SEGGER设备列表中的准确芯片名称,-If选择SWD或JTAG,-Speed设置接口速度。

 

  ③-AutoConnect 1让程序自动连接目标,-ExitOnError 1在发生错误时结束,-NoGui 1用于减少批量运行时出现的交互窗口。

 

  ④执行结束后读取ERRORLEVEL,返回值为0时再按成功处理。批量烧写不能只看窗口有没有关闭。

 

  -CommandFile、-AutoConnect、-ExitOnError、-NoGui和-Log均可直接作为JLink.exe的启动参数使用,JLink.exe的执行结果也可以通过ERRORLEVEL读取。

 

  二、J-Link Commander批量烧写命令为什么不执行

 

  脚本看起来“没有执行”时,先不要急着修改Flash烧写命令。很多问题发生在真正下载之前,例如命令文件没有读到、程序正在等待选择设备,或者BAT启动方式导致流程提前跳过。

  1、命令文件路径或格式有问题

 

  ①在BAT末尾临时加入pause,再从【命令提示符】中运行脚本,观察程序具体停在哪条提示上。

 

  ②检查-CommandFile后面的路径是否真实存在,并尽量使用绝对路径。双击BAT时,当前工作目录可能与脚本所在目录不同,相对路径很容易失效。

 

  ③在Windows中进入【文件资源管理器】→【查看】→【显示】→【文件扩展名】,确认文件没有被保存成program.jlink.txt。

 

  ④清理中文引号、全角空格和不可见字符。命令文件建议保存为普通UTF-8或ANSI文本,命令名称使用英文半角字符。

 

  2、程序停在设备、接口或探针选择

 

  ①在BAT中完整设置-Device、-If和-Speed,不要让Commander启动后再逐项询问连接参数。

 

  ②同一台电脑连接多个J-Link时,增加-USB探针序列号,固定本次使用的探针。没有指定序列号时,程序可能停在探针选择窗口,后面的烧写命令自然不会继续执行。

 

  ③查看Commander启动信息中的目标电压。目标板没有供电、VTref为0V、GND没有共地,或者SWDIO、SWCLK接线错误时,脚本可以启动,却无法建立目标连接。

 

  ④连接不稳定时,把速度从4000降到1000、400或100,再检查复位线、芯片读保护和设备型号是否匹配。

 

  J-Link Commander可以通过-USB指定某一个探针,也可以提前设置设备、接口和速度,避免批处理过程停在交互选择阶段。

 

  3、烧写文件或地址填写错误

 

  ①烧写BIN文件时核对起始地址。地址填写错误后,可能直接下载失败,也可能把数据写进并非应用程序入口的区域。

 

  ②确认BAT调用的是本次构建生成的固件。输出目录中同时存在旧版BIN、HEX和ELF时,很容易因为文件名相近而选错。

 

  ③外部QSPI、OSPI或NOR Flash需要先完成控制器、引脚和存储器映射初始化。此类初始化通常由目标设备支持、Flash Loader或.JLinkScript处理,单纯增加一条loadfile无法解决外部存储器不可访问的问题。

 

  ④在命令行中单独启动J-Link Commander,手动执行同一组命令。手动模式也失败,问题通常位于目标连接、设备支持或Flash配置;手动能够成功而BAT失败,再回头检查路径、参数和调用方式。

 

  4、BAT调用方式让流程提前结束

 

  ①不需要新窗口时,直接使用"%JLINK%"参数调用。BAT会等待JLink.exe结束,随后才能读取正确返回值。

 

  ②必须使用start时,写成下面这种形式:

 

  start/wait"""%JLINK%"参数

 

  其中空双引号占用的是窗口标题位置,不能直接省略。

 

  ③多块板依次烧写时,每次执行结束后立即检查ERRORLEVEL。当前板已经失败时,应停止流程或进入明确的重试分支,不能继续输出“全部烧写完成”。

 

  三、如何让批量烧写脚本更稳定

 

  脚本能够运行只是基础,真正投入重复烧写后,还要解决日志覆盖、多探针混用和结果误判。把每次执行留下可追踪信息,后面碰到偶发失败时会好查很多。

 

  1、加入日志和结果校验

 

  ①使用-Log生成日志,并按照日期、工位或设备编号设置不同文件名,避免每次覆盖上一份记录。

 

  ②记录固件版本、文件大小、目标芯片、J-Link序列号和执行返回值。产线环境还可以在烧写后读取固定版本区或校验字段,确认写入的是指定版本。

 

  ③不要仅凭“Downloading file”判断成功,还要继续查看下载完成信息、校验结果和Commander退出状态。日志可以帮助区分连接失败、擦除失败、下载失败和校验失败。

 

  2、按层验证后再扩展批量流程

 

  ①先在Commander中逐行执行命令,确认硬件连接和固件文件能够正常烧写。

 

  ②再单独测试.jlink命令文件,确认它可以从第一行执行到exit。

 

  ③随后加入BAT参数、探针序列号、日志和返回值判断。

 

  ④单板流程稳定后,再增加循环烧写、扫码、序列号写入或工位联动。这样每增加一层都能单独定位,避免硬件问题、Commander命令和BAT逻辑混在一起排查。

  总结

 

  处理“J-Link Commander脚本怎么编写J-Link Commander批量烧写命令为什么不执行”时,需要把命令文件与BAT调用分开:前者负责目标复位、擦除、下载和退出,后者负责设备、接口、探针、日志及返回值。脚本没有继续执行,通常可以从路径、交互等待、目标连接、固件地址或BAT调用方式中找到原因。希望本文对大家整理J-Link自动烧写流程有所帮助,如需进一步了解相关软件与调试方案,可联系咨询。

135 2431 0251