利用树莓派打造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或者手动复制都可以了。

猜你喜欢

转载自blog.csdn.net/wmdscjhdpy/article/details/78795346