前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >树莓派JTAG详细使用笔记

树莓派JTAG详细使用笔记

作者头像
bigmagic
发布于 2020-05-18 15:27:02
发布于 2020-05-18 15:27:02
4.8K00
代码可运行
举报
文章被收录于专栏:嵌入式iot嵌入式iot
运行总次数:0
代码可运行

1.说明

有的时候,在调试代码的时候,往往会借助一些硬件调试工具,JTAG就是很好的调试工具。下面来详细介绍一下如何在树莓派上使用JTAG进行调试。

本文主要在树莓派4上实现jlink调试功能。通过jlink+openocd调试树莓派4。之后就可以通过gdb指令调试树莓派4的程序了。

工欲善其事,必先利其器,有了更好的工具,让开发的程序变得更加稳定,同时也在后期对程序进行定位分析的时候,也能很容易的进行程序的跟踪。

1

下面来详细描述一下环境搭建与使用。

2.环境准备

对于gdb的使用,建议在Ubuntu上进行,这样支持的更加友好。所以本次实验的软件部分主要是在Ubuntu上进行环境搭建与开发。

2.1 硬件连接

树莓派的40pin引脚上其实是有jtag接口的,所以不用飞线,只需要杜邦线就可以实现线路连接。

基本的引脚定义如下:

管脚名字

gpio功能ALT4

GPIO22

ARM_TRST

GPIO24

ARM_TDO

GPIO25

ARM_TCK

GPIO26

ARM_TDI

GPIO27

ARM_TMS

为了更加方便的看清线路的连接,图片标识如下

2

其引脚的定义如下:

3

实物连接可以看下面的图片:

4

其中树莓派接入一个jlink调试器

5

放大后的引脚图如下:

6

线路连接完成后,可以进行后续操作。

2.2 准备软件

安装JLinkOB

首先必须安装JLinkOB驱动。

7

因为是在Ubuntu上搭建环境,所以可以进行图中下载,然后安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo dpkg -i JLink_Linux_V672c_x86_64.deb

看到如下的图片则成功

8

验证是否安装成功,可以输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo JLinkExe

看到如下信息表示成功

9

「安装openocd」

对于openocd的安装,要支持树莓派4,则可以到如下的链接去下载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.10.0-13/xpack-openocd-0.10.0-13-linux-x64.tgz

对于Windows上的openocd,下载地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://gnutoolchains.com/arm-eabi/openocd/

如果从其他渠道下载,后期调试时,可能会遇到如下的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
raspi4.cfg:15: Error: invalid command name "dap"

可以通过对脚本的配置实现。其树莓派4的脚本可以在百度网盘中找到。

执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /home/bigmagic/tools/xpack-openocd-0.10.0-13-linux-x64/xPacks/openocd/0.10.0-13/bin/openocd -f /home/bigmagic/tools/xpack-openocd-0.10.0-13-linux-x64/xPacks/openocd/0.10.0-13/scripts/interface/jlink.cfg -f /home/bigmagic/openocd/raspi4.cfg

可以实现openocd通过jlink的连接到树莓派4上。

让程序halt

为了让树莓派程序在启动的时候停下来,然后手动通过openocd加载固件到内存,可以进行如下操作:

看下面github中的实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/metebalci/baremetal-rpi/blob/master/01-infinite-loop/infloop.s

只有一段代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
l: b l

在不断执行循环程序。

而后修改SD卡中的配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enable_uart=1
arm_64bit=1
kernel=infloop.bin

enable_jtag_gpio=1
gpio=22-27=a4
init_uart_clock=48000000
init_uart_baud=115200

其中infloop.bin表示可执行的程序,这里替换成自己的程序就可以运行正常的程序了。

开启调试

「第一步:存放文件」

将启动固件放到sd卡中。

将相关的文件放入,可以在我的网盘下进行下载:

https://pan.baidu.com/s/1F5toHNpt20tfVsmhzspw6Q

提取码:iq7m

