嵌入式 Linux 设备树中的标准属性详解
文章目录
前言
一、设备树简介
二、设备树的标准属性
2.1 compatible
2.2 reg
2.3 interrupts
2.4 clocks
2.5 status
2.6 phandle
总结
前言
在嵌入式 Linux 系统中,设备树(Device Tree)是一种描述硬件资源的数据结构,用于将硬件信息从内核代码中分离出来。设备树的引入极大地简化了嵌入式 Linux 系统的移植和维护工作。本文将详细介绍设备树中的标准属性。
一、设备树简介
设备树是一种树形结构的数据格式,用于描述硬件平台的资源信息,如 CPU、内存、外设等。设备树文件通常以 .dts(Device Tree Source)或 .dtsi(Device Tree Source Include)为扩展名,编译后生成 .dtb(Device Tree Blob)二进制文件,供内核使用。
二、设备树的标准属性
设备树中的标准属性是设备树规范中定义的属性,用于描述硬件设备的配置信息。以下是一些常见的标准属性:
2.1 compatible
compatible 属性用于描述设备的兼容性,内核通过匹配 compatible 属性来识别设备。一个设备可以有多个 compatible 值,内核会按顺序匹配,直到找到匹配的驱动。如下:
demo1: demo1@1000 {
compatible = "freescale,imx6ull", "freescale,mydevice-v2";
reg = <0x1000 0x100>;
};
2.2 reg
reg 属性用于描述设备的寄存器地址和大小。对于外设,reg 属性通常包含基地址和大小。如:
demo1: demo1@1000 {
compatible = "nxp,imx6ull";
reg = <0x1000 0x100>;
};
2.3 interrupts
interrupts 属性用于描述设备的中断信息。内核通过匹配中断号来处理设备的中断。如:
demo1: demo1@1000 {
compatible = "nxp,demo1";
reg = <0x1000 0x100>;
interrupts = <10 0>;
};
2.4 clocks
clocks 属性用于描述设备的时钟信息。内核通过匹配时钟号来配置设备的时钟。如:
demo1: demo1@1000 {
compatible = "nxp,demo1";
reg = <0x1000 0x100>;
clocks = <&clk1>, <&clk2>;
};
2.5 status
status 属性用于描述设备的当前状态。常见的值包括 okay(正常工作)和 disabled(禁用)。如:
demo1: demo1@1000 {
compatible = "nxp,demo1";
reg = <0x1000 0x100>;
status = "okay";
};
2.6 phandle
phandle 属性用于在设备树中引用其他节点。通过 phandle,可以实现设备之间的连接和配置。
demo1: demo1@1000 {
compatible = "nxp,demo1";
reg = <0x1000 0x100>;
phandle = <&my_device>;
};
demo2: demo2@2000 {
compatible = "nxp,demo2";
reg = <0x2000 0x100>;
clocks = <&my_device>;
};
总结
设备树中的标准属性是设备树规范中定义的属性,用于描述硬件设备的配置信息。通过合理使用这些标准属性,可以简化设备树的编写和维护工作。