1)属性值是text string或者string list,用双引号表示。例如device_type = "memory"
1、Device Tree source file语法介绍
2)属性值是32bit unsigned integers,用尖括号表示。例如#size-cells = <1>
3)属性值是binary data,用方括号表示。例如binary-property = [0x01 0x23 0x45 0x67]
如不雅一个device node中包含了有寻址需求(要定义reg property)的sub node(后文也许会用child node,和sub node是一样的意思),那么就必须要定义这两个属性。“#”是number的意思,#address-cells这个属性是用来描述sub node中的reg属性的地址域特点的,也就是说须要用若干个u32的cell来描述该地址域。同理可以揣摸#size-cells的含义,下面对reg的描述中会给出更具体的信息。
chosen node重要用来描述由体系firmware指定的runtime parameter。如不雅存在chosen这个node,其parent node必须是名字是“/”的根节点。本来经由过程tag list传递的一些linux kernel的运行时参数可以经由过程Device Tree传递。例如command line可以经由过程bootargs这个property这个属性传递;initrd的开端地址也可以经由过程linux,initrd-start这个property这个属性传递。在本例中,chosen节点是空的,在实际中,建议增长一个bootargs的属性,例如:
- "root=/dev/nfs nfsroot=1.1.1.1:/nfsboot ip=1.1.1.2:1.1.1.1:1.1.1.1:255.255.255.0::usbd0:off console=ttyS0,115200 mem=64M@0x30000000"
经由过程该command line可以控制内核大年夜usbnet启动,当然,具体项目要响应修改command line以北善?不合的需求。我们知道,device tree用于HW platform辨认,runtime parameter传递以及硬件设备描述。chosen节抱病没有描述任何硬件设备节点的信息,它只是传递了runtime parameter。
- / o device-tree
- |- name = "device-tree"
- |- model = "MyBoardName"
- |- compatible = "MyBoardFamilyName"
- |- #address-cells = <2>
- |- #size-cells = <2>
- |- linux,phandle = <0>
- |
- o cpus
- | | - name = "cpus"
- | | - linux,phandle = <1>
- | | - #address-cells = <1>
- | | - #size-cells = <0>
- | |
- | o PowerPC,970@0
- | |- name = "PowerPC,970"
- | |- device_type = "cpu"
- | |- reg = <0>
- | |- clock-frequency = <0x5f5e1000>
- | |- 64-bit
- | |- linux,phandle = <2>
- |
- o memory@0
- | |- name
推荐阅读
结语 【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! IT审计就像令人不快的麻烦,然则巨大年夜的价值老是降临到那些存眷这些会弗成避免地导致IT审计灾害的>>>详细阅读
本文标题:Linux Device Tree(二):基本概念
地址:http://www.17bianji.com/lsqh/36323.html
1/2 1

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