在支持设备树的内核源码中,设备树用来取代来老版本内核中的平台文件。android
本文档主要介绍在iMX6开发板(iMX6Q,iMX6D,iMX6PLUS)的几个重要的设备树文件,这几个文件在后续的设备驱动分析中,常常会用到。ui
这里以iMX6Q的为例来分析,iMX6D 和 PLUS 的分析方法都是相似。spa
首先看下编译脚本,以下图所示,“build_android_kernel.sh”为android内核编译脚 本,“build_qt_kernel.sh”为 t内核编译脚本,这里以Qt的内核编译脚本为例3d
打开“build_qt_kernel.sh”,以下图所示,能够看到设备树文件是blog
“arch/arm/boot/dts”目录下的,“imx6q-topeet_10.1inch.dts”、“imx6q-topeet_7inch.dts”和“imx6q-topeet_9.7inch.dts”这三个。开发
上图中,这三个设备树文件的名称来看,应该是为了支持不一样分辨率的屏幕的配置,除了 屏幕部分的,其它部分应该是相同的,因此这里只须要分析其中一个便可(实际状况就是这样的,感兴趣能够本身对比下)。文档
这里以“imx6q-topeet_10.1inch.dts”为例来分析。源码
打开“arch/arm/boot/dts/imx6q-topeet_10.1inch.dts”,先看下调用的头文件,以下 图所示,有两个头文件“imx6q.dtsi”和“imx6qdl-sabresd.dtsi”。关于这个设备树文件, 其中大部份内容都是关于显卡的。qt
这里咱们看下调用的“imx6q.dtsi”,打开“arch/arm/boot/dts/imx6q.dtsi”,以下 图所示,看下头文件“imx6q-pinfunc.h”和“imx6qdl.dtsi”。io
“imx6q-pinfunc.h”头文件,若是你们之前用过飞思卡尔的 arm 芯片,那么就会知道 这个是 IO 的宏定义头文件,这是很重要的一个文件,这个文件在后面会常常用到---
“imx6q-pinfunc.h”在“arch/arm/boot/dts/imx6q-pinfunc.h”。
另外像“dt-bindings”打头的设备树头文件,暂时不用过多关注。
打开 “arch/arm/boot/dts/imx6qdl-sabresd.dtsi”文件,在其中能够搜到 “&iomuxc”,这个是飞思卡尔设备树文件中,给io初始化的地方。例如你要配置一个IO为输出,那么须要在这里初始化;另一层意思就是,每个IO都要初始化,通常咱们默认 是在这个位置进行初始化。
在这个文件下,咱们能够找到常规的led,蜂鸣器和rs485的设备树注册,这代表设备树 注册都是在这个文件中,若是咱们要新增长设备,须要在这里增长设备树代码,关于设备树代 码,咱们后续再介绍。
这里分析出了如下几个重要的文件:
1 关于屏幕(显卡)配置的设备树文件为如下几个文件(文件都在 arch/arm/boot/dts 目录下):
mx6q-topeet_10.1inch.dts topeet_10.1inch.dts
imx6q-topeet_7inch.dts topeet_7inch.dts
imx6q-topeet_9.7inch.dts topeet_9.7inch.dts
2 imx6的IO的宏定义在如下文件中:
arch/arm/boot/dts/imx6q-pinfunc.h
3 设备树对IO初始化和设备注册在如下文件中:
arch/arm/boot/dts/imx6qdl-sabresd.dtsi