USB论坛
直播中

吴湛

11年用户 968经验值
擅长:电源/新能源
私信 关注
[问答]

基于Cypress的kitprog或者miniprog等等烧录器,可以实现同时烧录吗?

基于Cypress的kitprog或者miniprog等等烧录器,可以实现同时烧录吗?Cypress有参考代码吗?

回帖(1)

程成

2025-6-9 18:10:56

是的,基于 Cypress/Infineon 的 KitProg 或 MiniProg 烧录器,可以实现同时对多个设备(通常通过多个烧录器)进行烧录。这种功能通常被称为 “并行烧录” (Parallel Programming)“批量烧录” (Batch Programming)


核心概念与实现方式:



  1. 本质: KitProg/MiniProg 本身是一个 单个设备 的烧录器/调试器。它一次只能连接并烧录一个目标板。

  2. 并行方式: 要实现同时烧录多个设备,需要:

    • 连接多个烧录器: 将多个 KitProg/MiniProg 烧录器连接到 PC (例如,通过 USB Hub)。

    • 管理工具: 使用支持管理多个烧录器实例并协调它们工作的上位机软件或脚本。

    • 目标板隔离: 每个烧录器必须连接到一个独立的待烧录目标板(芯片或 PCB)。



实现方法(如何做到):


主要依赖上位机的软件/工具:




  1. 厂商专用工具:



    • Cypress Programmer / Infineon Memtool / ModusToolbox Programming Tools: 这些 Infineon/Cypress 的官方工具都支持连接到多个 KitProg/MiniProg,并能同时烧录多个目标。通常需要在工具中选择不同的 KitProg 串口编号或序列号。用户界面允许选择多个烧录器并启动批量操作。

    • Segger J-Flash: Segger 的独立烧录工具功能强大。其 “Multi-Device” 版本 (需要额外付费购买许可证) 明确支持同时连接多个 J-Link 或兼容 KitProg (在 CMSIS-DAP/DAPLink 模式下) 进行并行烧录




  2. 脚本 + 命令行工具:



    • cybtcl / mtbprogram / psocprogrammercli:

      • Cypress 提供了命令行工具 (cybtcl, 旧版 PSoC Creator) 和 ModusToolbox 中的 psocprogrammercli

      • 你可以编写脚本 (如 Python, PowerShell, Bash) 去:

        • 调用系统命令枚举所有已连接的 KitProg(通过串口号或序列号识别)。

        • 启动多个进程 (multi-processing): 对于每个检测到的烧录器/目标板组合,并行启动一个独立的命令行烧录进程。

        • 每个进程调用 cybtclpsocprogrammercli,指定它连接的特定 KitProg 的端口和要烧录的固件,对单个目标进行烧录。

        • 主脚本监控所有子进程的状态,并汇总结果。



    • PyOCD: 一个流行的开源 Python 调试/烧录工具,支持 CMSIS-DAP/DAPLink (KitProg/MiniProg 通常兼容此模式)。

      • PyOCD 提供了 Python API 和命令行工具 (pyocd)。

      • 可以编写 Python 脚本,创建多个 pyocd.core.session.Sessionpyocd.flash.file_programmer.FileProgrammer 对象。

      • 每个对象绑定到一个特定的 KitProg(通过唯一ID或UID)。

      • 然后可以启动多线程 (threading) 或多进程 (multiprocessing) 来同时执行多个烧录任务。


    • OpenOCD: 另一个功能强大的开源调试/烧录工具,支持多种协议。

      • 配置相对复杂,但理论上可以为每个 KitProg 运行一个 openocd 守护进程实例。

      • 需要仔细管理每个实例的配置文件、端口和GDB端口。





关键考虑点:



  • USB 带宽: 使用高质量的 USB Hub (最好是带外置电源的 USB 3.0 Hub)。多个烧录器同时进行高速数据交换可能会使低端 Hub 或总线过载。

  • 烧录器模式:

    • 确保所有 KitProg/MiniProg 已更新到最新固件。

    • 通常使用 CMSIS-DAPDAPLink 模式最通用,兼容性最好 (PyOCD, OpenOCD, J-Flash Multi)。

    • KitProg 3 支持更多可选模式。


  • 烧录内容:

    • 如果所有目标板烧录相同的固件,操作最简单。

    • 如果需要烧录不同的固件,脚本需要为每个烧录任务分配正确的固件文件路径。这需要脚本逻辑或配置文件来管理对应关系。


  • 目标板识别: 脚本需要可靠地获取每个已连接 KitProg 的唯一标识符(串口号、序列号、位置ID)。

  • 错误处理: 健壮的脚本必须处理单个烧录失败而不影响其他任务,并能报告哪个设备失败。

  • Cypress/Infineon “参考代码”: 官方没有提供专门针对并行烧录的完整示例脚本作为标准发布内容。

    • 支持并行烧录的功能是内置于官方工具(如Infineon Memtool, ModusToolbox™ Programmer, Cypress Programmer)中的。

    • 命令行工具 (cybtcl, psocprogrammercli, mtbprogrammer) 本身是支持在脚本中调用的基础构件。 构建并行烧录系统所需的“参考代码”就是你编写的、用于协调多个命令行工具实例的脚本。

    • 官方文档会介绍这些命令行工具的用法(如何指定端口和烧录文件)。例如,搜索 “psocprogrammercli documentation” 或 “cybtcl manual”。

    • PyOCD 和 OpenOCD 的文档会提供其 API 和如何连接到特定设备的示例。

    • 第三方工具(如 J-Flash Multi)有自己的操作手册。



总结:



  1. 可以实现: 通过连接多个 KitProg/MiniProg 烧录器到 PC,并使用支持多设备管理的官方工具或编写脚本调用多个命令行工具实例/使用多线程库,完全可以实现同时对多个目标板进行烧录。

  2. “同时”指逻辑上的并行: 通过多进程/多线程技术,多个烧录过程在操作系统中并发执行。

  3. Cypress/Infineon 的“参考代码”: 官方没有提供封装好的并行烧录脚本。实现方法依赖于:

    • 使用支持多设备的内建功能的官方工具(Infineon Memtool, MTB Programmer, Cypress Programmer)。(最推荐)

    • 编写脚本 来运行多个 psocprogrammercli, pyocd, openocd 等命令行工具的进程/线程。(需要开发)

    • 使用商业工具(如Segger J-Flash Multi)。(省心但需授权)



推荐路径:



  • 追求简便性: 优先使用 Infineon MemtoolModusToolbox™ Programmer,它们通常自带图形化界面支持选择多个KitProg进行并行烧录。

  • 需要自动化集成:

    • 尝试用 psocprogrammercli 编写并行脚本。

    • 或者使用 PyOCD + Python 多线程/多进程脚本

    • 或者评估 J-Flash Multi (如果预算允许且需求明确)。



请根据你具体的工具链选择最合适的方案。理解基础原理后,可以根据选定的工具去查阅其API或命令行参数文档来具体实现并行烧录。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分