【ATU Book-i.MX 系列】如何修改 Linux 預設的裝置樹 (Device Tree)

簡介

正常情況下,開發者會將預設的裝置樹修改成自家客製化板子的設定,甚至會希望修改掉裝置樹的名稱。
如果只修改裝置樹名稱卻沒修改 U-Boot 預設的 fdtfile 的話,便會發生找不到該裝置樹的問題。

修改預設 fdtfile

以 i.MX8MP 來說,開發者可以在 U-Boot 的 configs/imx8mp_evk_defconfig 內設定預設的 fdtfile,但並非所有 i.MX 系列都支援這個設定,例如:i.MX8MQ

 CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb"

如果手上的 i.MX 系列不支援這功能的時候,此時就需要直接到設定的 .h 檔裡修改,以 i.MX8MQ 為例

// u-boot-imx/include/configs/imx8mq_evk.h

/* Initial environment variables */
#define CONFIG_EXTRA_ENV_SETTINGS \
BOOTENV \
"scriptaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"image=Image\0" \
"console=ttymxc0,115200\0" \
"fdt_addr_r=0x43000000\0" \
"boot_fdt=try\0" \
"fdtfile=imx8mq-evk.dtb\0" \
"initrd_addr=0x43800000\0" \
"bootm_size=0x10000000\0" \
"mmcpart=1\0" \
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \

CONFIG_EXTRA_ENV_SETTINGS 主要設定 U-Boot 的環境變數的,其中就包含了 Linux 預設的裝置樹,也就是 fdtfile,只需將其修改為開發者的裝置樹名稱即可。

此外也可以看一下 i.MX8MP 是怎麼設定的,如下:

#define CONFIG_EXTRA_ENV_SETTINGS		\
BOOTENV \
"scriptaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"image=Image\0" \
"console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200\0" \
"fdt_addr_r=0x43000000\0" \
"boot_fdt=try\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
"initrd_addr=0x43800000\0" \
"bootm_size=0x10000000\0" \

"mmcpart=1\0" \
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \​
可以看到 i.MX8MP 的 fdtfile 是透過變數去設定的,因此只要在 defconfig 內寫好變數,這裡便可直接完成設定。

ATU Support


如果你有任何需求,請聯絡 WPI 的 TW ATU 團隊

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論