SOC Boot学习(二)——JTAG Debug介绍

一、JTAG基础

JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。 JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。

如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。

主要用于芯片内部调试,debug问题

二、JTAG Debug Firmware

1. 调试协议

主要是指JTAG/SWD/CJTAG.

如要设置协议为swd: system.config.debugporttype swd

2. Down/Debug 操作

在调试过程中如果需要更改配置,例如多核,则需要切到Down/Nodebug状态。

3. prepare 操作

  • 复位芯片调试逻辑,初始化调试口和Coresight DAP模块
  • 调试器不连接内核,但可通过Coresight DAP->AP 访问AXI、AHB、APB总线
  • 当调试芯片时,可用于区分是cpu core的问题还是调试模块的问题,如果prepare都不能连接,说明调试端口有问题,可能是信号问题,也可能是DAP问题。
  • CPU core 异常时,通过DAP-AHB/AXI 总线访问物理内存和相关外设寄存器,进行异常分析

4. Attach 操作

维持芯片之前的运行状态,调试器直接连上。

  • 芯片跑飞进入异常时,保留现场,attach 上看当前芯片的PC指针和状态
  • 不需要复位的场景
  • 从核的调试

5. UP 操作

可对芯片进行复位,从复位的第一条指令开始调试(需芯片支持)

三、常用命令

  • list

调出list 窗口,显示当前PC指针附近的source代码(ASM或者HLL(C语言))

  • data.load

data.load <filename> [/<option>] 加载代码

  • data.load.binary <file> <address> |<range>[/<option>]: 加载二进制代码, 没有address的话,就是默认值(0地址)
  • data.load.elf <file>

option:

/nocode: 只加载符号表和调试信息,不加载任何代码

/noclear:用于多文件加载,不清楚前面加载的文件信息

/nosymbol:不加载符号表和调试信息

  • data.dump 0x80000000 //通过cache/mmu查看DDR
  • data.dump anc:0x80000000 //不经过cache/mmu 查看DDR
  • b.s 设置断点
  • v.f 调出当前的栈关系
  • d.list 查看pc指针停止的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-特立独行的猪-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值