当前位置: 首页 > article >正文

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指针停止的位置


http://www.kler.cn/a/401973.html

相关文章:

  • LPDDR4芯片学习(四)——DDR Training
  • uniApp项目运行到鸿蒙手机,应用图标一直是H,应用名一直是HBuilder问题
  • Soul App创始人张璐团队携多模态大模型参加GITEX GLOBAL,展现未来社交趋势
  • Javascript面试对象编程 - 手写apply call bind new
  • 远程办公用香港服务器合适吗?
  • leetcode400第N位数字
  • [Go实战]:SSE消息推送
  • 聚类分析 | MSADBO优化Spectral谱聚类优化算法
  • 群控系统服务端开发模式-应用开发-前端级别功能开发
  • 小红书内容推荐算法开发:利用API打造个性化用户体验
  • Android全局异常捕获
  • Android中常见内存泄漏的场景和解决方案
  • 代码辅助工具 GPT / Cursor
  • AWS EC2 ubuntu 使用密码登陆
  • 24.11.14 朴素贝叶斯分类 决策树-分类
  • 【算法】动态规划中01背包问题解析
  • uniapp 自定义加载组件,全屏加载,局部加载 (微信小程序)
  • git 基础之 merge 和 rebase 的比较
  • 运维面试题.云计算面试题之三ELK
  • VGG16-Pytorch实现人脸识别