这个工具用于将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