【Linux驱动】Linux设备树(二)—— 添加设备树节点

编程入门 行业动态 更新时间:2024-10-28 13:23:50

【Linux驱动】Linux<a href=https://www.elefans.com/category/jswz/34/1769313.html style=设备树(二)—— 添加设备树节点"/>

【Linux驱动】Linux设备树(二)—— 添加设备树节点

了解了设备树的基本语法以后,就可以试着自己手动添加一个节点了,添加完节点以后,需要重新编译生成 .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 目录下就可以看到新添加的节点了

更多推荐

【Linux驱动】Linux设备树(二)—— 添加设备树节点

本文发布于:2023-12-04 09:49:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1660529.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:设备   节点   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!