• 请不要在回答技术问题时复制粘贴 AI 生成的内容
CoffeeTea
V2EX  ›  程序员

写了个支持脚本化的 J-Link RTT 命令行工具(rttsh), AI 在板调试、批量脚本验证、数据导出、CI ...

  •  
  •   CoffeeTea ·
    z3oya · 2 days ago · 1193 views

    正文

    各位好,写了个工具分享给大家,也顺便收集反馈。

    背景是我自己做固件时的老问题:代码写完,烧进板子,开串口终端,敲几个命令,看看输出对不对,或者复制贴给 AI 。单次一两分钟,但改一处就要来一遍,回归全靠记忆,经常漏。想放 CI 里,又会遇到:

    • UART 往往被业务日志占用,或者根本没引出;
    • 串口在 CI 里不好枚举,多板并行更麻烦;
    • 烧录要另一个工具,和验证流程对不上。

    后来发现我这场景下 RTT 很合适:SEGGER J-Link 的 RTT 走调试探针,不占外设。但是 RTT-Viewer 不咋好用,缺的是一个顺手的命令行封装,于是写了 rttsh (当然是鞭打 AI )。

    它是什么

    一个 Windows 命令行工具(.NET ,依赖 JLink DLL ),核心能力三块:

    1. 提供 TUI 交互式 RTT 终端;
    2. 发送一行命令并等待应答:rttsh send "led r on" --chip STM32H743XI --wait 300;
    3. Lua 脚本验证,send / expect / 断言输出和时序
    rtt.send("led g toggle")
    rtt.expect("LED g toggled", 500)
    

    烧录/擦除也在支持:rttsh flash download xxx.hex。这样 CI 里"编译 → 烧录 → 脚本验证"一条流水线搞定。

    MCP

    固件借 RTT 控制台暴露命令,主机侧能收发文本,那 AI 编码代理其实也能用。所以做了 rttsh mcp,八个工具( connect / send / expect / mem_read 等),Claude Code 或 Cursor 配上之后,可以自己烧录、自己敲命令、自己看板子的真实应答来验证它写的固件。我自己的体验是,AI 说"这个功能没问题"和板子说"没问题"是两回事,现在可以让板子说了算。

    仓库里有一个示例工程和 23 个针对的 Lua 测试脚本可以参考。

    目前局限

    • 目前仅支持 Windows (依赖 JLink_x64.dll ),Linux 在计划中;
    • 只支持 J-Link 系列探针,DAP-Link / ST-Link 不行(未来通过引入 probe-rs 实现更多支持);

    地址:https://github.com/z3oya/rttsh

    review

    欢迎拍砖,有问必回。

    7 replies  •  2026-09-28 17:20:38 +08:00
    RayLin
        1
    RayLin  
       2 days ago via Android
    不错,这个站上面搞嵌入式的不多。
    baiorlong1
        2
    baiorlong1  
       2 days ago
    感谢感谢
    tuduweb
        3
    tuduweb  
       1 day ago
    感谢感谢
    sskycn
        4
    sskycn  
       1 day ago via Android
    终于见到一个搞嵌入式的了,不容易啊。
    muooOOO
        5
    muooOOO  
       14h 47m ago
    感谢分享这么实用的工具
    之前用 mdk 的命令行和 j-link rtt client 这一套配合 agent 凑合着用。
    提个小建议:
    某些情况下 RTT 缓冲区的地址无法被正常搜索到,需要在启动的时传递进去。
    希望能有重启芯片的命令,这在测试 flash 存储的时候会很有用。
    CoffeeTea
        6
    CoffeeTea  
    OP
       14h 5m ago
    @muooOOO 感谢回复,这个功能有的。可以通过指定--elf 参数,会去自动解析到.bss._SEGGER_RTT 的地址;也可以通过 --rtt_addr 0x2000_0000 手动指定;
    CoffeeTea
        7
    CoffeeTea  
    OP
       13h 48m ago
    @muooOOO 刚刚问题没看全。重启芯片也有的,可以通过指定--reset/--no-reset 参数实现;欢迎尝试!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1076 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:09 · PVG 07:09 · LAX 16:09 · JFK 19:09
    ♥ Do have faith in what you're doing.