Skip to contentSkip to conversation

imx/post-image: Allow flashing u-boot-dtb.imx in the SD card

PATCH New Fabio Estevam 2 participants 10 messages Jul 8, 2018 – Jul 18, 2018 Arm i.MX and Layerscape

lore
Share & tools
lore

Fabio Estevam

author reviewer
#0 lore raw

PATCH v2 1/2 imx/post-image: Allow flashing u-boot-dtb.imx in the SD card

Add support for flashing the u-boot-dtb.imx binary in the SD card when a target selects BR2_TARGET_UBOOT_FORMAT_DTB_IMX.

---
Changes since v1:
- Use a UBOOTBIN variable to decide the U-Boot binary name instead of creating a new genimage.cfg variant. (Thanks to Arnout!)

 board/freescale/common/imx/genimage.cfg.template |  2 +-
 board/freescale/common/imx/post-image.sh         | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
board/freescale/common/imx/genimage.cfg.template +1 -1
index acce058..2a7036a 100644
@@ -22,7 +22,7 @@ image sdcard.img {
 
   partition u-boot {
     in-partition-table = "no"
-    image = "u-boot.imx"
+    image = "%UBOOTBIN%"
     offset = 1024
   }
 
board/freescale/common/imx/post-image.sh +11 -0
index 264c8a4..6590bed 100755
@@ -41,13 +41,24 @@ genimage_type()
 	fi
 }
 
+uboot_image()
+{
+	if grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$" ${BR2_CONFIG}; then
+		echo "u-boot-dtb.imx"
+	elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMX=y$" ${BR2_CONFIG}; then
+		echo "u-boot.imx"
+	fi
+}
+
 main()
 {
 	local FILES="$(dtb_list) $(linux_image)"
+	local UBOOTBIN="$(uboot_image)"
 	local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"
 	local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
 
 	sed -e "s/%FILES%/${FILES}/" \
+		-e "s/%UBOOTBIN%/${UBOOTBIN}/" \
 		board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG}
 
 	rm -rf "${GENIMAGE_TMP}"
Signature · 1 line
2.7.4
author reviewer
#1 lore raw

PATCH v2 1/2 imx/post-image: Allow flashing u-boot-dtb.imx in the SD card

Hi Arnout,

Quoted 8 lines · Fabio Estevam

Add support for flashing the u-boot-dtb.imx binary in the SD card when a target selects BR2_TARGET_UBOOT_FORMAT_DTB_IMX.

---
Changes since v1:
- Use a UBOOTBIN variable to decide the U-Boot binary name instead of creating a new genimage.cfg variant. (Thanks to Arnout!)

Are you happy with this version?

Thanks

author reviewer
#2 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

In reply to Fabio Estevam

Introduce imx7d-sdb_defconfig that allows booting imx7d-sdb board using U-Boot and kernel mainline instead of the vendor provided versions.

---
Changes since v1:
- None

 configs/imx7d-sdb_defconfig | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 configs/imx7d-sdb_defconfig
configs/imx7d-sdb_defconfig new file +36 -0
new file mode 100644
index 0000000..b1cc5f8
@@ -0,0 +1,36 @@
+# architecture
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_FPU_NEON_VFPV4=y
+
+# Linux headers same as kernel, a 4.17 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y
+
+# system
+BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.4"
+BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+
+# U-Boot
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd"
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01"
+BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y
+
+# Filesystem
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+
+# required tools to create the eMMC image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
Signature · 1 line
2.7.4
#3 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Hello,

Quoted 8 lines · Fabio Estevam

Introduce imx7d-sdb_defconfig that allows booting imx7d-sdb board using U-Boot and kernel mainline instead of the vendor provided versions.

---
Changes since v1:
- None

This was lacking the update to the DEVELOPERS file and to the .gitlab-ci.yml file, so I fixed that and applied. Thanks!

However, I find the naming a bit strange. If I understand correctly freescale_imx7dsabresd_defconfig and imx7d-sdb_defconfig are for the same board, the former using the vendor kernel, the latter using the mainline kernel. If that's the case, why isn't the defconfig having the same name, except for the freescale_ prefix ?

Also, the board folder is named "imx7dsdb", which isn't very consistent.

Could you clarify this and perhaps increase the consistency ?

Thanks a lot!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
author reviewer
#4 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Hi Thomas,

Quoted 2 lines · Thomas Petazzoni

This was lacking the update to the DEVELOPERS file and to the .gitlab-ci.yml file, so I fixed that and applied. Thanks!

Ops, thanks for fixing these points!

Quoted 5 lines

