Linux为什么使用DeviceTree
2016-03-23 22:27
489 查看
为什么使用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 - 基础部分
相关文章推荐
- Linux Makefile与Shell的问题
- linux下比较文件
- linux下mysql数据库每天定时备份 --谷营中西软件科技园
- CentOS 如何将.deb 文件 转换.rpm
- CentOS 下安装apt-get
- linux c++线程池开发demo
- Linux高级编程(2)
- 《Linux内核设计与实现》读书笔记——第五章
- Centos 6.5升级到Git2.1.2的步骤
- linux mount (挂载命令)详解
- 《linux内核设计与实现》第十八章
- Linux 安装php sphinx模块
- Linux常用命令第二篇
- Linux内核协议栈(5) 跟踪bind系统调用
- linux下weblogic 工程,Spring的Trigger定时器自动shut_down报错信息记录(暂时没有定位到问题)
- 在kali linux206-01版本上安装vmtools一直不能用
- Linux内核协议栈(4) 跟踪sendto调用
- linux下安装Gnuplot
- linux目录作用详解(超详细,树状排版)
- Linux设备驱动之Ioctl控制