首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
豆哥a
燕山大学 嵌入式软件开发
发布于北京
关注
已关注
取消关注
@爱打球的程小员许乔丹:
安卓系统面经_安卓面经(9/20)Kernel 设备树解析
牛客高级系列专栏: 安卓(安卓系统开发也要掌握) 想通关安卓面试,请看:《150道安卓高频面试题目录及答案链接》 想通关安卓系统面试,请看:《140道安卓系统Framework面试题目录及答案链接》 想进阶安卓开发,请看:《Android进阶知识体系解析_15大安卓进阶必备知识点》 想了解安卓APP完整开发流程,请看:《安卓APP完整开发流程》 想掌握安卓App性能优化,请看:《安卓性能优化讲解和实战专栏》 想掌握Gradle语法,制作Gradle插件,请看:《安卓Gradle语法解析和实践大全》 嵌入式 想通关嵌入式面试,请看: 《111道嵌入式面试题目录及答案链接》 想多掌握几个嵌入式项目,请看:《6个嵌入式项目交流分享(附源码)》 本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人从嵌入式Linux转Android系统开发过程中对常见安卓系统开发面试题的理解; 1份外卖价格助您提高安卓面试准备效率,为您面试保驾护航!! 正文开始⬇ 1 概念 1.1 什么是设备树dts(Device Tree)? Linux内核使用DTS(Device Tree Source)和DTB(Device Tree Binary)来描述嵌入式设备的硬件结构。DTS是机器可读的文本文件,其中包含设备树的节点和属性,DTB是由DTS编译器生成的二进制文件。 在Linux内核启动时,会使用bootloader将DTB加载到内存中,并在内核启动时将DTB解析成设备树形式。设备树是一种层级结构,类似于文件系统,用于描述硬件设备的结构和属性,可以枚举硬件组件并在Linux内核中实例化它们。 设备树的节点(node)和属性(property)描述了硬件设备的结构和属性。每个节点包含了一个设备的信息,而每个属性用来描述该设备的某个方面。设备树可以包含多个节点,每个节点都有一个节点名和一个父节点路径。节点名通常用于标识该节点所代表的硬件设备,而父节点路径用于描述硬件设备的层次结构。 设备树通常包含以下几类节点: 根节点:设备树中唯一的顶层节点,在Linux内核启动后创建,包含其他所有设备树节点。 SoC节点:描述处理器芯片的节点,例如CPU、GPU、DMA等。 总线节点(例如I2C、SPI、PCI、USB):描述连接SoC外设的总线控制器。 设备节点:描述连接到总线上的具体硬件设备。 逻辑设备节点:描述与设备相关的逻辑设备,例如网络接口、串口、LED等。 对于一个设备树节点,可以具有以下属性: compatible:设备的型号、品牌和版本信息。 reg:设备的注册地址,用于描述设备内存和寄存器的物理地址。 interrupt-parent和interrupts:用于描述设备中断,并指定中断控制器的地址。 clock:描述设备时钟的信息。 在设备树中,节点和属性都是用DTS语言编写的。DTS语言支持以下语法: 所有语句均以分号结尾。 节点使用中括号,属性使用尖括号。 属性名和属性值之间使用冒号。 属性值可以是整数、字符串、布尔变量等。 以下是一个简单的DTS示例,用于描述一个GPIO设备。 /dts-v1/;/ { gpio { compatible = "linux,gpio"; reg = <0x40 0x10>; gpio-controller; #gpio-cells = <2>; };}; 以上内容应该可以让你对Linux Kernel的DTS有一个初步的认识。 1.2 使用设备树有哪些优势? Linux内核从3.x版本之后开始支持使用设备树,这样做的意义重大,可以实现驱动代码与设备的硬件信息相互的隔离,减少了代码中的耦合性。 使用设备树具有以下优势: 可移植性好:设备树可以描述硬件设备的结构和属性,从而使得嵌入式系统的驱动程序更加具有可移植性,可以在不同的平台、不同的SOC上使用相同的驱动程序。 软件与硬件分离:设备树将硬件设备的结构和属性描述从内核空间分离出来,使得嵌入式系统开发过程中,软件和硬件开发可以并行进行,方便软硬件团队之间的协作。 系统配置灵活:设备树允许系统构建者在不改变内核源代码的情况下,动态更新硬件设备的配置信息,能够提高软件开发和调试的效率。 设备驱动开发方便:设备树将硬件设备的应用接口、中断和DMA信息等全部包含在内,驱动程序开发者可以通过使用设备树中的信息来快速开发驱动程序。 系统启动更快:传统的Linux内核启动时需要通过读取ATAG结构体等方式获取硬件信息,开销较大,而使用设备树可以快速地获取硬件信息并进行设备驱动程序的加载,能够提高系统启动的速度。 总的来说,使用设备树可以使得嵌入式系统开发更加灵活、方便和效率化,降低硬件开发成本,提高软硬件协作的效率。 2 解析 2.1 dts DTS(Device Tree Source)是一个用于描述嵌入式硬件的语言,经过编译后可以得到二进制的DTB文件。DTS文件包含了设备树的节点和属性,用于描述嵌入式设备的硬件结构和属性。 在Linux内核开发中,设备树通常被用于描述硬件平台,并且每一个设备都会对应一个独立的DTS文件。因此一般在Linux源码中存在大量的dts文件。在Linux源码中,DTS文件一般位于arch目录下的各个平台的设备树子目录中,例如arm平台的DTS文件位于arch/arm/boot/dts目录中,mips平台的DTS文件在arch/mips/boot/dts目录中,powerpc平台的DTS文件在arch/powerpc/boot/dts目录中。 2.2 dtsi DTSI(Device Tree Source Include)文件是一个头文件格式的文件,用于存储设备树节点和属性的公共部分,并可以在其他DTS文件中包含这个文件。这种方式使得DTS文件可以重用一些公共的设备树节点和属性定义,从而简化了设备树文件的编写和维护。 值得一提的是,对于一些相同的dts配置可以抽象到dtsi文件中,然后类似于C语言的方式可以include到dts文件中,对于同一个节点的设置情况,dts中的配置会覆盖dtsi中的配置。具体如下图所示: 2.3 dtc DTC(Device Tree Compiler)是一个用于将DTS文件编译成DTB二进制文件的工具,它可以从Linux内核代码中的scripts/dtc目录中获取,也可以在Linux系统中使用命令sudo apt-get install device-tree-compiler安装。 使用DTC编译DTS文件时,会生成对应的DTB文件,该文件包含了设备树的节点和属性的二进制形式,并在Linux内核启动时被加载到内存中。需要注意的是,在使用DTC编译DTS文件时,需要指定设备树的版本(例如-@ 0x00000000)和目标CPU的端序(例如--big-endian或--little-endian)。 2.4 dtb DTB(Device Tree Blob)是经过DTC编译后的二进制设备树文件,它描述了硬件平台上所有的硬件设备的信息,并在Linux内核启动时从引导程序中加载。引导程序需要识别硬件平台并加载对应的DTB文件,然后将DTB文件的起始地址和大小传递给内核。 当内核启动时,DTB文件首先会被加载到内存中作为设
点赞 5
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-31 18:46
北京航空航天大学 Web前端
美团
宝宝,你听我说,这次我真的准备好了,暑期实习我有些难处希望你能理解,这次我是真的可以了,希望你能再给我一个机会好不好
26届的你,投了哪些公司...
点赞
评论
收藏
分享
07-27 23:23
门头沟学院 数据仓库
二本26应届生想九月份找java实习
目前靠关系在一家保险公司的运营中心实习【数据分析】,感觉不太喜欢现在这个行业,目前java还差一小部分没学完,现在恶补三个月能找到实习吗
点赞
评论
收藏
分享
06-12 16:23
已编辑
小米_软件开发
小米
毕业前一周才收到,准备去小米了😁😁
玄静就是神:
不赖,等着吃苦吧
小米求职进展汇总
点赞
评论
收藏
分享
07-26 20:32
门头沟学院 Java
26届简历重大突破(其实并不)
好消息,学院本终于把点评换掉了;坏消息,也就仅此而已了这简历真的能投了吗,好像怎么看都不像是能投的吧喂emm也许有重大突破的其实是我的精神状态下限。。。?
简历中的项目经历要怎么写
点赞
评论
收藏
分享
07-28 22:51
腾讯_CSIG_产品经理
腾讯内推腾讯内推码
欢迎大家投递哈,岗位多多,先到先得,感兴趣的话,腾讯全集团所有岗位都可以找我内推 热乎乎的内推码:EUTPZZRV 腾讯投递方式 腾讯为员工提供健全的福利保障和多样化的激励机制,助您实现财务和职业双丰收。 分享一些面经: 第一轮技术面 闭包作用及实际应用场景 HTTP/1.1、HTTP/2、HTTP/3的核心差异 实现红绿灯控制效果(异步时序逻辑) React Hooks的设计动机与类组件对比 浏览器事件代理原理及实际应用 手写Promise核心逻辑(包含resolve/reject) 数组去重与高频字符统计算法 Web安全防护措施(XSS、CSRF) 浏览器渲染流程与重排/重绘优化 跨域...
腾讯HR面2575人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
8549
2
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
3352
3
...
虾皮秋招一面
3025
4
...
百度提前批 三面
2355
5
...
觉得研发高人一等的这辈子有了
1668
6
...
最强本科✌
1628
7
...
被猿辅导挂了简历,但我想说...
1554
8
...
虾皮一面凉经
1449
9
...
上班一周,工资还没拿,先欠公司两千
1320
10
...
也是逆天了
1113
创作者周榜
更多
正在热议
更多
#
工作中哪个瞬间让你想离职
#
64679次浏览
576人参与
#
找工作如何保持松弛感?
#
92020次浏览
1112人参与
#
中兴秋招
#
206486次浏览
2302人参与
#
如何快速融入团队?
#
17781次浏览
211人参与
#
秋招被确诊为……
#
165112次浏览
769人参与
#
和同事相处最忌讳的是__
#
25398次浏览
250人参与
#
虾皮求职进展汇总
#
250096次浏览
1873人参与
#
计算机专业还有必要去大厂卷吗
#
38585次浏览
183人参与
#
26届的你,投了哪些公司?
#
47922次浏览
510人参与
#
Offer比较,你最看重什么?
#
194035次浏览
1313人参与
#
投格力的你,拿到offer了吗?
#
87188次浏览
585人参与
#
你最希望上岸的公司是?
#
135559次浏览
709人参与
#
简历上的经历如何包装
#
30982次浏览
843人参与
#
我对___祛魅了
#
50409次浏览
450人参与
#
柠檬微趣工作体验
#
6811次浏览
40人参与
#
你遇到最难的面试题目是_
#
17125次浏览
204人参与
#
你跟室友的关系怎么样?
#
7680次浏览
117人参与
#
通信硬件岗投递时间线
#
18872次浏览
69人参与
#
我想象的实习vs现实的实习
#
290436次浏览
2246人参与
#
什么样的背景能拿SSP?
#
40048次浏览
232人参与
#
你最讨厌面试问你什么?
#
29197次浏览
319人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务