Pylink与Jlink实现电脑-板卡的通信和烧录

Pylink与Jlink实现电脑-板卡的通信和烧录

  本文介绍了如何使用Python的pylink库进行单片机的连接和烧录。

1.安装pylink库,为通信和烧录做准备

  此软件包需要SEGGER提供的J-Link软件和开发包。如果您目前没有安装开发包,则必须在使用此Python软件包之前先安装它。
  具体的安装有如下的方式:

基本安装

  使用pip安装PyLink:

pip install pylink-square

  或者使用easy_install:

easy_install pylink-square

从源头建造

  将项目克隆到本地存储库中,然后导航到该目录并运行。

python setup.py install

  这将给你大师(开发分支)的提示。虽然我们努力使其始终稳定,但可能会引入一些错误,因此最好在安装之前先检查发布分支。

git checkout release-major.minor$python setup.py install
``
您可以将JLinkARM.dll复制到上面列出的任何目录。或者,将SEGGER J-Link目录添加到您的%PATH%中。
  为了使用此库,需要SEGGER提供的J-Link软件和开发包。一旦您拥有开发包的副本,您就可以开始使用PyLink。如果您使用SEGGER网站上提供的安装程序之一安装它,PyLink将自动找到该库,但为了获得最佳效果,您还应该根据您的操作系统执行以下操作之一:

#### 在MAC上
#选项A:将库文件复制到您的库目录。cp libjlinkarm.dylib /usr/local/lib/#选项B:将SEGGER的J-Link目录添加到您的动态库路径中。$ export DYLD_LIBRARY_PATH=/Applications/SEGGER/JLink:$DYLD_LIBRARY_PATH

```powershell
# Option A: Copy the library file to your libraries directory.
cp libjlinkarm.dylib /usr/local/lib/
# Option B: Add SEGGER's J-Link directory to your dynamic libraries path.
export DYLD_LIBRARY_PATH=/Applications/SEGGER/JLink:$DYLD_LIBRARY_PATH

在Windows上

Windows按以下顺序搜索DLL:
1.当前执行目录。
2.Windows系统目录。
3.Windows目录。

#选项A:将库复制到您的库目录。
cp libjlinkarm.so /usr/local/lib/#选项B:将SEGGER的J-Link库路径添加到您的库路径中。$ export LD_LIBRARY_PATH=/path/to/SEGGER/JLink:$LD_LIBRARY_PATH

2.pylink的简单操作

  电脑链接Jlink

import pylink
jlink = pylink.JLink()
jlink.open()
print(jlink.product_name)#查看名称
print(jlink.opened())#查看是否打开jlink
print(jlink.connected())#查看jlink是否连接电脑
print(jlink.target_connected())#查看目标设备是否连接jlink

  更新jlink固件

jlink.update_firmware()

  连接目标CPU

jlink.connect('STM32F103R')
print(jlink.core_id())#查看目标CPU的id
print(jlink.target_connected())#查看目标设备是否连接

  Flash文件

jlink.flash_file('/path/to/file', address)

  Flash字节

data = [1, 2, 3, 4]
jlink.flash(data, 0)

  读取指定地址数据

jlink.memory_read8(0, 4)

2.!!!本文重点:连接单片机并进行烧录

  在安装好pylink和SEGGER提供的J-Link软件包之后,就可以进行Pyhton编程烧录了。

def jlink_download(bin_path,board,addr):
    import pylink
    import time
    jlink = pylink.JLink()
    jlink.open()
    jlink.set_tif(pylink.enums.JLinkInterfaces.SWD)
    jlink.connect(board)
    jlink.set_reset_pin_low()
    time.sleep(0.05)
    jlink.set_reset_pin_high()
    jlink.reset()
    jlink.erase()
    
    print(jlink.target_connected())
    print(jlink.core_id)
    print(jlink.device_family())
    
    if(jlink.target_connected()):
        a = jlink.flash_file(bin_path, addr)
        jlink.reset()
#         a = jlink.flash_file('deity_dvt-23.8.4-g52d07a-mods-202308041629-mfg-huffman.bin', addr)
        print(a)
    jlink.close()

bin_path = 'deity_dvt-23.8.4-g52d07a-mods-202308041629-mfg-huffman.bin'
board = 'AMA3B1KK-KCR'
addr = 0x0000c000
jlink_download(bin_path,board,addr)

注意:这里你需要更改的入下:
把bin_path改成你的bin路径
board改成你的板卡型号
addr是烧录的地址,只需要更改这三处
如果不是SWD接口,那需要更改一下接口,即jlink.set_tif(pylink.enums.JLinkInterfaces.SWD)

3.常见的问题汇总

1.引用代码出现报错

import pylink
jlink = pylink.JLink()
jlink.open() 

#报错:
#AttributeError: module ‘pylink’ has no attribute ‘Jlink’

解决办法:
这里不是因为网上统一的说法,pyc文件的问题,这里需要特别注意,当help(pylink)的时候会看到可用文件是有jlink的,但是将pylink.JLink()更改为pylink.jlink()仍旧会报错ypeError: ‘module’ object is not callable,这里需要注意,jlink本身是个库文件,而不是函数本身,所以这里也不能引用,正确的用法是:

from pylink.jlink import JLink
jlink = JLink()
jlink.open()
#或者如下
from pylink import jlink
jlink = jlink.JLink()

2.在引用jlink库的时候出现了报错

#报错如下:
#line 295, in init
raise TypeError(‘Expected to :be given a valid DLL.’)

解决方法如下:
其中他进行了一步操作:将 JLinkARM.dllJLink_x64.dll 文件复制到 Windows/system32 目录和运行会话的用户目录。初步尝试之后发现可以正确通过该步骤编码,正确识别jlink

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值