作家
登录

Linux Device Tree(二):基本概念

作者: 来源: 2017-07-21 09:11:23 阅读 我要评论

 = "memory"  
  •       | |- device_type = "memory"  
  •       | |- reg = <0x00000000 0x00000000 0x00000000 0x20000000> 
  •       | |- linux,phandle = <3>  
  •       |  
  •       o chosen  
  •         |- name = "chosen"  
  •         |- bootargs = "root=/dev/sda2"  
  •         |- linux,phandle = <4>  
  • 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:

    1. memory@0 {  
    2.     device_type = "memory";  
    3.     reg = <0x000000000 0x00000000 0x00000000 0x80000000  
    4.               0x000000001 0x00000000 0x00000001 0x00000000>;  
    5. };  

    办法2:

    1. memory@0 {  
    2.     device_type = "memory";  
    3.     reg = <0x000000000 0x00000000 0x00000000 0x80000000>;  
    4. }; 
    5.  
    6. memory@100000000 {  
    7.     device_type = "memory";  
    8.     reg = <0x000000001 0x00000000 0x00000001 0x00000000>;  
    9. };  

    2、s3c24xx.dtsi。位于linux-3.14\arch\arm\boot\dts目次下,具体该文件的内容如下(有些内容省略了,领会精力即可,不须要描述每一个硬件定义的细节):

    1. #include "skeleton.dtsi" 
    2.  
    3. / {  
    4.     compatible = "samsung,s3c24xx"; -------------------(A)  
    5.     interrupt-parent = <&intc>; ----------------------(B) 

        推荐阅读

        IT审计失败的十个方式

      结语 【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! IT审计就像令人不快的麻烦,然则巨大年夜的价值老是降临到那些存眷这些会弗成避免地导致IT审计灾害的>>>详细阅读


      本文标题:Linux Device Tree(二):基本概念

      地址:http://www.17bianji.com/lsqh/36323.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)