设备树引入

一、设备树的基本知识

1、什么是设备树?为什么会有设备树?

        2011年,Linux之父Linus Torvalds发现这个问题后,就通过邮件向ARM-Linux开发社区发了一封邮件,不禁的发出了一句“This whole ARM thing is a f*cking pain in the ass”。之后ARM Linux社区引入了设备树。为什么LinusTorvalds会爆粗口呢?
        平台总线模型是把驱动分成了俩个部分,一部分是device,一部分是driver,设备信息和驱动分离这个设计非常的好。device部分是描述硬件的。一般device部分的代码会放在内核源码中arch/arm/plat-xxx和arch/arm/mach-xxx下面。但是随着Linux支持的硬件越来越多,在内核源码下关于硬件描述的代码也越来越多。并且每修改一下就要编译一次内核。长此以往Linux内核里面就存在了大量“垃圾代码”,而且非常多,这里说的“垃圾代码”是关于对硬件描述的代码。从长远看,这些代码对Linux内核本身并没有帮助,所以相当于Linux内核是“垃圾代码”。但是并不是说平台总线这种方法不好。

        为了解决这个问题,设备树就被引入到了Linux上。使用设备树来剔除相对内核来说的“垃圾代码”,既用设备树来描述硬件信息,用来替代原来的device部分的代码。虽然用设备树替换了原来的device部分,但是平台总线模型的匹配和使用基本不变。并且对硬件修改以后不必重新编译内核。直接需要将设备树文件编译成二进制文件,在通过bootloader传递给内核即可。

        所以设备树就是用来描述硬件资源的文件

2、设备树的基本概念

①为什么叫设备树?

设备树是描述硬件的文本文件,因为语法结构像树一样。所以叫设备树.

如下图:

②基本名词解释

<1>DT:DeviceTree //设备树
<2>FDT:Flattened Device Tree //开放设备树,起源于OpenFirmware(OF)
<3>DTS:DeviceTree source的缩写 //设备树源码
<4>DTSI:DeviceTree sourcein Clude的缩写 //通用的设备树源码
<5>DTB:DeviceTree Blob的缩写 //编译设备树源码得到的文件
<6>DTC:DeviceTree Compiler的缩写 //设备树编译器

DTS、DTSI、DTC、DTB之间的关系:

Linux内核通过读取设备树的描述文件(通常是.dtb或.dts文件),来构建一个内存中的表示,内核和驱动程序则使用这个表示来识别和配置硬件设备。设备树文件在编译时从设备树源文件(.dts)转换成二进制形式(.dtb),然后通常被包含在内核映像或者作为独立文件提供给引导加载程序

补充:

dts    

dts文件是一种ASCII文本格式的设备树描述文件,此文件适合人类阅读,主要是给用户看的。 硬件的相应信息都会写在.dts为后缀的文件中,每一款硬件可以单独写一份xxxx.dts,一般在Linux源码中存在大量的dts文件,对于 arm 架构可以在arch/arm/boot/dts找到相应的dts。对于rk3399开发板arch/arm/boot/dts/rk3399-nanopi4-common.dtsi中一般会包含一个公共部分的dtsi文件,如下:#include "rk3399-nanopi4-rkisp1.dtsi"

dtsi    

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值