本文主要是介绍EmbedFire i.MX 6ull开发板学习笔记(五)---设备树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
EmbedFire i.MX 6ull开发板学习笔记(五)---设备树
- 一、什么是设备树
- 二、dts,dtsi,dtb和dtc
- 三、基本语法
PS:讲解什么是设备树,设备树语法的文章,网上实在是太多了,讲得都比我好。我这里仅仅是做点笔记而已。
一、什么是设备树
为在一块板子上把Linux跑起来,需要对板子上的各种设备进行描述,比如:IIC控制器,SPI控制器,GPIO控制器等,编写相应的驱动代码。各种CPU型号,板子型号太多了,每个板子都要去编写的板级源码,造成Linux越来越“臃肿”,以前这些代码都在arch/arm/mach-xxx 和 arch/arm/plat-xxx目录下,存在大量的.c和.h源码。这些代码都会被编译进linux内核,但其实很多代码是没有用的,比如B板子上的某个LCD设备在我所用的A板子上是没有的,这就导致了linux内核的虚胖。Linux它爹linus在社区看见提交了大量这些无用代码,爆了粗口,很不高兴。所以社区参考PowerPC已采用的设备树(Flattened Device Tree)方式,把这些板级信息抽离出来,采用独立文件格式来描述,这就是设备树文件(.dts)。
二、dts,dtsi,dtb和dtc
dts:设备树文件,存放在arch//boot/dts目录,如 arch/arm/boot/dts/。
dtsi:设备树文文件,类似于.h文件,被dts文件引用,dts文件也可以引用.h文件。如imx6ull.dtsi文件里包含如下内容。
#include "imx6ul.dtsi"
#include "imx6ull-pinfunc.h"
#include "imx6ull-pinfunc-snvs.h"
dtsi文件一般描述CPU级的内置外设情况,如CPU,RAM,GPIO等,即对应同一CPU的不同板子它都是共用的。
dtb:dts编译后得到的二进制文件,Linux内核加载的就是它。
dtc:编译工具,由dtc.c、flattree.c、fstree.c等文件编译得到,编译过程在scripts/dtc/Makefile文件中可以查看。
单独编译设备树的命令:
make dtbs
三、基本语法
设备树(device-tree)既然叫树,它必然像树一样,属于树形结构,带有树干,枝干,枝叶。
树干:即系统总线。
枝干:即各种控制器(总线),如IIC控制器(总线),SPI控制器(总线)等。枝干下面还有子枝干,即:挂着各种控制器(总线)上的各种设备,如挂在IIC总线上的G-Sensor和TP。
枝叶:即各种设备的属性。
1、根节点采用反斜杠/表示,多个文件中,都可以有“/”,编译
这篇关于EmbedFire i.MX 6ull开发板学习笔记(五)---设备树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!