嵌入式学习(三)—调试工具J_Link介绍_jlink-程序员宅基地

技术标签: 嵌入式软件  嵌入式  

J-Link介绍

J-Link是segger公司的产品,J-Link的官方提供调试软件和驱动,功能比较强大,看一下百度百科的介绍:
J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,与IAR,Keil等编译环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。
二话不说,看看庐山真面目:
在这里插入图片描述

接口定义

提到专业工具,肯定要提接口定义,以及电气参数要求:
电源USB供电,整机电流 <50mA 支持的目标板电压 1.2 ~ 3.3V,5V兼容 目标板供电电压 4.5 ~ 5V (由USB提供5V) 目标板供电电流 最大300mA,具有过流保护功能;
一般也有两种接线方式,一种JTAG:标准的20pin接口,接口定义如下;另外一种是SWD,是简化了JTAG接口,只用了20pin其中3个pin;
在这里插入图片描述

J-link命令集介绍

调试软件有J-Link命令(j-tag调试),j-mem(内存查看),j-flash(flash烧写)等一般主要用到的是jlink commander,以下是它的命令集:

可用的命令是:
f—固件信息
h—停止
g—去
s—单步目标芯片
st—显示硬件状态
hwinfo----显示硬件信息
mem—读取内存 。 语法:mem , (十六进制)
mem8—读取8位项目 。 语法:mem8 ,(十六进制)
mem16—读取16位项目。语法:mem16, (十六进制)
mem32—读取32位项目。语法:mem32, (十六进制)
w1—写入8位项目。语法:w1, (十六进制)
w2—写16位项目。语法:w2, (十六进制)
w4—写入32位的项目。语法:w4, (十六进制)
wm—写测试字。语法:wm
ms—测量扫描链的长度。语法:ms
mr—测量RTCK反应时间。语法:mr
q—退出
qc—关闭JLink连接并退出
r—复位目标(RESET)
rx—复位目标(RESET)。语法:rx
RSetType—设置当前的复位类型。语法:RSetType
wreg—写入寄存器。语法:wreg,
SetBP—设置断点。
SetWP Set Watchpoint。
ClrBP—清除断点。
ClrWP—清除观察点。
VCatch—写向量捕获。
loadbin—将二进制文件加载到目标内存中。
savebin—将目标内存保存为二进制文件。
SetPC—将PC设置为指定值。
le—改为小端模式
unlock—解锁设备
rce—阅读CP15。
wce—写CP15。
ri—读 Ice reg。
wi—写ice reg。
etm—显示ETM状态
re —读ETM reg
we—写ETM reg
es—开始跟踪
etb—显示ETB状态
rb—读取ETB寄存器。
wb—写入ETB寄存器。
TAddBranch TRACE—向跟踪缓冲区添加分支指令。
TAddInst TRACE— 将(非分支)指令添加到跟踪缓冲区。:
TClear TRACE —清除缓冲区
TSetSize TRACE —设置跟踪缓冲区的大小
TSetFormat TRACE— SetFormat
TSR TRACE — 显示区域(并分析跟踪缓冲区)
TStart TRACE — 开始
TStop TRACE — 停止
---- SWO ----
SWOSpeed SWO — 显示支持的速度
SWOStart SWO — 开始
SWOStop SWO — 停止
SWOStat SWO — 显示SWO状态
SWORead SWO — 读取和显示SWO数据
SWOShow SWO — 读取和分析SWO数据
SWOFlush SWO — 刷新数据
----文件I / O ----
fwrite—将文件写入仿真器
fread—从模拟器读取文件
fshow—从模拟器读取和显示文件
fdelete—在模拟器上删除文件
fsize—在模拟器上显示文件的大小
----测试----
thg—运行/停止1000次
ts—运行步骤1000次
testwspeed—测试下载速度。
testrspeed—测试上传速度。
testcspeed—测试CPU速度。
---- JTAG ----
speed—速度设置JTAG速度。语法:speed| auto | adaptive,eg:speed 2000,
wjc—写入JTAG命令(IR)。语法:wjc(十六进制)
wjd—写入JTAG数据(DR)。语法:wjd(十六进制)
RTAP—复位TAP控制器使用状态机(111110)
wjraw—编写原始JTAG数据。
rt—复位TAP控制器(nTRST)
---- JTAG硬件—
c00—用TDI = TMS = 0创建时钟
c—时钟
0—清除TDI
1—设置TDI
t0—清除TMS
t1—设置TMS
trst0—清除TRST
trst1—设置TRST
r0—清除复位
r1—设置RESET
----连接----
usb—通过USB连接到J-Link。
ip—通过TCP / IP连接到J-Link ARM Pro或J-Link TCP / IP服务器。
----配置—
wconf—写配置字节。
rconf—读取配置字节。
usbaddr—将usb地址分配给所连接的J-Link
ipadd—r显示/分配连接的J-Link的/的IP地址和子网掩码。
gwaddr—显示/分配连接的J-Link网络网关地址。
dnsaddr—显示/分配连接的J-Link的网络DNS服务器地址/。
conf—显示连接的J-Link的配置。
ecp—启用J-Link控制面板。

