当前位置: 首页 > news >正文

基于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

http://www.dtcms.com/a/585439.html

相关文章:

  • 从三路快排到内省排序:探索工业级排序算法的演进
  • CPP 学习笔记 语法总结
  • Qt 跨平台 2048 游戏开发完整教程 (含源码)
  • SortScope 排序算法可视化
  • 组件库引入
  • 手写Spring第25弹:Spring JdbcTemplate深度解析:数据操作如此简单
  • 《Python 小程序编写系列》(第一部):从零开始写一个猜数字游戏
  • 【完整源码+数据集】草莓数据集,yolov8草莓成熟度检测数据集 3207 张,草莓成熟度数据集,目标检测草莓识别算法系统实战教程
  • 英特尔网站开发框架视频教学互动网站建设
  • DeepSeek-OCR实战(01):基础运行环境搭建-RockyLinux
  • 测开学习DAY26
  • VBA经典应用69例应用9:读取工作表中个数不定的数据
  • 网站建设策划书5000字蚂蚁网站建设
  • 【Janet】比较运算符
  • 05 kafka 如何存储较大数据记录
  • 使用Unity ASE插件设置数值不会生效的问题
  • 【ZeroRange WebRTC】WebRTC 信令安全:实现原理与应用(深入指南)
  • 关于Flutter与Qt for python 的一些技术、开源、商用等问题
  • 国外免费建站网站不用下载设计师培训心得
  • 深入解析 LeetCode 1572:矩阵对角线元素的和 —— 从问题本质到高效实现
  • Android Input ANR分析
  • Dify 添加 Google cloud 模型供应商
  • 大语言模型提示词技巧总结
  • 高职无人机应用技术专业职业发展指南
  • 网站流量软件银行门户网站建设
  • MySQL的CASE WHEN函数介绍
  • 逻辑方程结构图语言的机器实现(草稿)
  • 计算机组成原理---中央处理器
  • 合肥建设学校官方网站网站栏目规划图
  • windows11配置wsl安装ubuntu20.04