一:主要关键字定义说明

<1>. DT :Device Tree

<2>. FDT : Flattened Device Tree

<3>. OF :Open Firmware

<4>. DTS :device tree source

<5>. DTSI:device tree source include

<6>. DTB :device tree blob

<7>. DTC :device tree compiler

二:制作镜像: 

FIT镜像制作示例,FIT是内核、设备树、文件系统合并成一个文件的一种镜像,并且一个FIT镜像里边可能包含了很多个内核、设备树、文件系统等;

<1>准备文件:

    a.可执行程序:mkimage;

        该文件在U-Boot编译完成后,源码目录下/tools/有编译好的二进制程序;

    b.分开的镜像文件:zImage、rootfs.gz、dev-tree.dtb;

        zImage由内核源码编译后在arch/arm/boot/zImage目录下;

        rootfs.gz由busybox编译后,添加相关文件、目录后制作而成,参见 “busybox根文件系统制作”;

        dev-tree.dtb是设备树编译好后的二进制文件,在linux源码目录执行make dtbs可生成,也可用linux源码目录的/scripts/dtc/dtc工具编译;

    c.描述合并后镜像信息的文件:image_info.its;

        *.its文件需要用户自己编写,编写时可以参考U-Boot源码目录下的./doc/uImage.FIT/kernel.its文件编写;

<2> 生成FIT镜像

  命令:./mkimage -f image_info.its fit.img

  其中:-f 表明要依据its文件内描述的文件制作FIT镜像;image_info.its文件是针对当前单板构建的镜像信息描述文件;fit.img是最后生成的FIT镜像文件名,文件名和拓展名自定义(file命令可以看到不管文件拓展名是啥,文件本质是:data)

  注:执行该条命令时,需要把its文件内描述的镜像文件放在指定的路径下,mkimage工具会依据its文件内描述自动加载文件,生成的fit.img文件也可以依据需求指定文件的路径,最好是绝对路径。

FIT镜像制作示例,FIT是内核、设备树、文件系统合并成一个文件的一种镜像,并且一个FIT镜像里边可能包含了很多个内核、设备树、文件系统等;

mkimage -f /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/fit-qcom-ipq4019-ap.dk07.1-c1.its fit-qcom-ipq4019-ap.dk07.1-c1.itb 来完成。

其中

fit-qcom-ipq4019-ap.dk07.1-c1.itb 为最终生成的文件

fit-qcom-ipq4019-ap.dk07.1-c1.its 用来说明itd文件如何生成。

 制作FIT(Flattened device tree)镜像

  ./tools/mkimage -f image_info.its fit.img

<3> xxx.its的文件内容

root@suiyuan626-vm:~# cat /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/fit-qcom-ipq4019-ap.dk07.1-c1.its

/dts-v1/;

/ {

description = "ARM OpenWrt FIT (Flattened Image Tree)";

#address-cells = <1>;

images {

kernel@1 {

description = "ARM OpenWrt Linux-4.4.60";

data = /incbin/("/fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/Image-initramfs");

type = "kernel";

arch = "arm";

os = "linux";

compression = "none";

load = <0x80208000>;

entry = <0x80208000>;

hash@1 {

algo = "crc32";

};

hash@2 {

algo = "sha1";

};

};

fdt@1 {

description = "ARM OpenWrt qcom-ipq4019-ap.dk07.1-c1 device tree blob";

data = /incbin/("/fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-4.4.60/arch/arm/boot/dts//qcom-ipq4019-ap.dk07.1-c1.dtb");

type = "flat_dt";

arch = "arm";

compression = "none";

hash@1 {

algo = "crc32";

};

hash@2 {

algo = "sha1";

};

};

};

configurations {

default = "config@1";

config@1 {

description = "OpenWrt";

kernel = "kernel@1";

fdt = "fdt@1";

};

};

};

cp -fpR /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/fit-qcom-ipq4019-ap.dk07.1-c1.itb /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/bin/ipq806x/openwrt-ipq806x-qcom-ipq4019-ap.dk07.1-c1-fit-uImage.itb

同理通过mkimage 制作FTD文件

mkimage -f /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/fit-qcom-ipq40xx-ap.dkxx.its /fae/qsdk/arm/spf6.1.1.new/qca-networking-2018-spf-6-1-0_qca_oem.git/qsdk/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/fit-qcom-ipq40xx-ap.dkxx.itb

fit-qcom-ipq40xx-ap.dkxx.itb 用来打包固件

其中

三:DTS说明

那么可以把不变的东西和变化的东西分开来做。不变的逻辑,以少量精确的代码搞定;变化的资源,可以形成一个资源配置文件。基于这种思想,Linux device tree(DTS)便应运而生。所谓DTS,它是一个以 ".dts"结尾的文件,该文件会被编译成dtb文件,uboot会把该文件放置到某特定的内存区域,并把相关参数传给kernel;kernel起来之初,便会去解析该文件,以便拿到板载资源配置。DTS文件中内容框架是一棵树的结构,其由一系列的结点(node)和属性(property)键值对组成,此处不进行具体分析。DTS文件一般放在 "kernel/arch/arm/boot/dts/ " 目录下。

Device tree结构约定

Device tree 常用节点类型

所有device tree节点必须有1个根节点/, 还必须在根节点下有如下2个节点:

1、Cpu节点

2、memory节点 ---ePAPR规范指定了memory是必须的节点,名称也必须是memory。内存节点描述了系统物理内存的信息,如果系统中有多个内存范围,device tree中可能会创建多个内存节点,或者在一个单独的内存节点中通过reg属性指定内存的范围、

