linux(M6G2C) 修改配置 dts 文件


dts 是device tree source 的簡寫,設備樹源文件, linux 修改硬件就靠該這個文件了.
1. 來到 arch/arm/boot/dts 目錄, 有很多種dts 文件, 找到你要修改的那個,
   從內核編譯的過程中能知道你要編譯的那個文件的名稱. 我的叫 imx6g2c-256m.dts
2. 參照原來的樣子來依樣畫葫蘆的改,
    例如 原來有 GPIO4_IO21 的配置是正常的, 如下:
    MX6UL_PAD_CSI_DATA00__GPIO4_IO21 0x10b0
    現在想加 GPIO4_IO22 , 那自然是copy 下那一行, 並把GPIO4_IO21 改爲GPIO4_IO22
    這樣參考該文件相關信息,補齊了我的配置,大概修改了有7, 8處地方吧.

3. 編譯.
    採用的是編譯系統的命令,
     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
     可是不出所料,出現了錯誤:

Error: arch/arm/boot/dts/imx6g2c-256m.dts:538.8-9 syntax error
FATAL ERROR: Unable to parse input tree
scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/imx6g2c-256m.dtb' failed
make[1]: *** [arch/arm/boot/dts/imx6g2c-256m.dtb] Error 1
arch/arm/Makefile:327: recipe for target 'dtbs' failed

還好,它提示了行號imx6g2c-256m.dts:538 行, 找到那一行,是我們剛剛添加的. 說明名稱沒有添加對.

4. 修改:
    先爲內核系統文件建一個tags 文件, ctags -R  生成tags
    再到arch/arm/boot/dts 目錄,再用vim 打開imx6g2c-256m.dts, 用set tags+=<路徑名新tags>
    就可以在系統中查找名稱的定義了.
    原來的GPIO4_IO21 用tag 命令一查爲:
    #define MX6UL_PAD_CSI_DATA00__GPIO4_IO21                          0x01E4 0x0470 0x0000 0x5 0x0

所在的文件爲 /home/hjj/M6G2C/04.源碼示例/3.軟件源碼/linux-src/arch/arm/boot/dts/imx6ul-pinfunc.h
    而我們添加的GPIO4_IO22 則用tag 鍵找不到定義, 在這個文件中找一下,發現爲
    MX6UL_PAD_CSI_DATA01__GPIO4_IO21 0x10b0

    把我們剛纔copy 的DATA00改爲DATA01, 再編譯,就通過了.
    其它幾個copy 的名稱也用該方式修改好,就編譯出dtb 文件了.

    由此也可看到,tags 文件不用使用整個系統的, 在dts 目錄下也已經夠用了.

另外,一個引腳只能定義一種功能,例如DATA17 定義了gpio, 就不要定義其它功能了,例如uart或sdh等
例如DATA17可以有如下多重選擇,但你只能選用其中一種,不能選擇2種以上
#define MX6UL_PAD_LCD_DATA17__LCDIF_DATA17                        0x015C 0x03E8 0x0000 0x0 0x0
#define MX6UL_PAD_LCD_DATA17__UART7_DCE_RX                        0x015C 0x03E8 0x0654 0x1 0x3
#define MX6UL_PAD_LCD_DATA17__UART7_DTE_TX                        0x015C 0x03E8 0x0000 0x1 0x0
#define MX6UL_PAD_LCD_DATA17__CA7_MX6UL_TRACE_CTL                 0x015C 0x03E8 0x0000 0x2 0x0
#define MX6UL_PAD_LCD_DATA17__CSI_DATA00                          0x015C 0x03E8 0x04D0 0x3 0x1
#define MX6UL_PAD_LCD_DATA17__EIM_DATA09                          0x015C 0x03E8 0x0000 0x4 0x0
#define MX6UL_PAD_LCD_DATA17__GPIO3_IO22                          0x015C 0x03E8 0x0000 0x5 0x0
#define MX6UL_PAD_LCD_DATA17__SRC_BT_CFG25                        0x015C 0x03E8 0x0000 0x6 0x0
#define MX6UL_PAD_LCD_DATA17__USDHC2_DATA7                        0x015C 0x03E8 0x0698 0x8 0x0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章