Linux设备树(Linux Device Tree)


5.1Linux设备树简介

在这里插入图片描述

设备树:是一种描述硬件的数据结构,Linux3.x以后的版本才引入了设备树,不是将设备的每个细节都硬编码到操作系统中,而是可以在引导时传递给操作系统的数据结构中描述硬件的许多方面。设备树由OpenFirmware、OpenPOWER抽象层(OPAL)、电源架构平台需求(PAPR)和独立的扁平设备树(FDT)形式使用。
在早些的linux内核,这些“硬件平台的板级细节”保存在linux内核目录“/arch”,
以ARM平台为例“硬件平台的板级细节”保存在“/arch/arm/plat-xxx”和“/arch/arm/mach-xxx”目录下。

5.2设备树和内核的关系

在这里插入图片描述

设备树是描述一个硬件平台的硬件资源。这个“设备树”可以被bootloader(uboot)传递到内核, 内核可以从设备树中获取硬件信息。在操作系统(OS)引导阶段进行设备初始化(DTB文件在linux内核启动的时候内核解析),解析之后设备树就被放到内存在上(逻辑结构:树状结构)。如果某个驱动需要使用设备信息,直接从设备树上获取对应的设备信息即可。

5.3设备树硬件资源

1、树的主干就是系统的总线,在设备树里称为“根节点”。比如I2C控制器,SPI控制器,CAN控制器等都是接到系统主线上的分支,在设备树上称为“根节点的子节点”
2、设备树可以像头文件(.h)那样,一个设备文件引用另一个设备文件,实现“代码”的重用(复用),例如GEC6818是一款基于ARM公版开发板的产品,它采用了S5P6818芯片作为处理器,如果多个硬件平台都是用S5P6818芯片作为主控芯片,那么我们可以把S5P6818芯片的硬件资源写到一个单独的设备树文件里面一般使用“.dtsi”后缀,其他设备树文件直接使用“#includexxxx”引用即可。

DTS、DTC和DTB它们是文档中常见的几个缩写:

  • DTS 是指.dts格式的文件,是一种ASII 文本格式的设备树描述,也是我们要编写的设备树源码,一般一个.dts文件对应一个硬件平台,位于Linux源码的“/arch/arm/boot/dts”目录下。
  • DTC 是指编译设备树源码的工具,一般情况下我们需要手动安装这个编译工具。
  • DTB 是设备树源码编译生成的文件,类似于我们C语言中“.C”文件编译生成“.bin”文件。
    dtb通过Bootloader引导程序加载到内核。
    三者关系

5.4设备树框架

打开内核源码路径>
在这里插入图片描述

查看设备树的框架和语法

*设备树根节点*/
/ {
   
    model = "imx6ull 正点原子";		/*model属性,用于指定设备的制造商和型号*/
        compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";	/*compatible属性,系统用来决定绑定到设备驱动的关键,用来查找节点的方法之一*/

    	/*根节点的子节点*/
        chosen {
   
                stdout-path = &uart1;
        };
		
    	/*根节点的子节点*/
        memory@80000000 {
   
                device_type = "memory";
                reg = <0x80000000 0x20000000>;
        };

    	/*根节点的子节点*/
        reserved-memory {
   
                #address-cells = <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林同学_ioT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值