设备树所有节点及属性在文件系统中/proc/device-tree都表现为文件、文件夹
进入soc节点,soc节点下所有子节点和属性如下
1) aliases 子节点
主要作用是定义别名
aliases {
can0 = &flexcan1;
can1 = &flexcan2;
ethernet0 = &fec1;
ethernet1 = &fec2;
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
i2c0 = &i2c1;
i2c1 = &i2c2;
i2c2 = &i2c3;
i2c3 = &i2c4;
mmc0 = &usdhc1;
mmc1 = &usdhc2;
serial0 = &uart1;
serial1 = &uart2;
serial2 = &uart3;
serial3 = &uart4;
serial4 = &uart5;
serial5 = &uart6;
serial6 = &uart7;
serial7 = &uart8;
spi0 = &ecspi1;
spi1 = &ecspi2;
spi2 = &ecspi3;
spi3 = &ecspi4;
usbphy0 = &usbphy1;
usbphy1 = &usbphy2;
};
这样的话,可以使用spi0访问节点
2)chosen子节点
用于uboot向linux传递数据,作用类似于bootargs
chosen {
stdout-path = &uart1;
};
/proc/device-tree/chosen 目录中,会有一个bootargs属性文件,其中内容和uboot阶段传入的bootargs相同,大概调用过程如下:
这里先关注结果,不关注过程,之后实际用到了再来捋这个过程~
内核启动时解析dtb文件, 后在/proc/device-tree 目录 生成设备树节点文件,过程大概如下。
这里先不深度去跟踪整个解析流程,能看懂设备树,遇到问题能有解决思路,待之后实际用到遇到问题了,再开始来逐步学习,加强记忆。
下一篇便是设备树实战之LED驱动开发,当然什么都不如实战学的快啦
哈喽~我是Embedded-Xin,沪漂嵌入式开发工程师一枚,立志成为嵌入式全栈开发工程师,成为优秀博客创作者,共同学习进步。
以上代码全部放在我私人的github地址,其中有许多自己辛苦敲的例程源码,供大家参考、批评指正,有兴趣还可以直接提patch修改我的仓库~:
https://github.com/Xuzhangxin/study_linux_project.git
觉得不错的话可以点个收藏和star~