ARM cortex-M4 DAP 访问 方法总结


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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值