However, I find the naming a bit strange. If I understand correctly freescale_imx7dsabresd_defconfig and imx7d-sdb_defconfig are for the same board, the former using the vendor kernel, the latter using the mainline kernel. If that's the case, why isn't the defconfig having the same name, except for the freescale_ prefix ?

For boards that use mainline kernel and U-Boot I try to name its Buildroot defconfig using the same convention used in its device tree:
<soc>-<board>, so that is why I used imx7d-sdb_defconfig.

Quoted 1 line

Also, the board folder is named "imx7dsdb", which isn't very consistent.

Yes, I can change it to "imx7d-sdb" for better consistency.

Thanks

#5 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Hello,

Quoted 9 lines · Fabio Estevam
Quoted 5 lines

However, I find the naming a bit strange. If I understand correctly freescale_imx7dsabresd_defconfig and imx7d-sdb_defconfig are for the same board, the former using the vendor kernel, the latter using the mainline kernel. If that's the case, why isn't the defconfig having the same name, except for the freescale_ prefix ?

For boards that use mainline kernel and U-Boot I try to name its Buildroot defconfig using the same convention used in its device tree:
<soc>-<board>, so that is why I used imx7d-sdb_defconfig.

That makes sense. So I guess the DT name in the vendor kernel is different, and that's why our defconfigs have a different name between the vendor and mainline variants for a given board ?

Quoted 3 lines
Quoted 1 line

Also, the board folder is named "imx7dsdb", which isn't very consistent.

Yes, I can change it to "imx7d-sdb" for better consistency.

Yeah, that's just a minor detail :-) However, it still wouldn't be very consistent with the name of the defconfig for the vendor u-boot/kernel variant.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
author reviewer
#6 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Hi Thomas,

Quoted 3 lines · Thomas Petazzoni

That makes sense. So I guess the DT name in the vendor kernel is different, and that's why our defconfigs have a different name between the vendor and mainline variants for a given board ?

Actually the dts name in the vendor kernel is the same.

We could just add a "freescale" prefix to make clear that it refers to a defconfig that uses the vendor U-Boot and kernel.

For example:

imx7d-sdb_defconfig: this Buildroot defconfig uses mainline U-Boot/kernel freescale_imx7d-sdb_defconfig: this Buildroot defconfig uses the vendor provided U-Boot/kernel.

If you agree I can try to adopt such naming scheme.

Thanks

#7 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Hello,

Quoted 10 lines · Fabio Estevam

Actually the dts name in the vendor kernel is the same.

We could just add a "freescale" prefix to make clear that it refers to a defconfig that uses the vendor U-Boot and kernel.

For example:

imx7d-sdb_defconfig: this Buildroot defconfig uses mainline U-Boot/kernel freescale_imx7d-sdb_defconfig: this Buildroot defconfig uses the vendor provided U-Boot/kernel.

To me, this is what would make the most sense.

So, is configs/freescale_imx7dsabresd_defconfig related to this same board, or is it a completely different board ?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
author reviewer
#8 lore raw

PATCH v2 2/2 configs/imx7d-sdb: Add new defconfig

Quoted 11 lines · Thomas Petazzoni

Hello,

Quoted 7 lines · Fabio Estevam

Actually the dts name in the vendor kernel is the same.

We could just add a "freescale" prefix to make clear that it refers to a defconfig that uses the vendor U-Boot and kernel.

For example:

Quoted 8 lines
Quoted 3 lines

imx7d-sdb_defconfig: this Buildroot defconfig uses mainline U-Boot/kernel freescale_imx7d-sdb_defconfig: this Buildroot defconfig uses the vendor provided U-Boot/kernel.

To me, this is what would make the most sense.

So, is configs/freescale_imx7dsabresd_defconfig related to this same board, or is it a completely different board ?

It is the same board.

From a Buildroot perspective the only difference between freescale_imx7dsabresd_defconfig and imx7d-sdb_defconfig is that the one with "freescale" uses the vendor U-Boot and kernel.

I will try to improve the board names as per the suggestion above.

Thanks

#9 lore raw

PATCH v2 1/2 imx/post-image: Allow flashing u-boot-dtb.imx in the SD card

In reply to Fabio Estevam

Hello,

Quoted 8 lines · Fabio Estevam

Add support for flashing the u-boot-dtb.imx binary in the SD card when a target selects BR2_TARGET_UBOOT_FORMAT_DTB_IMX.

---
Changes since v1:
- Use a UBOOTBIN variable to decide the U-Boot binary name instead of creating a new genimage.cfg variant. (Thanks to Arnout!)

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com