在支持設備樹的內核源碼中,設備樹用來取代來老版本內核中的平臺文件。android
本文檔主要介紹在 迅爲iMX6 開發板(iMX6Q,iMX6D,iMX6PLUS)的幾個重要的設備樹文件,這幾個文件在後續的設備驅動分析中,常常會用到。ui
設備樹文件的分析 spa
這裏以 iMX6Q 的爲例來分析,iMX6D 和 PLUS 的分析方法都是相似。blog
首先看下編譯腳本,以下圖所示,「build_android_kernel.sh」爲 android 內核編譯腳本,「build_qt_kernel.sh」爲 qt 內核編譯腳本,這裏以 Qt 的內核編譯腳本爲例、開發
打開「build_qt_kernel.sh」,以下圖所示,能夠看到設備樹文件是文檔
「arch/arm/boot/dts」目錄下的,「imx6q-topeet_10.1inch.dts」、「imx6q get
topeet_7inch.dts」和「imx6q-topeet_9.7inch.dts」這三個。源碼
上圖中,這三個設備樹文件的名稱來看,應該是爲了支持不一樣分辨率的屏幕的配置,除了屏幕部分的,其它部分應該是相同的,因此這裏只須要分析其中一個便可(實際狀況就是這樣的,感興趣能夠本身對比下)。qt
這裏以「imx6q-topeet_10.1inch.dts」爲例來分析。 打開「arch/arm/boot/dts/imx6q-topeet_10.1inch.dts」,先看下調用的頭文件,以下圖所示,有兩個頭文件「imx6q.dtsi」和「imx6qdl-sabresd.dtsi」。關於這個設備樹文件, 其中大部份內容都是關於顯卡的。io
這裏咱們看下調用的「imx6q.dtsi」,打開「arch/arm/boot/dts/imx6q.dtsi」,以下圖所示,看下頭文件「imx6q-pinfunc.h」和「imx6qdl.dtsi」。
「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目錄下):
imx6q-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