当前位置:网站首页>设备树学习
设备树学习
2022-08-02 00:33:00 【Li-Yongjun】
活动地址: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 匹配,名称一致将会匹配成功,意味着设备可以使用此驱动。
边栏推荐
猜你喜欢
随机推荐
Business test how to avoid missing?
期货开户手续费加一分是主流
Are test points the same as test cases?
go笔记——锁
Constructor, this keyword, method overloading, local variables and member variables
好的期货公司开户让人省心省钱
flyway的快速入门教程
Flink_CDC搭建及简单使用
第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
抖音数据接口API-获取用户主页信息-监控直播开启
冒泡排序函数封装
JS中对事件代理的理解及其应用场景
from origin ‘null‘ has been blocked by CORS policy Cross origin requests are only supported for
测试点等同于测试用例吗
C语言实验六 一维数组程序设计
Go 1.18 的那些事——工作区、模糊测试、泛型
Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)
DOA从一维阵列传感说起
Redis 相关问题