推敲到空洞的谈比较逝世板,我们用实例来讲解Device Tree Source file 的数据格局。假设蜗窝科技制造了一个S3C2416的开辟板,我们把该development board定名为snail,那么须要撰写一个s3c2416-snail.dts的文件。如不雅把所有的开辟板的硬件信息(SOC以及外设)都描述在一个文件中是不合理的,是以有可能其他公司也应用S3C2416搭建本身的开辟板并敕令pig、cow什么的,如不雅大年夜家都用本身的dts文件描述硬件,那么个中大年夜部分是反复的,是以我们把和S3C2416相干的硬件描述保存成一个零丁的dts文件可以供应用S3C2416的target board来引用处将文件的扩大名变成dtsi(i表示include)。同理,三星公司的S3C24xx系列是一个SOC family,这些SOCs(2410、2416、2450等)也有雷同的内容,是以同样的事理,我们可以将公共部分采掏出来,变成s3c24xx.dtsi,便利大年夜家include。同样的事理,各家ARM vendor也会共用一些硬件定义信息,这个文件就是skeleton.dtsi。我们自下而上(类似C++中的大年夜基类到顶层的派生类)逐个进行分析。
3、 memory reserve map的格局描述
这个区域包含了若干的reserve memory描述符。每个reserve memory描述符是由address和size构成。个中address和size都是用U64来描述。
4、device tree structure block的格局描述
device tree structure block区域是由若干的分片构成,每个分片开端地位都是保存了token,以词攀来描述该分片的属性和内容。共计有5种token:
(1)FDT_BEGIN_NODE (0x00000001)。该token描述了一个node的开端地位,紧挨着该token的就是node name(包含unit address)
(2)FDT_END_NODE (0x00000002)。该token描述了一个node的停止地位。
(3)FDT_PROP (0x00000003)。该token描述了一个property的开端地位,该token之后是两个u32的数据,分别是length和name offset。length表示该property value data的size。name offset表示该属性字符串在device tree strings block的偏移值。length和name offset之后就是长度为length具体的属性值数据。
(4)FDT_NOP (0x00000004)。
(5)FDT_END (0x00000009)。该token标识了一个DTB的停止地位。
一个可能的DTB的构造如下:
(1)若干个FDT_NOP(可选)
(2)FDT_BEGIN_NODE
node name
paddings
(3)若干属性定义。
(4)若干子节点定义。(被FDT_BEGIN_NODE和FDT_END_NODE包抄)
(5)若干个FDT_NOP(可选)
(6)FDT_END_NODE
(7)FDT_END
5、device tree strings bloc的格局描述
device tree strings bloc定义了各个node中应用的属性的字符串表。因为很多属性会涌如今多个node中,是以,所有的属性字符串构成了一个string block。如许可以紧缩DTB的size。
【编辑推荐】
- Linux体系休眠(System Suspend)和设备中断处理
- 上手指南:开启你的Windows平台Linux子体系之路
- 三种在Linux上创建或扩大交换分区的简单办法
- 做Linux背锅2年,我总结了这六类好习惯和30个血的教训
- 你的Linux办事器被黑了?看一看是不是犯了这5点错
推荐阅读
结语 【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! IT审计就像令人不快的麻烦,然则巨大年夜的价值老是降临到那些存眷这些会弗成避免地导致IT审计灾害的>>>详细阅读
本文标题:Linux Device Tree(二):基本概念
地址:http://www.17bianji.com/lsqh/36323.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示