基于JTAG的 芯片DEBUG 文章整理
·
- 基于JTAG的 芯片DEBUG 架构
CROSS_GDB <--RSP协议---> GDB SERVER(openocd) <--RDI协议--> USB转JTAG小板(openjtag) <-> core(riscv&arm)
^ |
| |
TELNET <--TELNET协议-----| |-----> PC机(带并口)上的软件 <-> core(riscv&arm)
RSP : Remote Serial Protocol 协议
https://sourceware.org/gdb/onlinedocs/gdb/Remote-Protocol.html
RDI : Remote Debug Interface 协议
// UM08001.pdf , 即 J-Link-J-Trace-User-Guide
// 供 iar,keil,ads 调用
// The J-Link RDI software is a remote debug interface for J-Link.
// It makes it possible to use J-Link with any RDI compliant debugger.
// The main part of the software is an RDI-compliant DLL, which needs to be selected in the debugger.
可以看到这里面有四个大块
GDB
OPENOCD
adapter
soc
针对每一块内容,我计划会用一系列文章来描述
GDB
0.gdb 编译为 riscv-gdb
1.gdb的 riscv 部分
2.gdb的命令部分
3.gdb的通信(与openocd)部分
https://ithelp.ithome.com.tw/articles/10197385
OPENOCD
0.openocd 编译
https://ithelp.ithome.com.tw/articles/10192529
1.openocd的gdb telnet服务器部分
https://ithelp.ithome.com.tw/articles/10193390
2.openocd的命令解析部分
https://ithelp.ithome.com.tw/articles/10193006
3.openocd的adapter(例如jlink)部分
https://ithelp.ithome.com.tw/articles/10193390
3.openocd的target(例如riscv)部分
https://ithelp.ithome.com.tw/articles/10193390
https://blog.csdn.net/u011011827/article/details/146833159
adapter
0.adapter的主芯片和电路图设计
openjtag
1.adapter的主机usb驱动协议栈部分
windows 驱动 或者 linux ko
2.adapter的从机usb驱动协议栈(发送接收)部分
STM32 OTG-FS/HS HID 或者 MSC
3.adapter的从机jtag(TDI与TDO)部分
4.adapter的从机(虚拟寄存器实现部)部分
soc // https://blog.csdn.net/u011011827/article/details/121149113
1.riscv的jtag状态机部分与ir_scan和dr_scan
2.riscv的DMT寄存器
3.riscv的DM寄存器
4.功能状态控制reset halt reset&halt resume poll
5.功能读取寄存器和内存
6.功能断点观察点
7.功能单步
还计划描述
应用场景1 : 单个命令
reset halt reset&halt resume poll
读寄存器
读内存
断点
单步
应用场景2 : 组合命令
1.下载二进制到ram并从ram启动的调试
2.下载到flash
3.下载二进制到flash并从flash启动的调试
jtag // soc与adapter的通信基础
1. TAP 及其 寄存器
2. 状态机
3. 线序
如何调试
1. gdb
set debug remote 1 //打印通信包,要在target remote 前 做
set logging file log_xxxxxxx
set logging on
#set logging off
set trust-readonly-sections off //强制发送jtag信号// ??? TODO
monitor debug_level xxx //设置 openocd 的打印等级, 要在 target remote 之后做
2. openocd
可通过 telnet或gdb 控制 打印等级 (debug_level xxx) // 打印log在日志文件中
3. adapter
adapter的调试看具体实现
---
adapter与soc的时序可以通过 逻辑分析仪 抓取
4. soc
gdb
openocd
根据 openocd 读码来做 , 不同的riscv debug设计, 时序可能不同
用户接口
如果用户要脱离这个框架,
比如要直接驱动jlink驱动,则要依据 ... 协议 // TODO
比如脱离gdb,要直接连接 gdbserver, 则要依据 ... 协议 // TODO
USB转JTAG小板
arm 有很多这样的小板
riscv 目前还没有 类似的产品 出现// TODO
openjtag
CMSIS-DAP v1 compliant dongle (HID)
CMSIS-DAP v2 compliant dongle (USB bulk)
- USB转JTAG小板 (一)
- [一个usb转jtag实现是否可以兼容所有的芯片设计]
jtag
arm-debug
riscv-debug
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)