首页/文章/ 详情

嵌入式学习(三)—调试工具J_Link介绍

1年前浏览1829

## 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。


来源:不懂幽默的秦二
电源ADS芯片控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-20
最近编辑:1年前
点墨设计
本科 | 高级硬件工程... 十年饮冰,难凉热血!
获赞 0粉丝 6文章 48课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