这个工具用于将JLink的RTT(Real-Time Transfer)数据转发到UDP端口,方便其他应用程序接收和处理RTT数据。
- 通过PyLink连接JLink设备
- 读取RTT数据并转发到指定的UDP端口
- 可配置的设备类型、RTT缓冲区和UDP目标地址
- 图形用户界面(GUI)和命令行界面
- 支持多种调试接口(SWD/JTAG)和速度设置
- Python 3.6+
- JLink软件包和驱动程序
- Windows/Linux/macOS
在使用前,请确保安装了所需的Python依赖:
# 使用requirements.txt安装所有依赖
pip install -r requirements.txt
# 或者单独安装
pip install pylink-square>=0.14.2
同时,确保已安装JLink软件包,并且JLink驱动程序已正确安装。
在 config.json
文件中可以修改以下配置,或通过GUI界面进行配置:
target_device
: 目标设备类型(例如"STM32F407VE")debug_interface
: 调试接口,可选"SWD"或"JTAG"debug_speed
: 调试速度,可选"auto"、"adaptive"或具体数值(kHz)rtt_ctrl_block_addr
: RTT控制块地址,0表示自动搜索rtt_buffer_index
: RTT缓冲区索引(通常为0)rtt_search_start
: 搜索起始地址rtt_search_length
: 搜索长度rtt_search_step
: 搜索步长polling_interval
: 轮询间隔(秒)udp_ip
: UDP目标IP地址udp_port
: UDP目标端口local_port
: 本地端口,0表示自动分配debug
: 是否启用调试输出
- 连接JLink设备到计算机
- 运行程序:
python main.py
- 在GUI界面中选择JLink设备、配置参数并启动转发
- 点击"停止"按钮停止转发
main.py
: 主程序入口(GUI模式)config.py
: 配置管理rtt_manager.py
: RTT通信管理udp_manager.py
: UDP通信管理forwarder.py
: 数据转发逻辑gui_manager.py
: GUI界面管理device_selector.py
: JLink设备选择器
可以使用任何支持UDP的工具或程序接收转发的数据,例如:
import socket
# 创建UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('0.0.0.0', 8888)) # 绑定到与config.json中相同的端口
print("等待接收RTT数据...")
while True:
data, addr = sock.recvfrom(65535)
print(f"收到数据: {data.decode('utf-8', errors='replace')}")
- 如果使用过程中,MCU进行调试,工具则会异常,需要点击停止后重新启用,即可正常使用
- 速率过慢时,可以尝试将调试速度更改至
50000kHz
,这样可以自动适配到最大速度 - 确保JLink设备已正确连接
- 验证目标设备类型是否正确
- 检查RTT是否已在目标设备上启用
- 确认UDP端口没有被防火墙阻止
- 如果无法自动找到RTT控制块,尝试手动指定RTT控制块地址
- 检查日志输出以获取更详细的错误信息
MIT