设备树(2)-设备树在Linux系统的具体体现及内核解析设备树文件过程

衔接:设备树(1)-设备树是什么?设备树基础概念及语法

1.设备树在Linux系统中的体现

设备树所有节点及属性在文件系统中/proc/device-tree都表现为文件、文件夹
设备树(2)-设备树在Linux系统的具体体现及内核解析设备树文件过程_第1张图片
image.png
进入soc节点,soc节点下所有子节点和属性如下
设备树(2)-设备树在Linux系统的具体体现及内核解析设备树文件过程_第2张图片

2.特殊节点

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相同,大概调用过程如下:
image.png
image.png
设备树(2)-设备树在Linux系统的具体体现及内核解析设备树文件过程_第3张图片
这里先关注结果,不关注过程,之后实际用到了再来捋这个过程~

3.内核解析dtb文件

内核启动时解析dtb文件, 后在/proc/device-tree 目录 生成设备树节点文件,过程大概如下。
设备树(2)-设备树在Linux系统的具体体现及内核解析设备树文件过程_第4张图片
这里先不深度去跟踪整个解析流程,能看懂设备树,遇到问题能有解决思路,待之后实际用到遇到问题了,再开始来逐步学习,加强记忆。

下一篇便是设备树实战之LED驱动开发,当然什么都不如实战学的快啦

4.源码地址

哈喽~我是Embedded-Xin,沪漂嵌入式开发工程师一枚,立志成为嵌入式全栈开发工程师,成为优秀博客创作者,共同学习进步。
以上代码全部放在我私人的github地址,其中有许多自己辛苦敲的例程源码,供大家参考、批评指正,有兴趣还可以直接提patch修改我的仓库~:
https://github.com/Xuzhangxin/study_linux_project.git
觉得不错的话可以点个收藏和star~

你可能感兴趣的:(设备树,Linux驱动/内核编程,linux,运维,服务器)