使用python操纵jlink

本文介绍如何使用Python库pylink-square操控JLink进行MCU调试,即使在资源紧张的情况下,也能实现实时读取RAM和FLASH内容,无需中断MCU运行。通过JLink的序列号连接设备,设置接口类型并指定芯片型号,然后可以自由地读取内存数据。未来设想可能通过Python操纵芯片外设,但受限于无法执行中断服务函数。
AI助手已提取文章相关产品:

最近在做一个项目,功能都是分开几个人做的,每个人调试自己那部分功能的时候,都用串口打印log信息出来,每个人都调好之后,代码一合并,空间不够了,经过各种删减优化,终于是下进去了。但是这个时候,没有空间可以写log了,出了问题,也不知道是怎么回事,因为这个项目是要大批量一两百个设备运行起来才能看到效果的,我不可能每个设备都连着jlink在线调试啊。关键是空间不足,引脚也没有空出来的。

机缘巧合之下,我在网上找到了一个神器,pylink-square。就是用python来控制jlink。经过我的试验,发现这个包可以在MCU运行期间连上MCU,还不会打断MCU的运行,更厉害的地方是,它还可以把MCU的RAM,FLASH中的内容读出来,实时的哦,读取的操作不会让MCU停下来。有了这个包,虽然我不能打log了,但是我可以把一些关键的变量读出来看,并且因为不会打断MCU的运行,所以我可以拿着个jlink,想看哪个设备就戳上去读变量。

flash中的存的参数还好说,你肯定是知道地址的。但是一些RAM中的变量,要怎么读取呢。这里要分两种情况,如果是静态的变量,或者全局变量,应该是固定地址的,按理说是能够根据地址直接读出来的,如果是栈中的变量,函数中的局部变量,那就无能为力了。另外,虽然我现在还没尝试去读,但是我看到这个pylink的包好像还可以读寄存器的值,也就是R0~R13。那么在死机的时候,是不是能够读取这些寄存器的值,还有RAM中的数据来判断死机是死在哪了呢,这个功能想想还是有可行性的,以后有机会试试。

这里放一张我在MAP文件里看到的变量,类型是Data,Gb全局变量,还可以看到变量的名字在RAM中的地址,真是贴心。

接下来我来说说,这个pylink该怎么用

安装

在命令行中输入

python -m pip install pylink-square

记得有个squ

您可能感兴趣的与本文相关内容

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值