首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
胖墩墩的母单花摆烂了
湖南工学院 嵌入式工程师
发布于湖南
关注
已关注
取消关注
@爱打球的程小员许乔丹:
安卓系统面经_安卓面经(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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
06-14 12:34
华为_产品经理(准入职员工)
对大部分人来说,考研性价比低,但不代表没用
网上充斥的大量的复杂信息。有的人讨论说:能读研就读研。也有的人说:你读三年经济万一就好了呢?也有很多高龄冲浪群体的逆天言论“本科出来就是打螺丝。”“硕士一样找不到工作。”这里我们以大基数人群为讨论理性分析一下,硕士和工作之间的分析。(以下内容均为不恰当对比,仅供参考)感觉没钱的早工作,有钱的多深造。以我身边某朋友为例子。同一家公司,同样岗位。某本科:22岁10000月薪,13薪。年薪13万某硕士:25岁13000月薪,13薪。年薪17万以22-30岁为时间线。本科:13*8=104万。硕士:17*5-3(学费)=82万。这个例子是不恰当的。硕士身份不只是量上面的积累,也是质上的升华。对于当前的...
牛客激励计划
考研对你找工作产生了哪些影响?
点赞
评论
收藏
分享
06-15 21:30
魔门塔(苏州)科技有限公司_感知算法工程师(准入职员工)
Momenta内推-Momenta内推码
Momenta|产品项目岗|面试经验 一面:主线负责人 二面:项目团队负责人 🎉🎉一面二面的问题,掌握下面几个应对面试完全OK啦! 1️⃣自我介绍🥳(还是我那说烂了的加分自我介绍,一面直接过!主页自取啦) 2️⃣深挖简历🩷(固定套路,Key point:给我使劲往简历上靠!) 肯定会问到有没有之前的经历和这个岗位相似的工作任务:所以面试前要准备一下以往经历和产品项目管理有关的,最好有那种自己负责一个项目的从0➡️1的过程,很加分!使劲说!比如之前如何持续跟踪过一个什么项目呀,怎么写的prd 文档呀等等!(懂得都懂哈,好好准备这一part,很加分) 3️⃣沟通能力如何?🙋♂️ 同上,...
点赞
评论
收藏
分享
05-09 14:45
门头沟学院 Java
现在的HR,说话都这么冲的吗?
一个小公司hr,在上海就给10k+,说话语气这么冲?是不会好好说话吗?现在太卷了,让这种🤡hr都能挑三拣四。
已成为🐬孝子:
小公司就是容易碰到奇葩,之前投过浦东一家小厂,到那里先让我做一个小时高中数学题
找工作时遇到的神仙HR
找工作中的意难平
点赞
评论
收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
神人hr
坐两小时地铁结果面试十分钟结束,你没事吧😅😅😅
ldf李鑫:
不说公司名祝你以后天天遇到这样的公司
面试吐槽bot
点赞
评论
收藏
分享
06-12 21:46
三一重能_C++研发工程师(准入职员工)
三一重能内推-三一重能内推码
面试经验如下: 面试总体难易程度:★★(仅供参考,易因人而异)面试后大概三天收到被拒的邮件。 面试岗位:质量管理工程师(风电) 应聘地点:北京 岗位需求学历:本科及以上 面试方式:线上,多面 APP 面试时间:15-20min,面试官很和蔼。 面试内容: (1)自我介绍(准备1-3分钟)。 (2)科研经历主要负者和参与的内容,主要研究的内容。 (3)为什么想来我们公司,对公司有哪些了解。 (4)对于风电的认识。 (5)整个风机的运行过程是怎样的。 (6)问一些简历中校园活动,要熟悉简历。【三一重能2026届校招提前批盛启】🌈招聘岗位:研发技术类、质量工艺类💼面向对象:充满激情与梦想,勇于奋...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
对不起了妈妈,没办法让你过上好日子了。
1.8W
2
...
我是全牛客唯一解锁了这个卡牌的吧
8510
华为开奖进展
热聊中
3
...
职场“心眼子”大赛:看你挑战多少次,才能拿到满分?
7932
4
...
实习上班两个月被骂了两个月
7354
5
...
默认入职+offer迟到3周,尊严被开水团按在地上摩擦
7323
6
...
不要放弃,兄弟们
7133
7
...
字节的后端实习二面,八股盛宴!
6221
8
...
避雷华为质量it部,华为给我上了一课,26届倒霉又失败的暑期实习求职经历
5811
9
...
虽然还有很多机会但也没心气了
5567
10
...
也是服了,谁家公司这样啊?
5408
创作者周榜
更多
正在热议
更多
#
我的职场心眼子段位
#
10065次浏览
362人参与
#
通信硬件人社招/春招/实习投递现状
#
25716次浏览
931人参与
#
你找实习最大的坎坷是什么
#
10447次浏览
99人参与
#
职场吐槽大会
#
209836次浏览
1672人参与
#
实习最想跑路的瞬间
#
9872次浏览
84人参与
#
24届的你们现状如何了?
#
72152次浏览
411人参与
#
妈妈治愈了你哪些脆皮时刻
#
26027次浏览
279人参与
#
毕业租房也有小确幸
#
116928次浏览
4390人参与
#
运营商笔面经互助
#
147922次浏览
1638人参与
#
秋招想进国企该如何准备
#
66854次浏览
402人参与
#
我的求职精神状态
#
74699次浏览
923人参与
#
多益网络工作体验
#
47060次浏览
270人参与
#
你的房租占工资的比例是多少?
#
36349次浏览
574人参与
#
硬件人秋招的第一个offer
#
75169次浏览
1138人参与
#
牛友故事会
#
734173次浏览
14600人参与
#
工作中的卑微时刻
#
14249次浏览
115人参与
#
材料进Fab厂真的劝退吗?
#
40716次浏览
177人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
110386次浏览
786人参与
#
科大讯飞求职进展汇总
#
284480次浏览
2723人参与
#
机械专业只有考研才有出路吗
#
107270次浏览
871人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务