将SD卡插入,插上电源,系统进入等待JTAG连接的模式。

「第二步:连接openocd」

通过下面的指令脚本进行连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /home/bigmagic/tools/xpack-openocd-0.10.0-13-linux-x64/xPacks/openocd/0.10.0-13/bin/openocd -f /home/bigmagic/tools/xpack-openocd-0.10.0-13-linux-x64/xPacks/openocd/0.10.0-13/scripts/interface/jlink.cfg -f /home/bigmagic/openocd/raspi4.cfg

其中主要的命令就是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openocd -f xxx.cfg -f raspi4.cfg

连接完成可以看到打印信息如下:

10

主要注意的是三个端口的连接,这里控制openocd采用telnet,连接gdb的端口采用3333。

「第三步:通过telnet加载固件」

此时需要通过telnet去load内存镜像到内存中。

本次实验采用的是rt-thread的raspi4的系统进行调试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pi/raspi4

编译完成生成rtthread.bin和rtthread.elf可以看到如下图所示

11

然后就可以进行相关的调试了。

启动telnet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
telnet localhost 4444

加载固件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
halt
load_image /home/bigmagic/work/rt-thread2/bsp/raspberry-pi/raspi4/rtthread.bin 0x80000

表示将rtthread.bin固件加载到树莓派4的0x80000地址处。

12

然后输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
step 0x80000

表示从入口地址0x80000执行程序。

「第四步:启动gdb调试」

在另外的一个控制台输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aarch64-elf-gdb

接着输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
target remote localhost:3333
file rtthread.elf

此时程序就可以在入口函数处停留了。

「第五步:查看寄存器与代码」

输入layout src可以展开代码

输入layout reg可以查看寄存器

输入layout split可以展开汇编

14

然后就可以按照gdb的方式进行调试了。

比如我们设置断点为entry

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
break entry
c

然后就可以看到停到断点处了

15

这样调试程序起来就非常方便了。

3.总结

上述介绍了树莓派4上用jlink与openocd调试程序的过程。工欲善其事,必先利其器。