总结一下我们使用的最多的命令:
USB --------连接目标板
R ----------重启目标板
stop-------停止CPU运行的程序
loadbin ----加载可执行的二进制文件
g ----------跳到代码段地址执行
s ----------单步执行(调试用)
setpc -----设置pc寄存器的值(调试用)
setbp -----设置断点
WREG -------写寄存器
MEM --------读内存
WM ---------写内存
关闭mmu —关闭mmu,这个对于裸板调试很重要
w4 cpsr,0x0000001f ------切换到系统模式
speed------设置jtag的传输速率
rce 0,c0,c0,0 -----设置cp15寄存器的第1个寄存器为0

常见报错分析

1.找不到内核
SEGGER J-Link指挥官V4.20h(’?'寻求帮助)
编译2010年10月5日19:11:57
DLL版本V4.20h,编译于2010年10月5日19:11:41
固件:J-Link ARM V8编译2010年5月5日08:59:59
硬件:V8.00
S / N:20100214
功能:RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 3.280V
信息:TotalIRLen =?,IRPrint = 0x…FFFFFFFFFFFFFFFFFFFFF1

警告:找不到CPU内核。
没有在JTAG链上找到设备。尝试在SWD上查找设备。
2.找到两个设备
信息:TotalIRLen = 9,IRPrint = 0x0011
找到2个JTAG设备,总共IRLen = 5:
#0 Id:0x2B900F0F,IRLen:04,IRPrint:0x0,ARM ETB
#1 Id:0x07B76F0F,IRLen:05,IRPrint:0x1,ARM1176 Core
确定了ARM11。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38975819/article/details/118353117

智能推荐

适合入门的8个趣味机器学习项目-程序员宅基地

文章浏览阅读86次。首发地址:https://yq.aliyun.com/articles/221708谈到机器学习,相信很多除学者都是通过斯坦福大学吴恩达老师的公开课《Machine Learning》开始具体的接触机器学习这个领域,但是学完之后又不知道自己的掌握情况,缺少一些实际的项目操作。对于机器学习的相关竞赛挑战,有些项目的门槛有些高,参加后难以具体的实现,因此造..._scrath五子棋下载

oracle 12c avg,Oracle 12c新特性系列专题-安徽Oracle授权认证中心-程序员宅基地

文章浏览阅读83次。原标题:Oracle 12c新特性系列专题-安徽Oracle授权认证中心 随着Oracle database 12c的普及,数据库管理员 (DBA) 的角色也随之发生了转变。 Oracle 12c数据库对 DBA 而言是下一代数据管理。它让 DBA 可以摆脱单调的日常管理任务,能够专注于如何从数据中获取更多价值。未来我们会推出基于Oracle12c的技术文章,帮助DBA尽快掌握新一代数据库的新特性..._ilm add policy row store compress advanced row after

第七周项目三(负数把正数赶出队列)-程序员宅基地

文章浏览阅读150次。问题及代码:*Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:负数把正数赶出队列.cpp *作者:张冰 *完成日期;2016年10月09日 *版本号;v1.0 * *问题描述: 设从键盘输入一整数序列a1,a2,…an,试编程实现: 当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai

Linux命名空间学习教程(二) IPC-程序员宅基地

文章浏览阅读150次。本文讲的是Linux命名空间学习教程(二) IPC,【编者的话】Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。而 LXC所实现的隔离性主要是来自内核的命名空间, 其中pid、net、ipc、mnt、uts 等命名空间将容器的进程、网络、消息、文件系统和hostname 隔离开。本文是Li..._主机的 ipc 命名空间

adb强制安装apk_adb绕过安装程序强制安装app-程序员宅基地

文章浏览阅读2w次,点赞5次,收藏7次。在设备上强制安装apk。在app已有的情况下使用-r参数在app版本低于现有版本使用-d参数命令adb install -r -d xxx.apk_adb绕过安装程序强制安装app

随便推点

STM32F407 越界问题定位_stm32flash地址越界怎么解决-程序员宅基地

文章浏览阅读290次。如果是越界进入硬件错误中断,MSP 或者 PSP 保存错误地址,跳转前会保存上一次执行的地址,lr 寄存器会保存子函数的地址,所以如果在 HardFault_CallBack 中直接调用 C 语言函数接口会间接修改了 lr,为了解决这个问题,直接绕过 lr 的 C 语言代码,用汇编语言提取 lr 寄存器再决定后面的操作。由于 STM32 加入了 FreeRTOS 操作系统,可能导致无法准确定位,仅供参考(日常编程需要考虑程序的健壮性,特别是对数组的访问,非常容易出现越界的情况)。_stm32flash地址越界怎么解决

利用SQL注入上传木马拿webshell-程序员宅基地

文章浏览阅读1.8k次。学到了一种操作,说实话,我从来没想过还能这样正常情况下,为了管理方便,许多管理员都会开放MySQL数据库的secure_file_priv,这时就可以导入或者导出数据当我如图输入时,就会在D盘创建一个名为123456.php,内容为<?php phpinfo();?>的文件我们可以利用这一点运用到SQL注入中,从拿下数据库到拿下目标的服务器比如我们在使用联合查询注入,正常是这样的语句http://xxx?id=-1 union select 1,'你想知道的字段的内容或查询语句',

Html CSS的三种链接方式_html链接css代码-程序员宅基地

文章浏览阅读2.9w次,点赞12次,收藏63次。感谢原文:https://blog.csdn.net/abc5382334/article/details/24260817感谢原文:https://blog.csdn.net/jiaqingge/article/details/52564348Html CSS的三种链接方式css文本的链接方式有三种:分别是内联定义、链入内部css、和链入外部css1.代码为:<html>..._html链接css代码

玩游戏哪款蓝牙耳机好?2021十大高音质游戏蓝牙耳机排名_适合游戏与运动的高音质蓝牙耳机-程序员宅基地

文章浏览阅读625次。近几年,蓝牙耳机市场发展迅速,越来越多的消费者希望抛弃线缆,更自由地听音乐,对于运动人士来说,蓝牙耳机的便携性显得尤为重要。但目前市面上的大多数蓝牙耳机实际上都是“有线”的,运动过程中产生的听诊器效应会严重影响听歌的感受。而在“真无线”耳机领域,除了苹果的AirPods外,可供选择的产品并不多,而AirPods又不是为运动场景打造的,防水能力非常差。那么对于喜欢运动又想要“自由”的朋友来说,有没有一款产品能够满足他们的需求呢?下面这十款小编专门为大家搜罗的蓝牙耳机或许就能找到适合的!网红击音F1_适合游戏与运动的高音质蓝牙耳机

iOS 17 测试版中 SwiftUI 视图首次显示时状态的改变导致动画“副作用”的解决方法-程序员宅基地

文章浏览阅读1k次,点赞6次,收藏7次。在本篇博文中,我们在 iOS 17 beta 4(SwiftUI 5.0)测试版中发现了 SwiftUI 视图首次显示时状态的改变会导致动画“副作用”的问题,并提出多种解决方案。

Flutter 自定义 轮播图的实现_flutter pageview轮播图 site:csdn.net-程序员宅基地

文章浏览阅读1.9k次。  在 上篇文章–Flutter 实现支持上拉加载和下拉刷新的 ListView 中,我们最终实现的效果是在 listView 上面留下了一段空白,本意是用来加载轮播图的,于是今天就开发了一下,希望能给各位灵感。一 、效果如下说一下大体思路   其实图片展示是用的 PageView ,然后,下面的指示器 是用的 TabPageSelector ,当然整体是用 Stack 包裹起来的。1、..._flutter pageview轮播图 site:csdn.net