我的理解本质上还是复用。尤其是嵌入式领域,设备多种多样,但是很多设备接口都是标准的,或者大同小异。以前驱动开发可能每个设备商都去抄别家的搞进内核,这样造成了大量的垃圾代码。后面linux内核就把这些做成公共库抽象出来,后面设备只需要传入“我是什么设备”,那么linux就可以从内核中公共库找到需要的驱动,避免了很多质量不一的冗余代码,而且也方便了管理。
在设备树中,涉及到的文件主要是DTS,DTSI,还有DTB。
基本流程是编译前编写DTS(有一个DTSi,可以视为厂商的DTS头文件,可以提取一些共性数据),之后会通过DTC编译成DTB,通过Bootloader传给kernel。
还是整理一下疑问吧。(TODO)
1 DTS写的驱动只是一个配置,那么真实的驱动在哪里?
2 从上面的描述看Bootloader和Kernel是共用一个DTS,是怎么实现的?
3 DTS编写的规则。
4 增加一个常用设备,是什么流程?
5 增加一个全新设备,又是什么流程?
这篇真的写的比较全:
Linux DTS (Device Tree Source)设备树源码_设备树编译源文件-CSDN博客