PyLink 使用指南
PyLink 使用指南
1. 安装 PyLink
PyLink 是通过 SEGGER J-Link 调试器与嵌入式设备交互的 Python 库。安装步骤如下:
pip install pylink-square
请确保系统已安装 SEGGER J-Link 软件,可从SEGGER官网下载。
2. 连接 J-Link 调试器
创建 JLink 对象并建立连接:
import pylink# 初始化连接
jlink = pylink.JLink()
jlink.open()
print(f"已连接 J-Link,序列号:{jlink.serial_number}")
连接指定调试器(多个设备时):
jlink.open(serial_no=123456789) # 替换为实际序列号
3. 连接目标设备
指定目标微控制器型号:
TARGET_DEVICE = "STM32F103C8" # 根据实际设备修改jlink.connect(chip_name=TARGET_DEVICE)
print(f"已连接目标设备:{TARGET_DEVICE}")
4. 内存操作
读取内存
MEMORY_ADDRESS = 0x20000000 # 设置目标地址value = jlink.memory_read32(MEMORY_ADDRESS, 1)[0]
print(f"地址 0x{MEMORY_ADDRESS:X} 的值:0x{value:X}")
写入内存
NEW_VALUE = 0x12345678 # 设置写入值jlink.memory_write32(MEMORY_ADDRESS, [NEW_VALUE])
print(f"已写入 0x{NEW_VALUE:X} 到地址 0x{MEMORY_ADDRESS:X}")
5. 设备控制
复位设备
jlink.reset()
print("设备已复位")
暂停/运行
jlink.halt()
print("设备已暂停")jlink.restart()
print("设备正在运行")
6. 调试功能
断点设置
BREAKPOINT_ADDRESS = 0x08000000 # 设置断点地址jlink.set_bp(BREAKPOINT_ADDRESS)
print(f"在 0x{BREAKPOINT_ADDRESS:X} 设置断点")
单步执行
jlink.step()
print("单步执行完成")
寄存器读取
registers = jlink.register_read_all()
print("寄存器状态:", registers)
7. 断开连接
操作完成后关闭连接:
jlink.close()
print("已断开连接")
完整示例
import pylinkTARGET_DEVICE = "STM32F103C8"
MEMORY_ADDRESS = 0x20000000
NEW_VALUE = 0x12345678def main():jlink = pylink.JLink()try:jlink.open()print(f"已连接 J-Link,序列号:{jlink.serial_number}")jlink.connect(chip_name=TARGET_DEVICE)print(f"已连接目标设备:{TARGET_DEVICE}")value = jlink.memory_read32(MEMORY_ADDRESS, 1)[0]print(f"地址 0x{MEMORY_ADDRESS:X} 的值:0x{value:X}")jlink.memory_write32(MEMORY_ADDRESS, [NEW_VALUE])print(f"已写入 0x{NEW_VALUE:X}")jlink.reset()print("设备已复位")except pylink.errors.JLinkException as e:print(f"错误:{e}")finally:jlink.close()print("已断开连接")if __name__ == "__main__":main()
最佳实践
- 文档查阅:提前熟悉SEGGER官方文档,了解设备支持情况
- 工具验证:使用J-Link Commander或J-Flash进行硬件测试
- 异常处理:确保异常情况下能正确断开连接
- 权限管理:部分系统需要管理员权限访问调试器