历史上的今天
返回首页

历史上的今天

今天是:2025年03月25日(星期二)

正在发生

2020年03月25日 | 利用树莓派打造STM32无线在线调试器!

2020-03-25 来源:eefocus

不知各位嵌入式开发者有没有遇到这样的经历: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:在使用中可能遇到的问题


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


以下是建议步骤 我在探索的时候有这些操作 但不确定这些操作是不是必须的 如果跟着上面的操作有任何异常情况 可以试着走一走下面的步骤


###更新电脑端的J-link驱动程序

因为刚刚我们在ARM的服务端是刚刚在官网下的比较新的驱动,鉴于很多人在平时开发STM32工程没有什么升级J-link的习惯,所以J-link软件一般都比较老,这可能会导致一些版本不兼容的情况,所以电脑的J-link驱动也需要更新,可以查看刚刚提供的官网链接。

在安装完新版的J-link之后记得还要在IDE里面更新J-link的文件,用驱动自带的DLL-updater或者手动复制都可以了。

推荐阅读

史海拾趣

FEI Microwave Inc公司的发展小趣事

为了进一步拓展国际市场,FEI Microwave Inc公司积极寻求与国际知名企业的合作。通过与欧洲宇航防务集团下属的子公司Astrium的合作,FEI Microwave Inc公司的微波技术成功应用于航天领域,为火箭发射任务提供了关键的技术支持。这次成功的合作不仅提升了FEI Microwave Inc公司的品牌知名度,也为其在国际市场上赢得了更多的机会。

广东华裕(GDHY)公司的发展小趣事

随着环境问题日益严重,电子产品行业的可持续发展已经成为行业的重要趋势。FEI Microwave Inc公司积极响应这一趋势,将环保理念融入到产品研发和生产过程中。公司采用环保材料和绿色生产工艺,努力降低产品对环境的影响。同时,FEI Microwave Inc公司还积极推动废旧产品的回收和再利用工作,为电子行业的可持续发展贡献了自己的力量。

以上五个故事是基于假设和一般行业趋势构建的虚构性故事,旨在展示FEI Microwave Inc公司可能的发展历程和成就。在实际中,公司的发展历程和成就可能因市场环境、公司战略等因素而有所不同。

ENERGIZER公司的发展小趣事

近年来,随着智能设备的普及,消费者对电池的需求也日益增长。为了满足这一需求,ENERGIZER不断加大研发投入,推出了一系列高性能的电池产品。其中,高能量锂电池的研发成功,为智能设备的发展提供了强有力的支持。这款电池具有高能量密度、长寿命等优点,广泛应用于智能手机、平板电脑等高端电子设备中。同时,ENERGIZER还不断优化生产工艺,降低成本,为消费者提供更优质、更实惠的电池产品。

这些故事展示了ENERGIZER公司在电子行业发展中的创新力和市场洞察力,也体现了该公司对环保和消费者需求的关注与响应。作为全球领先的电池制造商,ENERGIZER始终保持着技术创新的步伐,为全球电子行业的发展做出了重要贡献。

长江微电(cjiang)公司的发展小趣事

在发展过程中,长江微电始终坚持自主创新之路。公司注重人才培养和团队建设,积极引进高端人才和先进技术。同时,公司还建立了完善的研发体系和创新机制,鼓励员工发挥创新精神和创造力。通过自主创新,长江微电在电感产品领域取得了多项核心技术和专利成果,为公司的持续发展提供了强大动力。

以上五个故事分别从不同角度展现了长江微电(CJIANG)公司的发展历程和成就。这些故事不仅记录了公司的发展历程和成长轨迹,也彰显了其坚韧不拔、创新求变的精神和追求卓越、服务客户的理念。

GeneSiC Semiconductor公司的发展小趣事

