您好!:
我在使用am3354,想使用memory—map接口编程Debug Unit单元,查看了Arm手册,上面只给出偏移地址共4KB,但是TI的手册上也没有给出基地址,我想知道如何获得Debug Unit的基地址?
Jian Zhou:
请问具体是哪个模块的debug unit?
qing liu3:
回复 Jian Zhou:
您好!:
我的理解应该是CPU模块的Debug Unit,并不是某个外设的,以下是ARM cortex-a8手册中提供的信息:,文中指出了基地址应该是4K对齐的,但并未说明基地址的具体位置,所以我的理解是TI设计了基地址的位置,而335x手册的memory map中也没有具体说明,我想知道这个基地址是多少?,谢谢您的回答
Jian Zhou:
回复 qing liu3:
你这个表是从AM335x 的TRM中看到的吗?我看到AM335x TRM的最后一章即第27章描述了debug subsystem,模块的寄存器基地址是0x4B160000,从TRM的table2-1中可以查到
qing liu3:
回复 Jian Zhou:
您好!:
这个表是从来自于ARM的《Cortex™-A8 Revision: r3p2 Technical Reference Manual》P12-6中看到的,上面说偏移为0的寄存器为Debug ID Register,因此我在CCS中将r0赋值为你提供的基地址0x4B160000,之后用LDR r0, [r0] 读取寄存器,得到的结果是0x42112902,而在P12-6中还指出可以用如下指令读取Debug ID Register MRC p14, 0, <Rd>, c0, c0, 0,得到的结果是0x15141032,显然是矛盾的,因此Debug subsystem和Debug Unit的基地址应该是不同的。
qing liu3:
回复 qing liu3:
另外,从CP15_DEBUG_FEATURE_0(内容为0x00010400)来看,芯片确实实现了DebugUnit的Memor-Map接口,《Cortex™-A8 Revision: r3p2 Technical Reference Manual》P3-25:中有说明,但是同时也未指出DebugUnit的基地址
Jian Zhou:
回复 qing liu3:
这应该是ARM核内部的某个寄存器了,和AM335x的寻址空间的基地址没有关系了
Pingchuan Ma:
回复 Jian Zhou:
我也郁闷在这儿了,TI的朋友帮忙追踪一下嘛,非常感谢。
我在这儿也问了:
http://e2e.ti.com/support/arm/sitara_arm/f/791/t/334614.aspx
Pingchuan Ma:
回复 Pingchuan Ma:
这个基地址理论上可以从DRAR(MRC p14, 0, <Rd>, c1, c0, 0) and DSAR(MRC p14, 0, <Rd>, c2, c0, 0)来读,可是我读出来都是0. 郁闷啊……
Yaoming Qin:
回复 Pingchuan Ma:
这个是在协处理CP14上的,不是在内存空间,所以不需要基地址。
我的理解,这个协处理器主要用于JTAG的调试,正如e2e上的人回复,可以使用ti的JTAG+CCS调试。
而ti的JTAG和ARM cortex-A8的一般的SOC还是有区别的,所以,这里,你直接读取可能会出错。
另外,你可以参考 http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/223624.aspx 在ti的CCS上看看CP14的寄存器。