了解了设备树的基本语法以后,就可以试着自己手动添加一个节点了,添加完节点以后,需要重新编译生成 .dtb 文件,然后保存到uboot的加载目录下。
目录
1、查看绑定信息文档
2、添加设备树节点
3、编译设备树文件(.dtb)
4、替换设备树文件(.dtb)
1、查看绑定信息文档
设备树是用来描述板子上的设备信息的,如果我们要在设备树中添加一个节点,添加的外设不同,反映到设备树的属性也不相同。那我们如何知晓我们添加的外设需要哪些属性呢?
Linux 内核源码中有详细的 .txt 文档描述了如何添加节点,而且还进行了详细的分类。(Documentation / devicetree / bindings)
假设我们要在根节点下添加一个新的节点,这里就参考 common-properties.txt,下面是 common-properties.txt 给出的一个示例:
2、添加设备树节点
我们在根节点下添加一个名为 alientek_led 的节点
#address-cells = <1> 表示只用一个u32类型的值便可以表示一个地址
#size-cells = <1> 表示只用一个u32类型的值便可以表示一个地址长度
compatible = "alientek_led" 表示兼容的驱动模块名为 alientek_led
status = "okay" 表示当前节点可被操作
reg 保存了寄存器地址和寄存器长度
alientek_led {#address-cells = <1>;#size-cells = <1>;compatible = "alientek_led";status = "okay";reg = <0x20C406C 0x04 /* CCM_CCGR1 */0x20E0068 0x04 /* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 */0x20E02F4 0x04 /* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 */0x209C004 0x04 /* GPIO1_GDIR */0x209C000 0x04 /* GPIO1_DR */>;
};
3、编译设备树文件(.dtb)
添加完节点以后,一般通过 make dtbs 来编译设备树,有的就在 dtbs 目录下直接输入 make dtbs,小编这里是在Linux内核源码的顶层目录下输入 make dtbs 进行编译的
4、替换设备树文件(.dtb)
小编这里开发板上电是通过 tftp 来加载镜像和设备树文件的,所以在设备树编译完毕后,需要替换原本tftp工作目录下的设备树文件。
cp arch/arm/boot/dts/imx6ull-alientek-emmc.dtb /usr/local/tftpboot/
重启开发板,在 /proc/device-tree 目录下就可以看到新添加的节点了