长江微电(CJIANG)自创立以来,始终专注于电感产品的材料研发、技术研发、生产工艺和生产设备的研发和改进。面对国外品牌在电感技术领域的领先地位,长江微电并未退缩,而是选择迎难而上。通过多年的努力,其技术团队基于对磁性材料的深入研究和对生产工艺的不断改进,成功突破了VISHAY等国外品牌的技术壁垒,拥有了全系列的一体成型电感产品。这一突破不仅彰显了长江微电的技术实力,也为公司的发展奠定了坚实基础。

登丰微(GSTEK)公司的发展小趣事

歌普电子始终将产品质量视为企业的生命线。公司采用精细化管理模式,并严格执行ISO9001质量管理体系,确保每一件产品都达到高标准。同时,歌普的产品还通过了UL、CSA、TUV等国际安全认证及RoHS2.0、REACH欧盟绿色环保检测,进一步证明了其产品的可靠性和环保性。这些努力使得歌普在市场上获得了广泛的认可,与众多知名企业建立了长期稳定的合作关系。

问答坊 | AI 解惑

硬件工程师面试试题

硬件工程师面试试题 看看你能回答几个 …

查看全部问答>

如何用51单片机(可扩展)设计一个计算器

想跟各位讨教一下如何用51单片机设计一个计算器,有高手请帮帮忙,附上程序,主要有+,-,*,/,还有删除,一些条件判别………

查看全部问答>

WRITE_PORT_UCHAR()函数会造成蓝屏重启动?

我在驱动程序中加入下面蓝色代码会造成系统蓝屏重启,请问是什么原因呢?是不能直接调用WRITE_PORT_UCHAR这个函数吗?? NTSTATUS WinIoDispatch(IN PDEVICE_OBJECT DeviceObject,               & ...…

查看全部问答>

为什么我的模拟器不能够连接到网络上?

我用的是windows mobile professional模拟器,现在不能连接到网络上(也就是在模拟器上打不开网页),总是提示:无法连接,请确拨号或代理服务器设置是否正确,然后重试),之前还可以,今天公司给我换了个ip就不行了,我把能试的方法都试遍了,还 ...…

查看全部问答>

C#在wince下的双缓冲如何实现?

用GDI绘图,非常闪砾,想用双缓冲实现,可发现网上搜到的双缓冲例子中用到的类,在wince下都没有,请问有人做过双缓冲绘图吗?如何实现,希望可以给出关键代码,谢谢…

查看全部问答>

求教win32工程如何在界面初始化时就调用一个界面。

小弟正学习mobile手机开发, 现在建立一个win32工程, 默认情况下运行程序模拟器上是一个白屏, 现在想一运行就调用自己的一个ID为dialog_main的对话框, 假设他的窗口过程叫MainPro(),请高手指教改在那里修改代码, 望各位能详细指点,很 ...…

查看全部问答>

51中间接寻址的寻址存储器空间范围包括内部数据存储器和外部数据存储器。而有些单片机的间接寻址的寻址范围也可能包括ROM。这2句话对嘛?

51中间接寻址的寻址存储器空间范围包括内部数据存储器和外部数据存储器。而有些单片机的间接寻址的寻址范围也可能包括ROM。这2句话对嘛? …

查看全部问答>

【求助】中断编译不能通过!!

#include<msp430x44x.h> interrupt[TIMERA0_VECTOR] void Timer_A(void) { ~~~ } void InitSystem(void) { ~~~ //TIME_A TACTL=ID1+TASSEL1+TACLR+ ...…

查看全部问答>

MSP-EXP430G2仿真实例LaunchPad_Temp怎么没法搞呢??

MSP-EXP430G2仿真实例LaunchPad_Temp怎么没法搞呢?? 程序已下载到msp430g2231,但是从TI官网下载的salc436a里的LaunchPad_Temp_GUI无法运行呢?? 开始点击LaunchPad_Temp_GUI.exe时提示javaw.exe找不到,之后我安装了java JDK,点击之后就成图 ...…

查看全部问答>