【Linux 设备驱动系列 4 -- 设备树 64bit 寄存器 reg 属性描述 】

#address-cells 和#size-cells 属性

address-cells:address要用多少个32位数来表示;
size-cells:size 要用多少个32位数来表示。

32bit 寄存器 reg 属性描述

在 Linux 设备树(Device Tree)语法中,"reg"和"reg-names"属性是用于描述设备资源的主要属性。
"reg"属性用于描述设备的物理地址和大小。它是一个32位或64位的整数数组,每个数组元素对应一个设备资源,如内存区域、寄存器等。数组的第一个元素通常是设备的基础地址,其后紧跟的是设备大小。

"reg-names"属性用于给"reg"属性中的每一个设备资源命名,这样在驱动程序中可以通过名字来引用特定的设备资源,而不是通过索引。"reg-names"属性的值是一个字符串数组,数组中的每个字符串对应"reg"属性中的一个设备资源。

"reg"和"reg-names"属性之间的对应关系是通过数组索引来建立的,也就是说,"reg"属性中的第 n 个设备资源对应"reg-names"属性中的第n个字符串。例如,如果一个设备有两个内存资源,其"reg"属性为<0x0 0x1000 0x2000 0x1000>,“reg-names"属性为"mem1”, “mem2”,那么"mem1"对应的基地址和大小为0x00x1000,"mem2"对应的基地址和大小为0x20000x1000

64bit 寄存器 reg 属性描述

如果我们需要再dts中描述一个64bit的寄存器,需要怎么办

        stm: stm@58010000 {
                compatible = "arm,coresight-stm", "arm,primecell";
                reg =   <0 0x58010000 0 0x10000>,
					    <0x0000003B 0xB0000000 0 0x1000000>;
                reg-names = "stm-base", "stm-stimulus-base";

如代码所示, stm-base 的地址为32bit的,为0x58010000, 大小为0x10000。stm-stimulus-base的地址为64bit, 开始地址为0x3BB0000000。所以对于64bit的地址,其高32bit用 reg中的“第一个 32bit”, 低32bit 用“第2个32bit”表示。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值