东莞大朗网站建设,科技公司网站开发,网站建设注意事项 南京,php开发网站建设书籍一. 简介
前面几篇文章学习了 关于设备树文件的编译#xff0c;设备树文件的调用。
本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性
1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件#xff0c;每…一. 简介
前面几篇文章学习了 关于设备树文件的编译设备树文件的调用。
本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性
1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件每个设备都是一个节点叫做设备节点每个节点都通过一些属性信息来描述节点信息属性就是 键—值对。以下是从 imx6ull.dtsi 文件中缩减出来的设备树文件内容 / {aliases {can0 flexcan1;};cpus {#address-cells 1;#size-cells 0;cpu0: cpu0 {compatible arm,cortex-a7;device_type cpu;reg 0;};};intc: interrupt-controller00a01000 {compatible arm,cortex-a7-gic;#interrupt-cells 3;interrupt-controller;reg 0x00a01000 0x1000,0x00a02000 0x100;};
} 可以看出第 1 行“/” 是根节点每个设备树文件只有一个根节点。细心的同学应该会发现imx6ull.dtsi 和 imx6ull-alientek-emmc.dts 这两个文件都有一个 “/” 根节点这样不会出错吗不会的因为 这两个“/”根节点的内容会合并成一个根节点。 第 2 、 6 和 17 行 aliases 、 cpus 和 intc 是三个子节点在设备树中节点命名格式如下 node-nameunit-address 其中 “ node-name ” 是节点名字为 ASCII 字符串节点名字应该能够清晰的描述出节点的 功能比如“ uart1 ”就表示这个节点是 UART1 外设。“ unit-address ”一般表示设备的地址或寄 存器首地址如果某个节点没有地址或者寄存器的话“ unit-address ”可以不要例如 “ cpu0 ”、 “ interrupt-controller00a01000 ”。 在上面的设备节点中 我们看到的节点命名却如下所示 cpu0:cpu0 上述命令并不是 “ node-nameunit-address ” 这样的格式而是用“”隔开成了两部分这里的 “” 前面的是节点标签 (label) “”后面的才是节点名字格式如下所示 label: node-nameunit-address 引入 label 的目的就是为了方便访问节点可以直接通过 label 来访问这个节点例如通过 cpu0 就可以访问 “ cpu0 ” 这个节点而不需要输入完整的节点名字。 第 10 行cpu0 也是一个节点只是 cpu0 是 cpus 的子节点。 2. 设备树中常见的击中数据形式 每个节点都有不同属性不同的属性又有不同的内容属性都是键值对值可以为空或任 意的字节流。设备树源码中常用的几种数据形式如下所示 ①、字符串 compatible arm,cortex-a7; 上述代码设置 compatible 属性的值为字符串“ arm,cortex-a7 ”。 ②、32 位无符号整数 reg 0; 上述代码设置 reg 属性的值为 0 reg 的值也可以设置为一组值比如 reg 0 0x123456 100; ③、字符串列表 属性值也可以为字符串列表字符串和字符串之间采用“ , ”隔开如下所示 compatible fsl,imx6ull-gpmi-nand, fsl, imx6ul-gpmi-nand; 上述代码设置属性 compatible 的值为“ fsl,imx6ull-gpmi-nand ”和“ fsl, imx6ul-gpmi-nand ”。