拥有好的分析代码手段,将很容易的进行代码定位与质量分析。在关键的时候,能够发挥出巨大的作用,特别在对复杂代码的逻辑分析上,也能很好的定位。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式IoT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
复盘Build 2016:不要错过微软给开发者的这些福利 | TW洞见
今日洞见 文章作者/配图来自ThoughtWorks:陈计节。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本网协议授权的媒体、网站,在使用时必须注明"内容来源:ThoughtWorks洞见",并指定原文链接,违者本网将依法追究责任。 近年来,微软坚持为社区提供更多灵活性,并以更开放的思路重构其已有平台,一改从前封闭高冷的姿态,迅速调整战略以适应新的产业格局,向全世界展示了一个灵动
ThoughtWorks
2018/04/20
7450
复盘Build 2016:不要错过微软给开发者的这些福利 | TW洞见
邹溪源: 我们为什么要搞长沙.NET技术社区(四)
昨天(2019年3月6日)晚餐时间,有幸得到长沙技术圈资深.NET开发者出生的企业家、湖南华邦互联有限公司董事长赵总的赞助,同时他也亲自从河东过来,对我们的社区建设提供支持和鼓励,让我们了解到我们未来可以奋斗的方向,也体会到自己的责任和不足,相信有了赵总以及以赵总为代表的长沙IT企业家们的大力支持,我们的社区将迎来新的发展契机。
寒树Office与RPA
2019/11/29
3920
焦虑的 BAT、不安的编程语言,揭秘程序员技术圈生存现状!
近日,Oracle 中国大规模裁员事件闹得沸沸扬扬,有人作比喻道“北京最大的一个养老院倒了”。虽然 Oracle 以业界良心的 N+6 补偿方案来赔偿,但是其内部的部分老员工依旧表达了不满,纷纷表示,“不理解公司为什么突然裁员,产品线上还在盈利。正常情况下,如果公司财报连续三年盈利,是不允许裁员的。”
AI科技大本营
2019/05/17
5980
邹琼俊:不是211,985毕业的他,为什么能够出版两本优秀的技术书?
邹琼俊,湘中小城娄底人,毕业于湖南省第一师范学校。大学毕业后,加入了周尹周老师组建的培训机构学习.NET培训,走上了.NET开发这条路。《ASP.NET企业级开发实战》一书作者。
寒树Office与RPA
2019/11/29
9920
邹溪源: 我们为什么要搞长沙.NET技术社区(一)
2019年2月17日,继深圳,广州,西安,成都,苏州相继成立了.NET社区之后,酝酿已久的长沙.NET社区也终于组织了第一次线下交流会。如果您是长沙的IT精英,扫码上图的二码,我带你加入长沙微软技术俱乐部大家庭,请你共商大计。
寒树Office与RPA
2019/11/29
5990
关于以“互联网+”为驱动 推进我国经济社会创新发展的建议
关于以“互联网+”为驱动   推进我国经济社会创新发展的建议 马化腾 全国人大代表、腾讯公司董事会主席兼首席执行官  “互联网+”是以互联网平台为基础,利用信息通信技术与各行业的跨界融合,推动产业转型升级,并不断创造出新产品、新业务与新模式,构建连接一切的新生态。   当前中国经济正处于转型升级的重要时期,面临增长放缓、生产过剩、外需不振等严峻挑战,“稳增长、促改革、调结构、惠民生”是当前经济社会发展的首要任务,创新驱动正在成为我国经济发展的新引擎。通过多年创新发展的中国互联网企业已跻身世
腾讯研究院
2018/03/09
1.4K0
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
数据猿
2018/04/19
6460
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
从传统行业到互联网,为什么作为开发者的你总是会被坑来坑去?
高中以前,小A都是村里成绩最为优秀的,是隔壁邻居们口中的那个他。然而,由于高考失利,他最终不得不离开校园,托了远方表舅的关系来到某血汗工厂打工,而是他加入血汗工厂之后,才知道他的这位所谓远方表舅,还从介绍他进厂的过程中抽到了两千块钱的介绍费。
三哥
2019/03/19
5470
一篇“上床”文章引发的血案 我有话要说
昨天有网友说一场好好的发布会,被我一篇文章搞砸了,但T哥并无此意,我也是本着开放的心态来报道此事儿,并参与当天的媒体专访,现场我采访的问题也跟我的内容相关,但还是有很多人对此文产生了误解。 首先,我没有说致远与金蝶的合作就抛弃了用友 有网友反映,到底我们的客户未来姓用友还是金蝶,求客户的心理阴影影响面积,本次致远的合作仅是云表单的一块业务,并非致远的全部产品线。不知道这个阴影面积如何求得? 其次,协同生态任何事情都有可能发生 致远今天不跟金蝶合作,还会跟其他的银蝶合作,连华为都一直坚称自已是一能力有限的公
人称T客
2018/03/21
1.1K0
一篇“上床”文章引发的血案 我有话要说
最干货Android开发者成长指南
背景 今年4月,全球互联网引来了一个历史性转折点:根据流量分析工具 StatCounter 的报告,Android 首次超越 Windows,成为用户访问互联网最常用操作系统!Android 不仅在移动领域,在全操作系统内,都成为了当之无愧的霸主!无论你有志于成为领先企业的 Android 工程师,还是靠自己改变世界的独立开发者,现在都是进入这个领域的绝佳时机。 Android 技术如此受欢迎的另一个原因,也是因为其就业面非常广,无论是在当前的移动互联网,还是将来的物联网领域都有一席之地。
用户1907613
2018/07/20
4110
(深度好文)“互联网+”4字心法要诀:“柔、软、感、快”
2014年7月1日晚间,停牌中的湘鄂情对外公告称,公司名称由“北京湘鄂情集团股份有限公司”变更为“中科云网科技集团股份有限公司”。
IT阅读排行榜
2018/08/13
3730
(深度好文)“互联网+”4字心法要诀:“柔、软、感、快”
警惕数据霸权主义,由菜鸟和顺丰互“怼”引发的数据主权之争丨科技云·视角
虽然国家邮政局以强硬姿态要求菜鸟和顺丰恢复业务合作和数据传输,但这场因“小范围的快递柜对接问题”引发的“罗生门”事件,让腾讯、京东、美团、网易等互联网巨头一致站到了菜鸟的对立面,力挺顺丰并接入丰巢自提柜。在这场“数据争夺战”的背后,究竟掩藏着怎样的真相?
科技云报道
2022/04/14
8250
警惕数据霸权主义,由菜鸟和顺丰互“怼”引发的数据主权之争丨科技云·视角
互联网寒冬下那些 Android 开发高手,都在研究什么技术?
近半年来,很多人都问过我这样的问题。大家对于职业的未来,都有一些迷茫和焦虑,其实我也有,为什么会这样呢?
Android技术干货分享
2019/11/14
1K0
互联网寒冬下那些 Android 开发高手,都在研究什么技术?
平台战略,传统企业数字化转型关键(上)
平台模式已经深入人们的生活,出现在包括社交网络、电商、游戏、第三方支付等各种产业中,平台模式正在不断改变人们的生活模式,同时也在全球商业竞争中扮演着重要角色。
Fino_Jack
2020/05/24
6520
平台战略,传统企业数字化转型关键(上)
【工作感悟】Android 开发者,如何提升自己的职场竞争力?
今年的互联网,延续了去年的态势。虽然前些年,每到年底的时候大环境都不好,然而来年照样春暖花开。但是2018下半年的颓势,在2019年春天并未得到缓解,所以现在的互联网环境是真的不好了。
Android技术干货分享
2019/06/20
5410
前端学习路线与方法
在“开篇词”中,我和你简单回顾了前端行业的发展,到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。
李才哥
2019/07/10
5270
一张图来看看.NETCore和前后端技术的演进之路
2019年3月10日,在长沙.NET 技术社区组织的技术沙龙《.NET Core和前后端分离那些事儿》上,我们曾经试图通过一系列抽丝剥茧的过程来引导大家在这条基于.NET Core的前后端分离有关的技术路线上持续发散,由于各种原因未能成功,因此,技术社区执行主席,李文强同学整理了一张图,并由溪源以专刊的形式来描述他所认为的技术演进之路。
心莱科技雪雁
2019/04/22
4920
一张图来看看.NETCore和前后端技术的演进之路
聊聊IT技术人的知识体系
我在我的2020年终总结中提到技术人需要建立自己的知识体系,那么怎么建立自己的知识体系呢?技术人的知识体系又是什么样的呢?今天,和你一一分享。
Edison Zhou
2021/03/11
6400
聊聊IT技术人的知识体系
全民编程时代,程序员该如何保住饭碗?
无论任何场景下程序员想要保证饭碗,就是要保证足够的市场竞争力,这个行业很大一个特点是加班延点比较多,很多年龄大的程序员在体力下降的情况下,加上家中事情比较多,给人一种年龄大的程序员市场竞争力下降的感觉,精力下降只是一种表面的现象,程序员的市场就是保持对新技术的跟进能力,这点跟不上即使是看着很年轻的程序员心态其实已经老了。
程序员互动联盟
2020/04/03
5090
江小涓:为什么互联网是+,数据要素是×呢?
第二十五届北大光华新年论坛在北京大学百周年纪念讲堂举行,本届论坛的主题为“增长动能 中国探索”。中国工业经济学会会长,中国社会科学院大学教授、博导,国务院原副秘书长江小涓出席论坛并发表题为《发挥数据要素积极作用 促进经济持续向好发展》的演讲。
小腾资讯君
2024/01/17
2010
江小涓:为什么互联网是+,数据要素是×呢?
推荐阅读
相关推荐
复盘Build 2016:不要错过微软给开发者的这些福利 | TW洞见
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档