设备树基本概念-17

Posted 杨斌并

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设备树基本概念-17相关的知识,希望对你有一定的参考价值。

设备树基本概念

什么是设备树?

设备树是一种描述硬件资源的数据结构。它通过 bootloader将硬件资源传给内核,
使得内核和硬件资源描述相对独立。I
有了初步概念之后,我们再来一起探讨设备树的起源。

设备树的由来

Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux内,一个**.dts(device tree source)文件对应一个ARM的machine,一般放置在内核的"arch/arm/boot/dts/“目录内,比如exynos4412参考板的板级设备树文件就是"arch/arm/boot/dts/exynos4412-origen.dts”。这个文件可以通过$make dtbs命令编译成二进制的.dtb文件**供内核驱动使用。

基于同样的软件分层设计的思想,由于一个SoC可能对应多个machine,如果每个machine的设备树都写成一个完全独立的**.dts文件**,那么势必相当一些**.dts文件有重复的部分,为了解决这个问题,Linux设备树目录把一个SoC公用的部分或者多个machine共同的部分提炼为相应的.dtsi文件**。这样每个**.dts就只有自己差异的部分,公有的部分只需要"include"相应的.dtsi文件**, 这样就是整个设备树的管理更加有序。我这里用`Linux4.8.5源码自带的dm9000网卡为例来分析设备树的使用和移植。这个网卡的设备树节点信息在**“Documentation/devicetree/bindings/net/davicom-dm9000.txt"有详细说明,其网卡驱动源码是"drivers/net/ethernet/davicom/dm9000.c”**。

img

常用名词解释

  • DT: Device Tree1/设备树
  • FDT:Flattened Device Tree//展开设备树//开放固件,设备树起源于OF,所以我们在设备树中可以看到很多有of字母的函数
  • device tree source(dts)//设备树代码
  • device tree source include(dtsi)😕/更通用的设备树代码,也就是相同芯片但不能平台都可以使用的代码
  • device tree blob(dtb)//DTS编译后得到的DTB文件<6>device tree compiler(dtc)//设备树编译器
  • 其中,DTS,DTSI, DTB,DTC。他们之间的关系如下:
    DTS、DTSI --》 DTB

以上是关于设备树基本概念-17的主要内容,如果未能解决你的问题,请参考以下文章

Linux设备树语法详解

设备树语法

PCIe 设备树详细讲解

树-概念性总结及代码示例

Linux设备树语法详解

Linux设备树语法详解