基于python的jlink单片机自动化批量烧录工具
我写了一个基于python的jlink自动烧录器,自动检测jlink是否连接上指定mcu,连接上后自动烧录程序,烧录完成后等待断开,下一个mcu连接后继续自动烧录。
而且可以一台电脑连接多个jlink,通过运行多个脚本实现,一台电脑使用多个jlink批量烧录单片机
目前的话经过测试,上百次烧录是没有问题的。

代码在最后,相关仓库也在最后。
import pylink
import time
import os# ==================== 配置参数 ====================
MCU = 'STM32F407VE'
DOWNLOAD_FILE = 'E:\\other\\jlink_programing\\PWM.bin'
FLASH_START_ADDR = 0x08000000
POLL_INTERVAL = 2
COUNT_FILE = 'burn_count.txt'
JLINK_SERIAL = None
# ===================================================def auto_burn_mcu():jlink = pylink.JLink()burn_count = 0print("="*50)print("🚀 自动烧录程序启动(核心ID=-1视为未连接)")print(f"📌 配置:MCU={MCU} | 间隔={POLL_INTERVAL}秒 | 累计烧录:{burn_count}次")print("💡 操作:连接MCU→自动烧录→断开接线→等下一轮")print("="*50)try:while True:# 每次循环重置J-Link,避免前次异常残留if jlink.opened():jlink.close()jlink.open(serial_no=JLINK_SERIAL)jlink.set_tif(pylink.enums.JLinkInterfaces.SWD)try:print(f"\n⌛ 等待MCU连接...(累计:{burn_count}次)")connect_result = jlink.connect(MCU, verbose=False)core_id = jlink.core_id() if jlink.connected else "-1"# 关键判断:核心ID=-1 或 未连接 → 视为没接上,重新等待if core_id == -1 or not jlink.connected:print(f"⚠️ 未检测到有效MCU(核心ID:0x{core_id}),{POLL_INTERVAL}秒后重试")time.sleep(POLL_INTERVAL)continue# 走到这步=真正连接成功print(f"✅ 检测到MCU!核心ID:0x{core_id}")print(f"🚀 开始烧录文件...")# 烧录前确保CPU暂停,避免冲突jlink.halt()jlink.flash_file(DOWNLOAD_FILE, FLASH_START_ADDR)jlink.reset()jlink.power_on() # 正确启动程序# 计数更新burn_count += 1print("🎉 烧录成功!程序已运行")print("="*50)# 等待断开(读取核心ID,-1即视为断开)print("🔌 请断开MCU所有接线...")while True:try:current_id = jlink.core_id()if current_id == -1:print("✅ 已确认MCU断开!准备下一轮")print("="*50)breaktime.sleep(1)except pylink.JLinkException:# 读取失败也视为断开print("✅ 已确认MCU断开!准备下一轮")print("="*50)breakexcept pylink.JLinkException as e:print(f"⚠️ 连接异常:{str(e)[:30]}...,{POLL_INTERVAL}秒后重试")time.sleep(POLL_INTERVAL)except Exception as e:print(f"\n❌ 操作异常:{str(e)}")print("💡 排查:接线是否牢固 | MCU供电是否稳定")print("="*50)time.sleep(POLL_INTERVAL)except KeyboardInterrupt:print(f"\n\n🛑 程序终止")print(f"📊 本次烧录:{burn_count}次")finally:jlink.close()print("🔌 J-Link已断开,程序退出")if __name__ == "__main__":auto_burn_mcu()
仓库地址jlink-auto-flash-mcu: 一款基于 Python + JLink 的 **单片机自动化批量烧录工具**,支持「检测到单片机连接即自动烧录,断开后持续等待下一次连接」,无需手动触发,大幅提升批量生产/测试场景的效率。 使用前请先安装pylink库 pip install pylink
