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