设备树初识

设备树初识

一  设备树定义

设备树是一种描述硬件信息的数据结构,用于实现驱动代码与设备信息相分离(简单理解就是硬件配置信息文件)。

  1. 设备树是一种描述硬件的数据结构,它起源于 OpenFirmware
  2. Linux 内核从3.x 开始引入设备树的概念

二  设备树获取

    设备树的获取途径如下:
  1. 根据 linux 源码中对设备树支持的情况,对平台设备树进行获取;(linux 源码)
  2. 设备提供的源码获取设备树;
  3. 自己写设备树文件(比较麻烦,需要一系列的定义标准和使用标准)。

三  设备树描述信息

  1.  CPU的数量和类别
  2.  内存基地址和大小
  3. 总线和桥
  4. 外设连接
  5. 中断控制器和中断使用情况
  6. GPIO控制器和GPIO使用情况
  7. Clock控制器和Clock使用情况

四  设备树编译

1.   dts编译生成dtb(正向编译)

      ./dtc -I dts -O dtb -o B_dtb.dtb A_dts.dts

2.   dtb编译生成dts(反向编译)

./dtc -I dtb -O dts -o A_dts.dts A_dtb.dtb

五  设备树结构

    设备树文件结构:
  • DTS 设备树源文件设备树入口文件;
  • DTSI 设备树头文件,将设备相同部分抽象出来放在该文件中;
  • DTB 编译后生成的二进制文件;
  • DTC 设备树编译器;
  • 使用CPP(C Preprocessor)命令对dts源文件进行处理。
     设备树信息结构:
  1. 节点:节点本身可以包含子节点。
  2. 属性:属性就是成对出现的namevalue 

六  设备树特性

  1. 每个设备树文件都有一个根节点,每个设备都是一个节点。
  2. 节点间可以嵌套,形成父子关系,这样就可以方便的描述设备间的关系。
  3. 每个设备的属性都用一组key-value(键值对)来描述。
  4. 每个属性的描述用;结束
  5. 相同的节点的不同属性信息都会被合并,相同节点的相同属性会被重写

七  设备树加载流程

                            

八  设备树基本语法

https://www.notion.so/SylixOS-335619b52a1e444898dc19dfdb6a0015#c54e75a886af4d499f349eb36b4d177a

九  引入设备树的原因

未添加设备树的BSP开发流程:

                               
设备树形式(板卡的配置单独出来——抽象出板卡配置文件——设备树)
                               
总结:
       设备树引入后可以通过修改设备树的配置信息来修改BSP对驱动的支持情况;对相同板卡硬件之间存在差异,可以通过修改设备树信息实现不同BSP板卡适配。
    • Related Articles

    • 瑞芯微 AIO-3568J 板镜像固化

      Q:瑞芯微 AIO-3568J 板 SylixOS镜像固化步骤 一、文章介绍 本文主要讲解瑞芯微 AIO-3568J 行业主板进行 SylixOS 镜像烧录及固化操作流程。 图 1 瑞芯微 AIO-3568J 板卡接口资源 二、连接并启动板卡 板卡默认使用 DEBUG 口作为调试串口,故本文中亦使用 DEBUG 口作为后续流程交互串口,如图 2所示。 注意:AIO-3568J 板卡默认波特率使用 1500000。 图 2 DEBUG 口位置及引脚定义 连接 DEBUG ...