当前位置:网站首页>设备树学习
设备树学习
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 匹配,名称一致将会匹配成功,意味着设备可以使用此驱动。
边栏推荐
- nodeJs--mime module
- Kunpeng compile and debug plug-in actual combat
- PHP to read data from TXT file
- 管理基础知识17
- MLX90640 红外热成像仪测温模块开发笔记(完整版)
- 【软件工程之美 - 专栏笔记】34 | 账号密码泄露成灾,应该怎样预防?
- IDEA找不到Database解决方法
- 【CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)(A~D)】
- Day11 Shell scripting basics
- 实现删除-一个字符串中的指定字母,如:字符串“abcd”,删除其中的”a”字母,剩余”bcd”,也可以传递多个需要删除的字符,传递”ab”也可以做到删除”ab”,剩余”cd”。
猜你喜欢

go笔记——map

测试点等同于测试用例吗

These 4 computer notepad software, you have to try

ERROR 1819 (HY000) Your password does not satisfy the current policy requirements

poker question

Identify memory functions memset, memcmp, memmove, and memcpy

Are test points the same as test cases?

Knowing the inorder traversal of the array and the preorder traversal of the array, return the postorder history array

【目标检测】FCOS: Fully Convolutional One-Stage Object Detection

Interview: Briefly describe a project you are involved in
随机推荐
期货公司开户实力经纪业务的规模
C语言实验十 函数(二)
管理基础知识10
Web开发
go笔记记录——channel
接口(第九天)
H5页面打开微信小程序
MInIO入门-03 秒传+大文件分片上传
C语言实现扫雷游戏
字符串分割函数strtok练习
Maxwell 一款简单易上手的实时抓取Mysql数据的软件
期货开户手续费加一分是主流
datagrip连接mysql数据库
第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
flv.js解析与使用
期货开户是否有资金门槛?
H5页面调用微信授权获取code
Constructor, this keyword, method overloading, local variables and member variables
Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)
Kotlin协程:创建、启动、挂起、恢复