aliases 节点定义了一些别号。为何要定义这个node呢?因为Device tree是树状构造,当要引用一个node的时刻要指明相对于root node的full path,例如/node-name-1/node-name-2/node-name-N。如不雅多次引用,每次都要写这么复杂的字符串若干是有些麻烦,是以可以在aliases 节点定义一些设备节点full path的缩写。skeleton.dtsi中没有定义aliases,下面的section中会进一步器具体的例子描述之。
memory device node是所有设备树文件的必备节点,它定义了体系物理内存的layout。device_type属性定义了该node的设备类型,例如cpu、serial等。对于memory node,其device_type必须等于memory。reg属性定义了拜访该device node的地址信息,该属性的值被解析成随便率性长度的(address,size)数组,具体用多长的数据来表示address和size是在其parent node中定义(#address-cells和#size-cells)。对于device node,reg描述了memory-mapped IO register的offset和length。对于memory node,定义了该memory的肇端地址和长度。
本例中的物理内存的构造并没有经由过程memory node传递,其实我们可以应用command line传递,我们command line中的参数“mem=64M@0x30000000”已经给出了具体的信息。我们用别的一个例子来加深对本节描述的各个属性以及memory node的懂得。假设我们的体系是64bit的,physical memory分成两段,定义如下:
RAM: starting address 0x0, length 0x80000000 (2GB)
RAM: starting address 0x100000000, length 0x100000000 (4GB)
对于如许的体系,我们可以将root node中的#address-cells和#size-cells这两个属性值设定为2,可以用下面两种办法来描述物理内存:
办法1:
- memory@0 {
- device_type = "memory";
- reg = <0x000000000 0x00000000 0x00000000 0x80000000
- 0x000000001 0x00000000 0x00000001 0x00000000>;
- };
办法2:
- memory@0 {
- device_type = "memory";
- reg = <0x000000000 0x00000000 0x00000000 0x80000000>;
- };
- memory@100000000 {
- device_type = "memory";
- reg = <0x000000001 0x00000000 0x00000001 0x00000000>;
- };
2、s3c24xx.dtsi。位于linux-3.14\arch\arm\boot\dts目次下,具体该文件的内容如下(有些内容省略了,领会精力即可,不须要描述每一个硬件定义的细节):
- #include "skeleton.dtsi"
- / {
- compatible = "samsung,s3c24xx"; -------------------(A)
- interrupt-parent = <&intc>; ----------------------(B)
推荐阅读
结语 【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! IT审计就像令人不快的麻烦,然则巨大年夜的价值老是降临到那些存眷这些会弗成避免地导致IT审计灾害的>>>详细阅读
本文标题:Linux Device Tree(二):基本概念
地址:http://www.17bianji.com/lsqh/36323.html
1/2 1

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