最近在研究ARMv8-R的架构时,需要用到System Register,发现ARMv8-R的架构文档虽然有System register的summary,但未对System register的位域进行定义,下面提供一点思路,希望对大家如何找资料,提供点参考。
下面以ARM generic Timer(AGT)为例进行说明,简单介绍一下如何查找寄存器的详细定义。例如需要知道CNTV_CTL寄存器每1Bit的含义。
- 首先查阅芯片的内核Technical Reference文档
当前使用的Cortex-R52, 属于ARMv8-R架构。
ARM 网站链接:
https://developer.arm.com/documentation/100026/0103/?lang=en
- 内核文档列出了所有的System Register中AGT的寄存器表
不过下表并没有对每一个寄存器进行详细描述。
- 查阅ARMv8-R Architecture 文档
ARM官网链接:
https://developer.arm.com/documentation/ddi0568/a-c/?lang=en
发现这里列举了ARMv8-R和ARMv8-A的System register对比
- 由于在ARMv8-R相关文档中未列出详细描述,
上面又指明ARMv8-R与ARMv8-A的差异,现在直接去ARMv8-A的文档找寻答案。
ARM官网链接:
https://developer.arm.com/documentation/ddi0601/2022-12/?lang=en
- 可以找到CNTV_CTL寄存器的描述
- 小结
ARM中的三大系列产品,Cortex-A, Cortex-R, Cortex-M 很多架构是一致的,相关寄存器之间的描述也是相互关联的。所以在未找到相应型号内核的描述时,建议看看是不是有地方描述两种不同架构的差异,是Unchanged还是redefined。一般情况不是两种架构确实存在差异,都会是Unchanged,这样我们在学习A系列的知识时,完全可以沿用到R系列。