1) 引言
Linux作为当前流行的操作系统,其在驱动的架构上面也是不断的进步和完善。在早期的Linux内核和ARM架构中并没有采用设备树, 因此Liunx驱动代码中包括大量冗余代码来描述对应平台的板信息,尤其是ARM架构平台。随着移动智能设备的迅猛发展,ARM架构芯片每年推出数百款,从而造成Linux内核板信息过多,使得linux内核虚胖。
当 Linux之父 linus看到 ARM社区向 社区向 Linux内核添加了大量“无用”、冗余的板级信息文件,不禁发出了一句“ This whole ARM thing is a f*cking pain in the ass”。从此以后 ARM社区就引入了PowerPC等架构已经采用的设备树(Flattened Device Tree)来解决这个问题。
2) 设备树官方信息
官网: https://www.devicetree.org/
截止当前规范版本:v0.3
3) DAY2 笔记
2.2.4 属性
设备树的每个节点包含属性,其描述节点的特性。属性包含一个名称和值。
-
属性名称
属性名字由表2.2中例出的1-31个字符组成的字符串
非标准属性名称必须制定一个位于的字符串前缀,例如通常的标识,公司或组织名称标识表示属性,如:
fsl,channel-fifo-len
ibm, ppc-interrrupt-server#s
linux,network-index -
属性值
属性值由一组0或更多字节,其包含与属性相关的信息。
如果转换真-假信息,属性可能包含空值。在这种情况下,属性是否存在被显示描述。
表2.3 描述DTSpec定义的一组基本值类型。
2.3 标准属性
DTSpec对设备节点定义了一组标准属性。这些属性将在本章详细描述。
DTSpec定义的设备节点可能附加更多要求或限制。
2.3.1 compatible
属性名称: compatible
值类型:
描述:
compatible 属性值包含一个或多个字符串,其定义设备的特定编程模型。这个字符串列表应有设备驱动客户端程序选择。该属性值包含null结尾字符串列表,由大部分特殊到通用。他们可以允许一个设备树描述其对一个系列类似器件的兼容性,即可允许一个设备驱动匹配多个设备。
推荐格式: “manufacturer, model”, manufacturer为代表制造厂商的名称,model指定型号数字。
例如:
compatibel = “fsl, mpc8641”, 'nsl6550";
该示例中,一个操作系统会先尝试定位支持fsl,mpc8641的驱动,如果没找到,则会厂商寻找支持更通用的nsl6550设备驱动。
4) 关注我
****我的公众号****