#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
"对应的基地址和大小为0x0
和0x1000
,"mem2"对应的基地址和大小为0x2000
和0x1000
。
64bit 寄存器 reg 属性描述
如果我们需要再dts中描述一个64bit的寄存器,需要怎么办?文章来源:https://www.toymoban.com/news/detail-576424.html
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”表示。文章来源地址https://www.toymoban.com/news/detail-576424.html
到了这里,关于【Linux 设备驱动系列 4 -- 设备树 64bit 寄存器 reg 属性描述 】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!