zoukankan      html  css  js  c++  java
  • 设备树概述

    http://www.eefocus.com/marianna/blog/cate_18142_0.html?p=2

    http://www.eefocus.com/marianna/blog/14-10/306247_821be.html

    http://blog.csdn.net/21cnbao/article/details/8457546

    1. 设备树概念

    device trees, a data structure by which bootloaders pass hardware layout to Linux in a device-independent manner, simplifying hardware probing.

    设备树源文件:dts - device tree source(.dts)

    .dts文件是一种ASCII 文本格式的Device Tree描述,此文本格式非常人性化,适合人类的阅读习惯。基本上,在ARM Linux在,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录。由于一个SoC可能对应多个machine(一个SoC可以对应多个产品和电路板),势必这些.dts文件需包含许多共同的部分,Linux内核为了简化,把SoC公用的部分或者多个machine共同的部分一般提炼为.dtsi,类似于C语言的头文件。其他的machine对应的.dts就include这个.dtsi。譬如,对于VEXPRESS而言,vexpress-v2m.dtsi就被vexpress-v2p-ca9.dts所引用, vexpress-v2p-ca9.dts有如下一行:
    /include/ "vexpress-v2m.dtsi"
    当然,和C语言的头文件类似,.dtsi也可以include其他的.dtsi,譬如几乎所有的ARM SoC的.dtsi都引用了skeleton.dtsi。

    设备树二进制文件:dtb - Device Tree Blob (.dtb)

    .dtb是.dts被DTC编译后的二进制格式的Device Tree描述,可由Linux内核解析。通常在我们为电路板制作NAND、SD启动image时,会为.dtb文件单独留下一个很小的区域以存放之,之后bootloader在引导kernel的过程中,会先读取该.dtb到内存。

    设备树编译工具:DTC - device tree compiler

    将.dts编译为.dtb的工具。DTC的源代码位于内核的scripts/dtc目录,在Linux内核使能了Device Tree的情况下,编译内核的时候主机工具dtc会被编译出来,对应scripts/dtc/Makefile中的“hostprogs-y := dtc”这一hostprogs编译target。

    Binding绑定

    对于Device Tree中的结点和属性具体是如何来描述设备的硬件细节的,一般需要文档来进行讲解,文档的后缀名一般为.txt。这些文档位于内核的Documentation/devicetree/bindings目录,其下又分为很多子目录。

    2. 设备树Uboot应用

    为了使能Device Tree,需要编译Uboot的时候在config文件中加入
    #define CONFIG_OF_LIBFDT 
    在Uboot中,可以从NAND、SD或者TFTP等任意介质将.dtb读入内存,假设.dtb放入的内存地址为0x71000000,之后可在Uboot运行命令fdt addr命令设置.dtb的地址,如:
    U-Boot> fdt addr 0x71000000
    fdt的其他命令就变的可以使用,如fdt resize、fdt print等。
    对于ARM来讲,可以透过bootz kernel_addr initrd_address dtb_address的命令来启动内核,即dtb_address作为bootz或者bootm的最后一次参数,第一个参数为内核映像的地址,第二个参数为initrd的地址,若不存在initrd,可以用 -代替。

    除了上述方法外,还可将dtb直接整合到内核image中,类似cat xxx.dtb image > xxx_dtb_image,在Uboot中直接烧写此镜像即可。内核需使能CONFIG_ARM_APPENDED_DTB,以支持“Use appended device tree blob to zImage”.

    最终方法是所谓的FIT image,集成dtb/zImage/rootfs。

  • 相关阅读:
    windows 安装 composer
    css 3 波浪特效
    phpstudy composer 安装YII2
    weUI weui-navbar 实现
    YII 多表联查 纵表
    YII2 models非常好用的控制输出数据【重写Fields】
    重写Fields 控制models 数据输出字段
    Plugin with id com.android.application not found
    react native
    java.lang.IllegalArgumentException: Missing either @POST URL or @Url parameter.
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/6102375.html
Copyright © 2011-2022 走看看