У меня есть пользовательское изображение для beaglebone, созданное с помощью linux -yocto-tiny. Чтобы заставить мой плащ работать, я создал специальный файл .dts. Все успешно компилируется, .dtb создается и помещается в загрузочную директорию. Однако при загрузке linux пытается загрузить am335x-boneblack.dtb. Я уверен, что мое пользовательское дерево устройств работает, потому что, когда я переименовываю его в am335x ***, все работает как положено.
Теперь я сделал несколько патчей, которые, я думал, сделает linux загрузить дерево моего устройства: 1) В моем файле конфигурации машины my-yocto.conf у меня есть следующие строки (вставка релевантна, по моему мнению):
KERNEL_DEVICETREE = "my-cape.dtb"
IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage my-cape.dtb"
UBOOT_MACHINE = "am335x_evm_defconfig"
2) Я пропатчил make-файл :
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index dab2914fa..6f9892643 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -730,6 +730,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
am335x-base0033.dtb \
am335x-bone.dtb \
am335x-boneblack.dtb \
+ my-cape.dtb \
am335x-boneblack-wireless.dtb \
am335x-boneblue.dtb \
am335x-bonegreen.dtb \
3) Сделаны исправления в u-boot:
Здесь я не был уверен, что поместить в CONFIG_OF_LIST, имя машины или дерева устройств, поэтому я поместил оба :
diff --git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
index 3457c1fc34..cc260ccedf 100644
--- a/configs/am335x_evm_defconfig
+++ b/configs/am335x_evm_defconfig
@@ -32,7 +32,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),1
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_DEFAULT_DEVICE_TREE="am335x-evm"
-CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2 am335x-pocketbeagle"
+CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2 am335x-pocketbeagle my-cape my-yocto"
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_SPL_ENV_IS_NOWHERE=y
CONFIG_BOOTCOUNT_LIMIT=y
--
2.17.1
Изменения в am335x_evm.h:
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index c2b2d8dc..e0c1a160 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -139,7 +139,7 @@
"if test $board_name = A335BONE; then " \
"setenv fdtfile my-cape.dtb; fi; " \
"if test $board_name = A335BNLT; then " \
- "setenv fdtfile am335x-boneblack.dtb; fi; " \
+ "setenv fdtfile my-cape.dtb; fi; " \
"if test $board_name = A335PBGL; then " \
"setenv fdtfile am335x-pocketbeagle.dtb; fi; " \
"if test $board_name = BBBW; then " \
--
2.17.1
и
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index b5fba0a8b0..c2b2d8dc90 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -103,7 +103,7 @@
"bootpart=0:2\0" \
"bootdir=/boot\0" \
"bootfile=zImage\0" \
- "fdtfile=undefined\0" \
+ "fdtfile=my-cape.dtb\0" \
"console=ttyO0,115200n8\0" \
"partitions=" \
Я что-то пропустил? Я могу загрузить свой DTB с помощью файла uEnv (что я и сделал, и это работает). Но я бы хотел, чтобы мое дерево устройств загружалось без него. После загрузки системы я вижу это:
witch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
switch to partitions #0, OK
mmc1(part 0) is current device
SD/MMC found on device 1
** Unrecognized filesystem type **
** Unrecognized filesystem type **
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
119 bytes read in 5 ms (22.5 KiB/s)
1: Yocto
Retrieving file: /zImage
8905216 bytes read in 574 ms (14.8 MiB/s)
append: root=PARTUUID=0b6a9c67-02 rootwait console=ttyS0,115200
Retrieving file: /am335x-boneblack.dtb
Skipping Yocto for failure retrieving fdt
Как мне сделать u-boot для поиска my-cape.dtb вместо am335x-boneblack.dtb?
EDIT
Я нашел это, когда делал printenv:
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi
Почему он все еще ищет am335x-bone.dtb? Я думаю, что что-то перезаписывает мои патчи.