请教DTS文件中reg字段地址含义:为何含8个值?我的猜测是否正确?
Device Tree中reg字段8个值的含义及你的猜测纠正
首先明确:你给出的reg字段包含两组独立的内存区域定义,每组4个值对应一个硬件寄存器块,格式是针对32位地址空间的扩展写法(也兼容64位场景),具体拆分:
- 每组格式:
<地址高32位 地址低32位 长度高32位 长度低32位>
对应你的代码片段:
reg = <0x00 0x13aa2000 0x00 0x1000 0x00 0x13ab2000 0x00 0x1000>;
拆分后是两个独立区域:
第一区域:
0x00 0x13aa2000 0x00 0x1000- 起始地址:
0x00 << 32 | 0x13aa2000= 0x13aa2000 - 区域长度:
0x00 <<32 | 0x1000= 0x1000(即4KB) - 覆盖地址范围:
0x13aa2000 ~ 0x13aa2fff
- 起始地址:
第二区域:
0x00 0x13ab2000 0x00 0x1000- 起始地址:0x13ab2000
- 区域长度:0x1000
- 覆盖地址范围:
0x13ab2000 ~ 0x13ab2fff
你的猜测不正确——这不是一个从0x13aa2000到0x13ab2000的连续大区域,而是两个独立且地址不连续的4KB寄存器块,分别对应ARM SMMUv3 PMCG(性能监控单元)的不同功能寄存器组(比如一组负责全局配置,另一组负责事件计数与统计)。
内容的提问来源于stack exchange,提问作者megamind
相关产品推荐
相关产品推荐

