cortex-M debug 的实现都是 coresight
cortex-M4 属于 cortex-M
cortex-M4/M1 都只有一种DP(虽然可实现为多种,但是一旦实现,就只有一种DP) 和一个AP(可实现就为一种,为AHB-AP)
对于 JTAG-DP 寄存器的访问
1. 走 IR 链, 选中 DPACC // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P146
2. 走 DR 链, 读写 DPACC 下的某个 寄存器 // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P185
在 JTAG-DP 存在的情况下,对 AHB-AP寄存器的访问
1. 走 IR 链,选中APACC // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P146
2. 走 DR 链, 写 DPACC 下的 "AP Select Register" 选中 某个AP的某个BANK // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P185
// 此时已经选中 某个AP的某个BANK,假设步骤2 TDI 为0x04,则选中了 AHB-AP 的bank0
// 一个bank中有四个寄存器,用 两个(A[3:2]) 二进制位寻址
// 系统中只有一个DPACC,DPACC只有一个bank
// 系统中有m个 APACC,APACC有n个bank
// 所以对于 DPACC, 选中DPACC就选中了 唯一的bank
// 所以对于 APACC, 选中m和n才选中 唯一的bank
3. 走 IR链, 选中 APACC // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P146
4. 走 DR链, 读写 APACC 下的某个 寄存器 // 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P201
IR寄存器的 TDI
同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P146
0b1000 ABORT
0b1010 DPACC
0b1011 APACC
0b1110 IDCODE
0b1111 BYPASS
DPACC/APCCC寄存器的TDI
TDI[0]
0 : write
1 : read
TDI[2:1]
对于 DPACC(唯一的bank) : 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P185
00 : reserved
01 : DP Control/Status Register
10 : Select Register
11 : Read Buffer
对于 APACC(AHB-AP的bank0) : 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P201
00 : Control/Status Word, CSW
01 : Transfer Address, TAR
10 : reserved
11 : Data Read/Write, DRW
对于 APACC(AHB-AP的bank1) : 同级寄存器列表在 DDI0413C_cortexm1_r0p1_trm.pdf 的 P201
00 : BD0
01 : BD1
10 : BD2
11 : BD3
对于 APACC(MEM-AP的bank0) :
00 : ...
01 : ...
10 : ...
11 : ...
TDI[34:3]
对于write,标识写入数据
对于read, ignore
上一篇:处理器架构 (四) ARM指令集
下一篇:ARM cortex-M4 jtag 读取 dp 和 ap 寄存器 实例 解读