3、Chosen节点不代表一个真正的节点,只是传到参数的作用,chosen里的数据也不代表硬件。

4、Cpus节点

必须的节点,不代表真实设备,存放cpu节点的一个容器

5、cpu节点描述具体的硬件执行单元

6、soc节点表示一个系统级的芯片

文档 documentation/devicetree/bindings

四:DTS文件路径位置

Z:\fae\qsdk\arm\spf6.1.1.new\qca-networking-2018-spf-6-1-0_qca_oem.git\qsdk\qca\src\linux-4.4\arch\arm\boot\dts

描述文件存放路径: kernel/arch/arm/boot/dts

3个dts文件组成:

qcom-ipq4019.dtsi

qcom-ipq4019-ap.dk07.1.dtsi

qcom-ipq4019-ap.dk07.1-c1.dts

qcom-ipq4019-ap.dk07.1-c1.dtb

五:编译使能DTS

Z:\fae\qsdk\arm\spf6.1.1.new\qca-networking-2018-spf-6-1-0_qca_oem.git\qsdk\qca\src\linux-4.4\arch\arm\boot\dts 的makefile 中

六:配置文件

Z:\fae\qsdk\arm\spf6.1.1.new\qca-networking-2018-spf-6-1-0_qca_oem.git\qsdk\qca\src\linux-4.4\arch\arm\configs

qcom_defconfig

七:加载执行过程分析

https://www.cnblogs.com/chineseboy/p/5235608.html

八:系统内核映射

/sys/firmware/devicetree

4019 设备树 Linux device tree 概述相关推荐

  1. ARM Linux 3.x的设备树(Device Tree)【转】

    转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Devi ...

  2. ARM Linux 3.x的设备树(Device Tree)

    宋宝华 Barry Song <21cnbao@gmail.com> 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux ...

  3. dtb文件linux位置,dtb文件的由来与ARM Linux 3.x的设备树(Device Tree)

    1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称"this whole ARM thing is a f*ckin ...

  4. linux内核 设备列表,Linux 设备树(Device Tree)(转载)

    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称 "this whole ARM thing is a f*cking ...

  5. Linux 设备树(Device Tree)简介

    DTS (device tree source) .dts文件是一种ASCII 文本格式的Device Tree描述,此文本格式非常人性化,适合人类的阅读习惯.基本上,在ARM Linux在,一个.d ...

  6. 设备树(device tree)学习笔记

    1.反编译设备树 在设备树学习的时候,如果可以看到最终生成的设备树的内容,对于我们学习设备树以及分析问题有很大帮助.这里我们需要使用设备树生成工具dtc的反编译功能 root@pengdl-Virtu ...

  7. Linux device tree 简要笔记

    第一.DTS简介      在嵌入式设备上,可能有不同的主板---它们之间差异表现在主板资源不尽相同,比如I2C.SPI.GPIO等接口定义有差别,或者是Timer不同,等等.于是这就产生了BSP的一 ...

  8. element tree不刷新视图_不懂Linux Device Tree,被新人嘲笑之后,含泪写完

    1 前言 关于设备树,之前就已经接触过很久了,但是本着够用的原则,基本上都是看着文档CRUD,处于一种不求甚解的状态,没有进行全面性的总结,导致很多知识点都是比较碎片状,没有形成一个系统的知识网络,最 ...

  9. Android 驱动开发(14)---深入学习Linux Device Tree

    深入学习Linux Device Tree 这个世界需要的是全力以赴,战胜他人先战胜子自己!! Linux Device Tree可描述的信息包括: cpu的数量和类型 内存基地址和大小 总线 外设 ...

  10. Linux Device tree(二) - DT分析

    分析DT. 1.DTB format   The Devicetree Blob (DTB) format is a flat binary encoding of devicetree data. ...

最新文章

  1. 题目1189:还是约瑟夫环
  2. release和retain还有多少人在用
  3. CentOS7中卸载Docker
  4. Anisble中的任务执行控制
  5. EJB3与Spring的集成
  6. Android之All children of ConstraintLayout must have ids to use ConstraintSet
  7. 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据
  8. Android开发笔记(八十八)同步与加锁
  9. cad常青藤插件_CAD作图效率低怎么办?最全辅助插件大合集,绘图效率提升70%,限时分享...
  10. javascript数组特性
  11. 关于常用STM32F103芯片型号代码
  12. matlab 矩阵卷积
  13. 线性布局LinearLayout(二)小练习
  14. 大话2正在连接登录服务器,大话西游手游服务器连接失败进不去解决办法
  15. [读论文] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)
  16. 几何分布及其期望与方差
  17. 小米弹性调度平台Ocean
  18. 搜索引擎免费登录入口
  19. 华硕 内存条 不同步_不想要传统PC的你或者需要看看华硕PN61
  20. 如何在本地磁盘安装PE系统

热门文章

  1. Google Chrome 浏览器离线安装包下载方法
  2. 测试用例设计之正交表设计
  3. 海康摄像机取流RTSP地址规则说明
  4. 单片机51keil编程流程
  5. 计算机cpu图片,电脑处理器天梯图2019
  6. Python之NLP(转)
  7. HTML5+CSS简单的期末大作业:体育运动主题网站设计——羽毛球网页(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 大学生毕设网页设计
  8. 「数字电子技术基础」6.触发器
  9. mysql 并行操作_将MySQL去重操作优化到极致之三弹连发(二):多线程并行执行...
  10. 软件项目管理 2.3.项目章程