compatible设备节点中对应的节点信息已经被内核构造成struct platform_device 。驱动可以通过相应的函数从中提取信息 。compatible属性是用来查找节点的方法之一 , 另外还可以通过节点名或节点路径查找指定节点 。dm9000驱动中就是使用下面这个函数通过设备节点中的"compatible"属性提取相应的信息 , 所以二者的字符串需要严格匹配 。

文章插图

文章插图
address(几乎)所有的设备都需要与CPU的IO口相连 , 所以其IO端口信息就需要在设备节点节点中说明 。常用的属性有
- #address-cells , 用来描述子节点"reg"属性的地址表中用来描述首地址的cell的数量 ,
- #size-cells , 用来描述子节点"reg"属性的地址表中用来描述地址长度的cell的数量 。

文章插图
interrupts一个计算机系统中大量设备都是通过中断请求CPU服务的 , 所以设备节点中就需要在指定中断号 。常用的属性有
- interrupt-controller 一个空属性用来声明这个node接收中断信号
- #interrupt-cells , 是中断控制器节点的属性 , 用来标识这个控制器需要几个单位做中断描述符,用来描述子节点中"interrupts"属性使用了父节点中的interrupts属性的具体的哪个值 。一般 , 如果父节点的该属性的值是3 , 则子节点的interrupts一个cell的三个32bits整数值分别为:<中断域 中断 触发方式>,如果父节点的该属性是2 , 则是<中断 触发方式>
- interrupt-parent,标识此设备节点属于哪一个中断控制器 , 如果没有设置这个属性 , 会自动依附父节点的
- interrupts,一个中断标识符列表 , 表示每一个中断输出信号

文章插图

文章插图
gpiogpio也是最常见的IO口 , 常用的属性有
- "gpio-controller" , 用来说明该节点描述的是一个gpio控制器
- "#gpio-cells" , 用来描述gpio使用节点的属性一个cell的内容 , 即 属性 = <&引用GPIO节点别名 GPIO标号 工作模式>

文章插图
驱动自定义key针对具体的设备 , 有部分属性很难做到通用 , 需要驱动自己定义好 , 通过内核的属性提取解析函数进行值的获取 , 比如dm9000节点中的下面这句就是自定义的节点属性 , 用以表示配置EEPROM不可用 。

文章插图
VALUEdts描述一个键的值有多种方式 , 当然 , 一个键也可以没有值
字符串信息

文章插图
32bit无符号整型数组信息

文章插图
二进制数数组

文章插图
字符串哈希表
推荐阅读
- Linux驱动基础-Linux中设备分类
- 能源|德国给树木植入GPS防盗追踪器!原因想不到:居民疯抢木柴
- 老树私房茶是红茶吗?[红茶]
- 古树红茶的保质期[红茶]
- 想要学好Linux?这篇文章帮你“开窍”。
- 运维程序员最青睐的五种Linux系统管理工具
- 思科ASA防火墙常用配置
- 10 篇对初学者和专家都有用的 Linux 命令教程
- CentOS7修改主机名,hostname
- LINUX下构建DNS的基本主辅框架
