利用树莓派打造STM32无线在线调试器!

不知各位嵌入式开发者有没有遇到这样的经历:J-link的线长限制了我们编程的姿势,很多时候我们的工程都需要板子产生一些位移(比如调小车之类的),这时候J-link的线会让我们Debug的过程变得非常痛苦。。。那么有没有办法让我们解决这个数据线的痛苦呢??答案是当然有的!只要有着一颗折腾的心,办法总是会慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢想出来的。本人最近一直在弄一个相关工程,因为被线限制的非常痛苦,于是就考虑出了使用树莓派作为J-link的服务器然后和STM32固连来实现远程下载与调试的办法。鉴于官方仅放出驱动程序没有提供技术支持,本人在折腾的时候发现网上的资料也很少,特在此记录我的操作步骤和方法,以便大家也能和我一起分享无线的喜悦

#利用树莓派作为J-link的远程服务器
首先,我们需要在树莓派上安装J-link的驱动,截至本文章撰稿完成,目前的J-link驱动版本是V6.22c。我们可以下载ARM版本的J-link驱动(该资源是我手工下载下来的再重新上传的,方便大家找和下载)

如果这篇文章已经过去了很久 那么建议从下面的官网地址去下载
https://www.segger.com/downloads/J-link/

我们会下载得到一个tgz压缩包 把这个包解压到树莓派中(建议目录/opt/)
打开这个文件夹,里面会有很多的可执行文件。这时候我们需要运行其中的J-linkRemoteServer
首先确认我们具有可执行权限,如果没有则需要使用chmod指令

chmod +x J-linkRemoteServer

这时候,记得把J-link插上树莓派,然后我们可以试着运行一下

./J-linkRemoteServer

当你的终端显示"Waiting for client connection…"的时候就意味着你的服务器已经启动成功了!
如果出现其他问题,建议使用J-linkExe来看一下J-link的识别问题
启动情况

如果测试成功的话,我们就可以把它添加到树莓派的开机自启动了,让树莓派在开机自启的时候打开服务,更省心。
我们可以用sudo vim /etc/rc.local,在文件末尾前添加自己的启动项。

nohup /绝对路径/J-linkRemoteServer &

使用nohup的原因是有时候Server会等待输出,使用nohup好像可以忽略输出。。在这点我还是有一点不明白,欢迎评论指教。
使用 & 的原因是开机的时候把该程序挂到后台
编辑完成后保存重启,重启后可以使用ps -A来查看服务有没有正常运行

当树莓派的远程服务器已经配置完成的时候,我们就可以把树莓派与STM32通过J-link给连接好,固定好,然后让树莓派连上wifi 静静的待在一个地方就可以了。
#上位机连接J-link远程服务器

在这里我使用的是MDK-ARM ,想必大家开发应该也是用这个居多吧 如果用的是IAR或者其他的IDE,应该是大同小异的

这时候我们随便打开一个工程,在工程设置里面找到J-link的设置
设置1

然后把链接方式改成“TCP/IP”,然后在ip地址填上树莓派的局域网ip地址,端口填0让程序自动搜索就可以的了

设置2

链接成功的话再设置上方应该会出现J-link的驱动号还有设备号

设置3
然后到此 设置就完成了!然后就可以像平时一样,该怎么下载就怎么下载 该怎么调试就怎么调试,再也没有线的限制!

PS:在使用中可能遇到的问题

  1. 在下载的过程中经常出现Max Number错误:局域网的传输速度太慢,同时下载速率过高,导致传输时频繁重连导致出现链接数量超过限制的错误。解决办法:把传输速率降低,比如我就把传输速率降到了500kHz。大家可以自己大概试着调一下。

以下是建议步骤 我在探索的时候有这些操作 但不确定这些操作是不是必须的 如果跟着上面的操作有任何异常情况 可以试着走一走下面的步骤
###更新电脑端的J-link驱动程序
因为刚刚我们在ARM的服务端是刚刚在官网下的比较新的驱动,鉴于很多人在平时开发STM32工程没有什么升级J-link的习惯,所以J-link软件一般都比较老,这可能会导致一些版本不兼容的情况,所以电脑的J-link驱动也需要更新,可以查看刚刚提供的官网链接。
在安装完新版的J-link之后记得还要在IDE里面更新J-link的文件,用驱动自带的DLL-updater或者手动复制都可以了。

nanoDAP-wl 是实验室推出的基于cmsis-dap的无线调试器,即插即用,速度快,支持虚拟串口。无线调试器包括发射机/接收机,基于2.4G无线通信,可对10m范围内的目标进行调试下载、单步调试等操作,在某些有线仿真器不便调试的场景,如目标始终处于移动状态(飞行器、小车、机器人等),目标已经组装成产品形态,并且已安装在墙上或者高处等。此时使用无线调试器能较好的解决这些场景下调试问题,有效提高研发效率。 产品特点 使用极简,PC端无需安装额外软件,只需将发射机和接收器分别上电,等待连接成功,即可开始调试 支持SWD协议,典型的基于ARM Cortex-M系列芯片均支持SWD调试,常见的芯片如STM32系列,GD32系列,ATMEL-SAM系列,NORDIC-NRF51/52系列,NXP-LPC系列等芯片均支持SWD调试下载 支持JTAG协议,配合开源调试器OpenOCD可支持全球范围内几乎所有SoC芯片的调试,如ARM Cortex-A系列、DSP、FPGA、MIPS等,因为SWD协议只是ARM自己定义的私有协议,而JTAG则是国际IEEE 1149标准 支持虚拟串口,而且支持同时进行仿真调试和串口输出 接收机支持向目标板供电(5V、3.3V),以及从目标板取电(5V、3.3V)两种方式进行工作 支持MDK/IAR/OpenOCD,支持Windows/Linux/Mac 下进行调试开发 软件基于CMSIS-DAP实现,使用USB HID协议,无需安装驱动即可下载调试 v1.0版本硬件开源、固件开放,可供爱好者自行制作 使用场景用于调试飞行器,小车,机器人,由于调试目标为通常处于移动状态,若使用传统下载器不仅下载比较麻烦,而且无法进行单步调试。 目标板已经组装好外壳,成为产品形态,此时传统的有线方式不便调试。 产品安装在高处,如路灯、高塔等位置,此时使用有线方式不便调试。 产品链接(见附件) 说明 nanoDAP-wl v1.0 版本硬件开源,供爱好者自行制作研究。 固件针对个人开放,请大家加入QQ群 698319017 向群主索取。 更多信息 更多详情,用户手册和原理图等,请在https://github.com/wuxx/nanoDAP-wireless查看。 感兴趣的朋友请加入QQ群 698319017 研究讨论学习。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值