浅析Linux Device Tree - 基础部分

DeviceTree基础

DeviceTree(以下简称DT)用于描述设备信息以及设备于总线之间的层级关系,DT可用于描述绝大多数板级设备的细节,包括CPU、内存、中断、总线以及外设等,与DT相关的Object有dts、dtsi、dtc、dtb、dt.img。

  • dts:DT源文件称为dts文件,Ascii文本文件,一般一个dts文件对应一个Machine,ARM架构下dts文件存放于arch/arm/boot/dts/目录下
  • dtsi:多个Machine/SoC公用的dt文件,i代表include
  • dtc:DeviceTree Compile,用于将dts文件编译成二进制dtb文件
  • dtb:DeviceTree Bolb,由dtc编译dts文件生成的二进制目标文件
  • dt.img:多个dtb文件打包形成dt.img,以适配多个Machine,dts/dtb的结构是标准化的,dt.img有头信息和多个dtb组成,因为没有统一的标准,不同的厂商头信息可能是不同的

目前Android厂商大都使用kernel + ramdisk.img + dt.img的方式打包成boot.img。

本章将详细介绍如下内容:

  • devicetree文件结构
  • devicetree语法基础
  • devicetree文件结构实例解析
  • device tree compile用法介绍

最新内容请参考:lonzoc’s gitbook

DTS文件结构


DTS文件主要由:root-node、child-node、property、include组成

  • root-node: 由’/’表示,DT的Entry Point,所有设备均以子节点的形式处于根节点下
  • child-node: node的形式为 node-name {};{}中是该node的实际内容,根节点下一般是Platform设备和总线,外设以子节点形式存在于总线类的节点中。如下的示例中,cpus 这个节点位于根节点下,代表着所有cpu,cpu0~x以子节点形式处于cpus下,代表着SoC上所有的cpu
  • property: 属性,以key-value的形式表示,位于节点中
  • include file: 用于包含其他源文件到dts中,dtsi一般中多个Machine公用的文件(i代表include),h文件在dts中一般用于宏定义
 /include/ "skeleton.dtsi"
 /include/ <dt-bindings/clock/msm-clocks-a7.h>
/ {
        model = "Qualcomm Technologies, Inc. MSM 8226";
        compatible = "qcom,msm8226";
        interrupt-parent = <&intc>;

        cpus {
                #size-cells = <0>;
                #address-cells = <1>;

                CPU0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x0>;
                };

注:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值