设备树(devicetree)-dts语法

devicetree 文档官网

devicetree.org/

设备树的属性取值

<1 0x5> 32位整数

"string"  字符串

[44 cc]   字节序列

#address-cells = <1> 在它的子节点 reg属性中,使用了多少个32整数来描述地址

#size-cells= <1>     在它的子节点 reg属性中,使用了多少个32整数来描述长度

reg = <0x100 0x200>


#address-cells = <2> 在它的子节点 reg属性中,使用了多少个32整数来描述地址

#size-cells= <1>     在它的子节点 reg属性中,使用了多少个32整数来描述长度

reg = <0x100 0x400 0x200>

soc {
    #address-cells = <1>;
    #size-cells = <1>;
    serial@4600 {
        compatible = "ns16550";
        reg = <0x4600 0x100>;
        clock-frequency = <0>;
        interrupts = <0xA 0x8>;
        interrupt-parent = <&ipic>;
    };
};

节点的#address-cells数和#size-cells属性都设置为 1。此设置指定需要一个单元来表示地址,并且需要一个单元来表示此节点的子节点大小。

串行设备 reg 属性必须遵循父 (soc) 节点中的此规范,地址由1个单元格 (0x4600) 表示,大小由1个单元格 (0x100) 表示。 

bootargs

/memreserve/ 0x33f00000 0x100000;
/ {
    name = "sample"
    model = "SMDK24440";
    compatible = "samsung,smdk2440";
    #address-cells = <1>;
    #size-cells = <1>;
    memory {  /* /memory */
        device_type = "memory";
        reg =  <0x30000000 0x4000000 0 4096>;        
    };
/*
    cpus {
        cpu {
            compatible = "arm,arm926ej-s";
        };
    };
*/    
    chosen {
        bootargs = "mem=512M noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
    };
};

bootargs参数说明

1、root
指定根文件系统的位置,比如:root=/dev/mtdblock3 , mtdblock3 代表mtdparts的第4分区 (第一个分区为mtdblock0) 如果指定 root=/dev/nfs,还需要指定nfsroot=serverip:nfs_dir

2、console
设置控制台参数,比如:console=ttySAC0,115200 , 使用串口0作为控制台,波特率为115200 。串口设备要根据实际的设备名称来设置。

3、mem
指定内存的大小,比如:mem=64M ,指定内存大小为64M

4、rootfstype
指定根文件系统的类型,这个选项需要跟root一起配合使用,一般如果根文件系统是ext2的话,有没有这个选项是无所谓的,但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区。


5、ramdisk_size
指定创建的ramdisk的大小,ramdisk是将内存中的一块区域作为物理磁盘使用的一种技术。

6、init
指定内核启动后第一个执行的脚本,比如:init=/linuxrc

7、initrd
指定ramdisk在内存中的位置和大小,比如:initrd=0x32000000,0xa00000

8、noinitrd
没有使用ramdisk启动系统时需要使用该参数

9、ip
指定系统启动后的ip地址,使用nfs时必须设置。

reserved memory

Devicetree 提供了两种方式预留内存: reserved-memory和memreserve

memreserve示例

/memreserve/ 0x40000000 0x01000000

reserved-memory示例

  1. reserved-memory {

  2. #address-cells = <1>;

  3. #size-cells = <1>;

  4. ranges;

  5. ipu_cma@90000000 {

  6. compatible = "shared-dma-pool";

  7. reg = <0x90000000 0x4000000>;

  8. reusable;

  9. status = "okay";

  10. };

phandle 属性

phandle属性为devicetree中唯一的节点指定一个数字标识符,节点中的phandle属性,它的取值必须是唯一的(不要跟其他的phandle值一样),例如:

pic@10000000 {
    phandle = <1>;
    interrupt-controller;
};
another-device-node {
    interrupt-parent = <1>;   // 使用phandle值为1来引用上述节点
};
 

注:DTS中的大多数设备树将不包含显式的phandle属性,当DTS被编译成二进制DTB格式时,DTC工具会自动插入phandle属性。

猜你喜欢

转载自blog.csdn.net/y13182588139/article/details/125795999