内存映射设备

it2022-05-09  19

#size-cells 声明每个子节点的 reg 元组中长度字段的大小

/ {     #address-cells = <1>;     #size-cells = <1>; gpio@101f3000 {         compatible = "arm,pl061";         reg = <0x101f3000 0x1000                0x101f4000 0x0010>;     }; };

这个例子中为 GPIO 分配了两个地址范围:0x101f3000...0x101f3fff 和 0x101f4000..0x101f400f。

一些挂在总线上的设备有不同的编址方案,由于父节点会为其子节点定义地址域,所以可以选择不同的地址映射来最恰当的描述该系统

external-bus {         #address-cells = <2>         #size-cells = <1>;         ethernet@0,0 {             compatible = "smc,smc91c111";             reg = <0 0 0x1000>;         };         i2c@1,0 {             compatible = "acme,a1234-i2c-bus";             reg = <1 0 0x1000>;             rtc@58 {                 compatible = "maxim,ds1338";             };         };         flash@2,0 {             compatible = "samsung,k8f1315ebm", "cfi-flash";             reg = <2 0 0x4000000>;         };     };

外部总线的地址值 #address-cells = <2>使用了两个 cell,一个用于片选号;另一个则用于片选基址的偏移量(具体这两个是什么含义不同的驱动有不同的定义,你也可以按自己的意图,这里使书面说明,嘿嘿

长度字段#size-cells = <1>;单个 cell,这是因为只有地址的偏移部分才需要一个范围量

由于地址域是包含于一个节点及其子节点的,所以父节点可以自由的定义任何对于该总线来说有意义的编址方案。

  

转载于:https://www.cnblogs.com/liushuhe1990/p/9671929.html

相关资源:数据结构—成绩单生成器

最新回复(0)