当前位置:网站首页>设备树学习
设备树学习
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 匹配,名称一致将会匹配成功,意味着设备可以使用此驱动。
边栏推荐
- GateWay实现负载均衡
- Flink_CDC搭建及简单使用
- Debian侵犯Rust商标,妥协改名还是会得到豁免?
- IDEA版Postman插件Restful Fast Request,细节到位,功能好用
- H5页面调用微信授权获取code
- Kunpeng compile and debug plug-in actual combat
- go mode tidy出现报错go warning “all“ matched no packages
- 管理基础知识9
- Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
- Microsoft PC Manager V2.1 beta version officially released
猜你喜欢

Go 1.18 的那些事——工作区、模糊测试、泛型

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

网络请求技术--跨域

c语言字符和字符串函数总结(二)

期货开户调整交易所保证金标准

FlinkSQL CDC实现同步oracle数据到mysql

期货开户交返是行内公开的秘密

冒泡排序函数封装

Why is on-chain governance so important, and how will Polkadot Gov 2.0 lead the development of on-chain governance?

Business test how to avoid missing?
随机推荐
Are test points the same as test cases?
DFS详解
扫雷小游戏
Redis的集群模式
feign异常传递的两种方式 fallbackfactory和全局处理 获取服务端自定义异常
Microsoft PC Manager V2.1 beta version officially released
Day.js 常用方法
IDEA版Postman插件Restful Fast Request,细节到位,功能好用
go笔记之——goroutine
JS中对事件代理的理解及其应用场景
poker question
傅立叶变换相关公式
632. Minimum interval
Mapped Statements collection does not contain value for的解决方法
FlinkSQL CDC实现同步oracle数据到mysql
How to use the go language standard library fmt package
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
Don't concatenate strings with jOOQ
swing的Jlist列表滚动条以及增加元素的问题
管理基础知识18