pylink使用知识总结
教程参考
安装命令:pip install pylink-square
1 配套开发平台选择
参考:https://blog.csdn.net/xuezhimeng2010/article/details/78771030
pylink目前不支持v4.66版本的jflash,V6.x的没问题,V5.x的没测试。
- python2.7 python 3.7 (32bit)
- JLinkARM.DLL v6.10j
- pylink 0.2.0
- jlink-ob v7.0
2 问题汇总
2.1 J-Lin V6.50b Warning: The connected J-Link is defective.Proper operation cannot be guaranteed.
出现该警告后,jlink经常会断开与电脑的连接,导致单步调试失败。
原因:jlink的固件版本和jflash的版本不匹配导致。参考:<https://blog.csdn.net/qlexcel/article/details/85711693>
解决方法:
高级做法,<https://www.amobbs.com/thread-5689245-1-1.html?_dsign=dc5297f6>;通过更改二进制文件,进而更改汇编指令,将JNZ改为JMP。
正常做法,使用旧版的jflash或更新jlink的固件;
2.2 AttributeError: function ‘JLINK_SetFlashProgProgressCallback’ not found
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSyXfsyy-1653809042321)(picture/pylink_error1.png)]
原因:因为JLinkARM.DLL v4.66版的没有这个函数。使用V6.xx版的都没有问题
3 pylink常用方法
- version(self)
查看当前jflash版本;
使用:
jlink = pylink.JLink()
jlink.version #返回jflash的版本
- hardware_version
查看当前jlink中的固件版本
使用:
jlink = pylink.JLink()
jlink.hardware_version #返回当前jlink中的固件版本
- compatible_firmware_version
查看jlink中固件编译的日期
使用:
jlink = pylink.JLink()
jlink.compatible_firmware_version #返回jlink中固件编译的日期
- reset(self,ms=0,halt=True)
复位连接的单片机,即将复位脚拉底拉高,产生一个复位信号
self 类本身,不是形参
ms 复位信号,低电平保持的时间
halt 复位后cpu运行状态,True表示停止cpu运行;False表示使cpu运行
使用:
jlink = pylink.JLink()
jlink.reset(1,False) #复位信号保持1ms,复位后cpu运行
4 使用示例
jlink = pylink.JLink()
jlink.open()
jlink.set_tif(pylink.enums.JLinkInterfaces.SWD) #成功返回True
jlink.connect('STM32F103C8') #成功无返回
print(jlink.core_id())
print(jlink.device_family())
print(jlink.target_connected())
print(jlink.erase()) #成功返回0
jlink.flash_file(file_path,addr) #刷成功返回0,失败有多种原因