3 设备节点要求


3.1 基本设备节点类型


接下来的部分指定了5中所需要的设备节点的基本集的需求
所有设备树有一个根节点,并且在根节点下面必须列出如下节点:
  • 一个cpus节点
  • 至少一个内存节点

3.2 根节点


每个设备树有一个根节点,其他的设备节点是子节点。完整的根节点是 /
Linux设备树中文手册

3.3 aliases(别名)节点


设备树可能有一个 aliases 节点(/aliases),它定义一个或多个 aliases 属性.aliases 节点必须在设备树的根节点下,并且有一个名为 aliases 的节点名称。
 /aliases 节点的每个属性定义一个aliases。属性名指定alias名称。属性值指定在设备树中的节点的完整路径。例如,属性:serial0 = “/[email protected]/[email protected]”定义了一个alias serial0。
alias的名字应该是一个小写的文本字符串,由如下表的字符组成,长度为1-31。
Linux设备树中文手册
alias 值是一个设备路径,并被编码为字符串。该值表示节点的完整路径,
但路径不需要引用叶节点。但路径不需要引用叶节点
Example: 
 
  aliases { 
   serial0 = "/[email protected]/[email protected]"; 
   ethernet0 = "/[email protected]/[email protected]"; 
  } 

 给定 alias serial0,客户机程序可以查看/aliases 节点,并确定 alias 是指设备路径/ [email protected] / [email protected]

3.4 Memory(内存)节点


所有设备树都需要一个内存设备节点,它负责描述系统的物理内存布局。如果一个系统有多个内存范围,那么可以创建多个内存节点,或者可以在单个内存节点的reg属性中指定范围。

节点名的名称组件(见2.2.1)将是 memory

客户端程序可以使用它所选择的任何存储属特性访问未被任何内存预订所覆盖的内存。然而,在更改用于访问真实页面的存储属特性之前,客户机程序负责执行架构和实现所需要的操作,可能包括从缓存中刷新实际页面。引导程序负责确保在不采取与存储属性更改相关的任何操作的情况下,客户机程序可以安全地访问所有内存(包括内存保留的内存)。

像 WIMG= 0b001x 。即:

  • 通过not Write Through Required
  •  not Caching Inhibited 
  • Memory Coherence Required 
  • either not Guarded or Guarded (i.e., WIMG = 0b001x) 
如果支持VLE存储特性,VLE=0.

Linux设备树中文手册

Example 
 
给一个64位Power系统用如下物理内存布局:
  RAM: starting address 0x0, length 0x80000000 (2GB) 
  RAM: starting address 0x100000000, length 0x100000000 (4GB)

 Memory 节点能用如下方式定义,假设 #address-cells和 #size-cells的值为2:

Example #1 
 
        [email protected]
            device_type = "memory"; 
            reg = <0x000000000 0x00000000 0x00000000 0x80000000 
                   0x000000001 0x00000000 0x00000001 0x00000000>; 
        }; 
 
Example #2 
 
        [email protected]
            device_type = "memory"; 
            reg = <0x000000000 0x00000000 0x00000000 0x80000000>; 
        }; 
 
        [email protected]
            device_type = "memory"; 
            reg = <0x000000001 0x00000000 0x00000001 0x00000000>; 
        }; 
 

reg属性用于定义两个内存范围的地址和大小。2 GB的I / O地址被跳过。注意,根节点的# address -cell和# size-cells属性指定了值为2,这意味着需要两个32位的单元格来定义内存节点的reg属性的地址和长度。

3.5 Chosen选择


chosen 节点不代表系统中的真实设备,而是描述系统固件在运行时选择或指定的参数。它应该是根节点的子节点。
节点的名字应该为chosen(见2.2)
Linux设备树中文手册
Example 
 
  chosen { 
    bootargs = “root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200”; 
  }; 

 



相关文章: