1. 程式人生 > >迅為-iMX6開發板-裝置樹核心-裝置樹相關檔案簡要分析

迅為-iMX6開發板-裝置樹核心-裝置樹相關檔案簡要分析

    本文件主要介紹在iMX6開發板(iMX6Q,iMX6D,iMX6PLUS)的幾個重要的裝置樹檔案,這幾個檔案在後續的裝置驅動分析中,經常會用到。

   裝置樹檔案的分析

    這裡以iMX6Q的為例來分析,iMX6D 和 PLUS 的分析方法都是類似。

    首先看下編譯指令碼,如下圖所示,“build_android_kernel.sh”為android核心編譯腳 本,“build_qt_kernel.sh”為 t核心編譯指令碼,這裡以Qt的核心編譯指令碼為例

    開啟“build_qt_kernel.sh”,如下圖所示,可以看到裝置樹檔案是

    “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”。關於這個裝置樹檔案, 其中大部分內容都是關於顯示卡的。

    這裡我們看下呼叫的“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 目錄下):

    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-sabr