设备树的介绍和基础使用

设备树的介绍和使用


为什么引进设备树:

  • device部分是描述硬件的。一般device部分的代码会放在内核源码中arch/arm/plat-xxx和arch/arm/machxxx下面。但是随着Linux支持的硬件越来越多,在内核源码下关于硬件描述的代码也越来越多。并且每修改一下就要编译一次内核。
  • 长此以往Linux内核里面就存在了大量“垃圾代码”,而且非常多,这里说的“垃圾代码”是关于对硬件描述的代码。从长远看,这些代码对Linux内核本身并没有帮助,所以相当于Linux内核是“垃圾代码”。但是并不是说平台总线这种方法不好。
  • 为了解决这个问题,设备树就被引入到了Linux上。使用设备树来剔除相对内核来说的“垃圾代码”,既用设备树来描述硬件信息,用来替代原来的device部分的代码。虽然用设备树替换了原来的device部分,但是平台
    总线模型的匹配和使用基本不变。并且对硬件修改以后不必重新编译内核。直接需要将设备树文件编译成二进制文件,在通过bootloader传递给内核即可。

所以设备树就是用来描述硬件资源的文件。

基本名词解释

  1. DT:Device Tree //设备树
  2. FDT:Flattened Device Tree //开放设备树,起源于OpenFirmware (OF)
  3. dts: device tree source的缩写 //设备树源码
  4. dtsi: device tree source include的缩写 //通用的设备树源码
  5. dtb: device tree blob的缩写//编译设备树源码得到的文件
  6. dtc: device tree compiler的缩写 //设备树编译器

alt text

设备树编译格式:

编译设备树: dtc -I dts -0 dtb -o xxx.dtb xxx.dts

反编译设备树: dtc -I dtb -0 dts -o xxx.dts xxx.dtb

设备树的基本语法:

常用属性

alt text
根节点:

/dts-v1/;
/{

};

子节点:

格式:
    [label:]node-name[@unit-address]{
        [properties-list]
        [child-node-list]
    };

如:

nodel{ //子节点,名称node1
    nodel_child{
            //同级节点下不能出现相同名称
    };
};
  • 节点名称:在对节点进行命名的时候,一般要体现设备的类型,比如网口一般命名成ethernet,串口一般命名成uart,对于名称一般要遵循下面的命令格式。

格式:[标签]:<名称>[@<设备地址>]
其中,[标签]和[@<设备地址>]是可选项,<名称>是必选项。另外,这里的<设备地址>没有实际意义,只是让节点名称更人性化,更方便阅读。
举例:
  uart: serial@02288000 其中, uart就是这个节点标签,也叫别名, serial@02288000就是节点名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想和我重名?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值