设备树学习

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设备树学习相关的知识,希望对你有一定的参考价值。

活动地址:CSDN21天学习挑战赛

为什么要有设备树

一个厂家,生产了自家的一块板子,都想在 Linux kernel 中添加自家板子的支持文件,一般是 .c 文件。然而,世界那么大,全世界公用一个 Linux 工程,都往里面上传自家板子独有的代码。一方面会使 Linux 代码出现大量冗余,另一方面这些代码大都是没有多大技术含量的代码(相对于 Linux 进程调度、内存管理),再者,只有少数用到这个板子的人才会关心这部分代码,而要迫使全世界的开发人员都要下载这部分内容,也是浪费。
所以,一方面为了减少冗余、另一方面为了内核和硬件相对独立,从 Linux_2.6 开始引入设备树概念。即硬件信息在脚本里、驱动在 C 文件里。
对于同一款芯片的不同板子,相差的只是外设资源,这时候,我们只要提供不同板子对应的配置文件,也就是设备树就行了,这些板子完全可以使用同一个内核镜像。这才是嵌入式 Linux 开发该有的样子。

DTC、DTS、DTB

DTS(Device Tree Source)设备树源文件
DTC(Device Tree Compiler)设备树编译器
DTB(Device Tree Blob)设备树二进制文件
其中 DTS、DTC 存在内核源码中,DTB 使 DTS 经过 DTC 编译后的产物。编译内核时,make 工具先把 DTC 源文件编译出 DTC 工具 dtc,然后用 dtc 将 .dts 编译成 .dtb
在制作系统镜像时,会将 dtb 文件放在 flash 的一个区域内,在 Linux 启动时,由 bootloader 告诉 kernel dtb 文件位置,等到 kernel 启动时,会解析 dtb 文件。

设备树和驱动匹配

内核解析 dtb 文件,将其内容填充到 platform_device 结构体中。设备树节点中的 “compatible” 用来和 driver 匹配,名称一致将会匹配成功,意味着设备可以使用此驱动。

以上是关于设备树学习的主要内容,如果未能解决你的问题,请参考以下文章

机器学习WIFI室内定位

windows电脑vpn共享成wifi网络让所有电脑手机设备也能访问其它区域内网

iTOP4412设备树学习一

设备树DTS 学习:2-设备树语法

设备树学习:内核对设备树的处理

设备树学习笔记