当前位置:网站首页>设备树学习
设备树学习
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 匹配,名称一致将会匹配成功,意味着设备可以使用此驱动。
边栏推荐
- Pytorch seq2seq 模型架构实现英译法任务
- 23.卷积神经网络实战-ResNet
- Business test how to avoid missing?
- String splitting function strtok exercise
- 信息收集之cms指纹识别
- 【CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)(A~D)】
- Unknown CMake command "add_action_files"
- ICML 2022 || 局部增强图神经网络GNN,在 GCN 和 GAT基础上 平均提高了 3.4% 和 1.6%
- 简单工厂模式
- Flink_CDC搭建及简单使用
猜你喜欢

Redis - message publish and subscribe

Microsoft PC Manager V2.1 beta version officially released

内部类、异常简单介绍(第十天)

go泛型使用方法

Looking back at 5 recessionary times in history: How might this time be different?

Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)

input禁止输入

Are test points the same as test cases?

第 45 届ICPC亚洲区域赛(上海)G-Fibonacci

632. Minimum interval
随机推荐
管理基础知识19
思维导图,UML在线画图工具
哪里有期货开户的正规途径?
第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
管理基础知识18
632. Minimum interval
Markdown (CSDN) MD编辑器(四)- 漂亮表格(表格背景色、跨行、跨列)
技术分享 | 接口测试中如何使用Json 来进行数据交互 ?
MInIO入门-03 秒传+大文件分片上传
管理基础知识16
JS中localStorage和sessionStorage
Day11 shell脚本基础知识
管理基础知识20
Angr(十二)——官方文档(Part3)
String splitting function strtok exercise
How to use the go language standard library fmt package
期货开户交返是行内公开的秘密
管理基础知识14
Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)
JS中清空数组的方法