Linux为什么使用DeviceTree

为什么使用DeviceTree

介绍DeviceTree之前先看一下Linux内核中设备注册到系统的方式有哪些:
1. 硬编码(Hard Coding)到板级信息文件中(即一些静态数组、结构体)
2. 将设备信息存放到DeviceTree文件中

实际上不止以上两种解决方案,描述板级设备细节的方案还有ACPI(应用在x86平台上)以及UEFI(Intel首推),ARM是UEFI Form的成员,因此后续ARM平台有可能会使用这种解决方案

对于方式1,内核在Early Boot阶段根据板级信息文定义的设备信息解析并注册设备到设备模型中。这种方式简单粗暴,带来的后果则是内核充斥着大量的用于描述设备信息的静态数据结构,而这些代码使得内核源码越来越臃肿(每新增一个设备,都需要在arch/xxx/mach-xxx/目录下添加静态的数据结构描述板级设备信息)。

对于方式2,设备信息以及层级关系被描述在DT文件中,并编译成二进制文件(DTB),由Bootloader将DTB装载到RAM中并将地址传递给Kernel,Kernel启动时解析DTB并生成和注册其中描述的设备。

显然,使用DT来描述设备信息和层级关系是一种更为先进的方法,同一个编译好的Kernel只需更换DTB文件就可以适配新的硬件(当然,实际并非如此简单),同时设备信息与Kernel独立开来各司其职,使得整个系统结构更清晰,源码不在臃肿。

事实上目前绝大多数架构都已经支持DT,PowerPC最早使用了这项技术(或许应该说是OpenFirmware的产物),ARM架构的维护者们比较懒惰,直到始祖Linus的一声怒吼,ARM Linux社区才得以重视,开始使用了其他架构中早已使用的DT。

下一篇将介绍有关Linux Device Tree的基本知识点:包括dt文件结构、语法、dts、dtsi、dtb、dtc等
浅析Linux Device Tree - 基础部分

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值