configs/kontron_bl_imx8mm_defconfig: new defconfig
PATCH v2 1/1 configs/kontron_bl_imx8mm_defconfig: new defconfig
The BL i.MX8M Mini is a baseboard that includes the SoM SL i.MX8M Mini.
https://www.kontron.com/produkte/baseboard-bl-i.mx8m-mini/p158549
---
v2:
- switch to extlinux
- directly call genimage.sh
- remove post-image.sh
- remove BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
- add BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME
DEVELOPERS | 2 + board/kontron/bl-imx8mm/extlinux.conf | 4 + board/kontron/bl-imx8mm/genimage.cfg | 18 ++ ...m-kontron-n801x-s-convert-options-to.patch | 28 ++ ...m-kontron-n801x-s-add-common-board-u.patch | 302 ++++++++++++++++++ board/kontron/bl-imx8mm/post-build.sh | 7 + board/kontron/bl-imx8mm/readme.txt | 85 +++++ configs/kontron_bl_imx8mm_defconfig | 59 ++++ 8 files changed, 505 insertions(+) create mode 100644 board/kontron/bl-imx8mm/extlinux.conf create mode 100644 board/kontron/bl-imx8mm/genimage.cfg create mode 100644 board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patch create mode 100644 board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch create mode 100755 board/kontron/bl-imx8mm/post-build.sh create mode 100644 board/kontron/bl-imx8mm/readme.txt create mode 100644 configs/kontron_bl_imx8mm_defconfig
DEVELOPERS +2 -0
@@ -1179,7 +1179,9 @@ F: package/python-sip/ F: package/uhd/ N: Heiko Thiery <[email protected]> +F: board/kontron/bl-imx8mm/ F: board/kontron/pitx-imx8m/ +F: configs/kontron_bl_imx8mm_defconfig F: configs/kontron_pitx_imx8m_defconfig F: package/altera-stapl/ F: package/ipmitool/
board/kontron/bl-imx8mm/extlinux.conf new file +4 -0
@@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mm-kontron-n801x-s.dtb + append root=PARTUUID=%PARTUUID% rootwait rw
board/kontron/bl-imx8mm/genimage.cfg new file +18 -0
@@ -0,0 +1,18 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + } + + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33k + } + + partition rootfs { + image = "rootfs.ext4" + offset = 8M + partition-uuid = %PARTUUID% + } +}
board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patch new file +28 -0
@@ -0,0 +1,28 @@ +From 95a311af81cd47c44d3d6e3f717f06a06d8f3dfd Mon Sep 17 00:00:00 2001 +From: Heiko Thiery <[email protected]> +Date: Mon, 10 Jan 2022 14:13:02 +0100 +Subject: [PATCH 1/2] imx: imx8mm: imx8mm-kontron-n801x-s: convert options to Kconfig + +CONFIG_SPL_MMC and CONFIG_SPL_SERIAL + +Signed-off-by: Heiko Thiery <[email protected]> +--- + configs/kontron-sl-mx8mm_defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configs/kontron-sl-mx8mm_defconfig b/configs/kontron-sl-mx8mm_defconfig +index 35d12fca32..940bf07a92 100644 +--- a/configs/kontron-sl-mx8mm_defconfig ++++ b/configs/kontron-sl-mx8mm_defconfig +@@ -15,6 +15,8 @@ CONFIG_SPL_DM_SPI=y + CONFIG_DEFAULT_DEVICE_TREE="imx8mm-kontron-n801x-s" + CONFIG_SPL_TEXT_BASE=0x7E1000 + CONFIG_TARGET_KONTRON_MX8MM=y ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y + CONFIG_BOOTCOUNT_BOOTLIMIT=3 + CONFIG_SPL=y + CONFIG_DISTRO_DEFAULTS=y +-- +2.30.2 +
board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch new file +302 -0
302 lines not on this page · raw message
board/kontron/bl-imx8mm/post-build.sh new file +7 -0
@@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"
board/kontron/bl-imx8mm/readme.txt new file +85 -0
85 lines not on this page · raw message
configs/kontron_bl_imx8mm_defconfig new file +59 -0
59 lines not on this page · raw message
Signature · 6 lines
2.30.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Heiko,
Quoted 64 lines
Il giorno 14 gen 2022, alle ore 22:17, Heiko Thiery <[email protected]> ha scritto:
The BL i.MX8M Mini is a baseboard that includes the SoM SL i.MX8M Mini.
https://www.kontron.com/produkte/baseboard-bl-i.mx8m-mini/p158549
Cc Frieder Schrempf <[email protected]>Signed-off-by Heiko Thiery <[email protected]>---
v2:
- switch to extlinux
- directly callgenimage.sh
- removepost-image.sh
- removeBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
- addBR2_LINUX_KERNEL_DTB_KEEP_DIRNAMEDEVELOPERS | 2 + board/kontron/bl-imx8mm/extlinux.conf | 4 + board/kontron/bl-imx8mm/genimage.cfg | 18 ++ ...m-kontron-n801x-s-convert-options-to.patch | 28 ++ ...m-kontron-n801x-s-add-common-board-u.patch | 302 ++++++++++++++++++ board/kontron/bl-imx8mm/post-build.sh | 7 + board/kontron/bl-imx8mm/readme.txt | 85 +++++ configs/kontron_bl_imx8mm_defconfig | 59 ++++ 8 files changed, 505 insertions(+)create mode 100644
board/kontron/bl-imx8mm/extlinux.conf
create mode 100644 board/kontron/bl-imx8mm/genimage.cfg
create mode 100644board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patchcreate mode 100644board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patchcreate mode 100755board/kontron/bl-imx8mm/post-build.sh
create mode 100644board/kontron/bl-imx8mm/readme.txt
create mode 100644 configs/kontron_bl_imx8mm_defconfigDEVELOPERS +0
-0@@ -1179,7 +1179,9 @@ F: package/python-sip/F: package/uhd/
N: Heiko Thiery <[email protected]>
+F: board/kontron/bl-imx8mm/
F: board/kontron/pitx-imx8m/
+F: configs/kontron_bl_imx8mm_defconfigF: configs/kontron_pitx_imx8m_defconfig F: package/altera-stapl/ F: package/ipmitool/board/kontron/bl-imx8mm/extlinux.conf new file +4
-0@@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mm-kontron-n801x-s.dtb + append root=PARTUUID=%PARTUUID% rootwait rwboard/kontron/bl-imx8mm/genimage.cfg new file +0
-0
board/kontron/bl-imx8mm/genimage.cfg line 10
Quoted 10 lines
board/kontron/bl-imx8mm/genimage.cfg new file +10
-0@@ -0,0 +1,18 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + } + + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33k
I’ve missed V1 patch, here ^^^ please use capitol K letter. I still have to write the linter for genimage.cfg files :-/
Quoted 250 lines
board/kontron/bl-imx8mm/genimage.cfg new file +8
-0+ } + + partition rootfs { + image = "rootfs.ext4" + offset = 8M + partition-uuid = %PARTUUID% + } +}board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patch new file +28
-0@@ -0,0 +1,28 @@ +From 95a311af81cd47c44d3d6e3f717f06a06d8f3dfd Mon Sep 17 00:00:00 2001 +From: Heiko Thiery <[email protected]> +Date: Mon, 10 Jan 2022 14:13:02 +0100 +Subject: [PATCH 1/2] imx: imx8mm: imx8mm-kontron-n801x-s: convert options to Kconfig + +CONFIG_SPL_MMC and CONFIG_SPL_SERIAL + +Signed-off-by: Heiko Thiery <[email protected]> +--- + configs/kontron-sl-mx8mm_defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configs/kontron-sl-mx8mm_defconfig b/configs/kontron-sl-mx8mm_defconfig +index 35d12fca32..940bf07a92 100644 +--- a/configs/kontron-sl-mx8mm_defconfig ++++ b/configs/kontron-sl-mx8mm_defconfig +@@ -15,6 +15,8 @@ CONFIG_SPL_DM_SPI=y + CONFIG_DEFAULT_DEVICE_TREE="imx8mm-kontron-n801x-s" + CONFIG_SPL_TEXT_BASE=0x7E1000 + CONFIG_TARGET_KONTRON_MX8MM=y ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y + CONFIG_BOOTCOUNT_BOOTLIMIT=3 + CONFIG_SPL=y + CONFIG_DISTRO_DEFAULTS=y +-- +2.30.2 +board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch new file +202
-0@@ -0,0 +1,302 @@ +From ef694c19c074333fd16589ec6ffef3e7ca895186 Mon Sep 17 00:00:00 2001 +From: Heiko Thiery <[email protected]> +Date: Wed, 12 Jan 2022 08:44:36 +0100 +Subject: [PATCH 2/2] imx: imx8mm: imx8mm-kontron-n801x-s: add common board + u-boot.dtsi + +When using a board variant that selects the lvds specific dtb the +*.u-boot.dtsi file will not be included. To have a lvds dtb specific +u-boot.dtsi file move this part to a common board u-boot.dtsi file and +include this in the board base u-boot.dtsi and create an additional one +for the lvds variant. + +Signed-off-by: Heiko Thiery <[email protected]> +--- + .../imx8mm-kontron-n801x-s-lvds-u-boot.dtsi | 6 + + .../dts/imx8mm-kontron-n801x-s-u-boot.dtsi | 124 +---------------- + arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi | 128 ++++++++++++++++++ + 3 files changed, 135 insertions(+), 123 deletions(-) + create mode 100644 arch/arm/dts/imx8mm-kontron-n801x-s-lvds-u-boot.dtsi + create mode 100644 arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi + +diff --git a/arch/arm/dts/imx8mm-kontron-n801x-s-lvds-u-boot.dtsi b/arch/arm/dts/imx8mm-kontron-n801x-s-lvds-u-boot.dtsi +new file mode 100644 +index 0000000000..4bf75722bf +--- /dev/null ++++ b/arch/arm/dts/imx8mm-kontron-n801x-s-lvds-u-boot.dtsi +@@ -0,0 +1,6 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (C) 2019 Kontron Electronics GmbH ++ */ ++ ++#include "imx8mm-kontron-n801x-u-boot.dtsi" +diff --git a/arch/arm/dts/imx8mm-kontron-n801x-s-u-boot.dtsi b/arch/arm/dts/imx8mm-kontron-n801x-s-u-boot.dtsi +index 22d18e6f1c..4bf75722bf 100644 +--- a/arch/arm/dts/imx8mm-kontron-n801x-s-u-boot.dtsi ++++ b/arch/arm/dts/imx8mm-kontron-n801x-s-u-boot.dtsi +@@ -3,126 +3,4 @@ + * Copyright (C) 2019 Kontron Electronics GmbH + */ + +-#include "imx8mm-u-boot.dtsi" +- +-/ { +- aliases { +- usb0 = &usbotg1; +- usb1 = &usbotg2; +- }; +- +- wdt-reboot { +- compatible = "wdt-reboot"; +- wdt = <&wdog1>; +- u-boot,dm-spl; +- }; +- +- firmware { +- optee { +- compatible = "linaro,optee-tz"; +- method = "smc"; +- }; +- }; +-}; +- +-&fec1 { +- phy-mode = "rgmii-rxid"; +-}; +- +-&i2c1 { +- u-boot,dm-spl; +- u-boot,dm-pre-reloc; +-}; +- +-&i2c2 { +- status = "okay"; +- u-boot,dm-spl; +- u-boot,dm-pre-reloc; +-}; +- +-&pinctrl_ecspi1 { +- u-boot,dm-spl; +-}; +- +-&pinctrl_i2c1 { +- u-boot,dm-spl; +-}; +- +-&pinctrl_pmic { +- u-boot,dm-spl; +- fsl,pins = < +- MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0 0x141 +- /* Disable Pullup for SD_VSEL */ +- MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x41 +- >; +-}; +- +-&pinctrl_uart3 { +- u-boot,dm-spl; +- u-boot,dm-pre-reloc; +-}; +- +-&pinctrl_usdhc1 { +- u-boot,dm-spl; +-}; +- +-&pinctrl_usdhc1_100mhz { +- u-boot,dm-spl; +-}; +- +-&pinctrl_usdhc1_200mhz { +- u-boot,dm-spl; +-}; +- +-&pinctrl_usdhc2 { +- u-boot,dm-spl; +-}; +- +-&pca9450 { +- u-boot,dm-spl; +-}; +- +-&{/soc@0/bus@30800000/i2c@30a20000/pmic@25/regulators} { +- u-boot,dm-spl; +-}; +- +-&ecspi1 { +- u-boot,dm-spl; +-}; +- +-&gpio1 { +- u-boot,dm-spl; +-}; +- +-&gpio2 { +- u-boot,dm-spl; +-}; +- +-&gpio3 { +- u-boot,dm-spl; +-}; +- +-&gpio4 { +- u-boot,dm-spl; +-}; +- +-&gpio5 { +- u-boot,dm-spl; +-}; +- +-&uart3 { +- u-boot,dm-spl; +- u-boot,dm-pre-reloc; +-}; +- +-&usdhc1 { +- u-boot,dm-spl; +-}; +- +-&usdhc2 { +- u-boot,dm-spl; +-}; +- +-&wdog1 { +- u-boot,dm-spl; +-}; ++#include "imx8mm-kontron-n801x-u-boot.dtsi" +diff --git a/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi b/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi +new file mode 100644 +index 0000000000..22d18e6f1c +--- /dev/null ++++ b/arch/arm/dts/imx8mm-kontron-n801x-u-boot.dtsi +@@ -0,0 +1,128 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (C) 2019 Kontron Electronics GmbH ++ */ ++ ++#include "imx8mm-u-boot.dtsi" ++ ++/ { ++ aliases { ++ usb0 = &usbotg1; ++ usb1 = &usbotg2; ++ }; ++ ++ wdt-reboot { ++ compatible = "wdt-reboot"; ++ wdt = <&wdog1>; ++ u-boot,dm-spl; ++ }; ++ ++ firmware { ++ optee { ++ compatible = "linaro,optee-tz"; ++ method = "smc"; ++ }; ++ }; ++}; ++ ++&fec1 { ++ phy-mode = "rgmii-rxid"; ++}; ++
board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch line 212
Quoted 10 lines
board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch new file +10
-0++&i2c1 { ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++}; ++ ++&i2c2 { ++ status = "okay"; ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++};
I don’t know the hardware of the board and it’s a bit off-topic, but do you really need 2 i2c channels before relocating uboot?
Best regards
Giulio
Quoted 266 lines
board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patch new file +90
-0++ ++&pinctrl_ecspi1 { ++ u-boot,dm-spl; ++}; ++ ++&pinctrl_i2c1 { ++ u-boot,dm-spl; ++}; ++ ++&pinctrl_pmic { ++ u-boot,dm-spl; ++ fsl,pins = < ++ MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0 0x141 ++ /* Disable Pullup for SD_VSEL */ ++ MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x41 ++ >; ++}; ++ ++&pinctrl_uart3 { ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++}; ++ ++&pinctrl_usdhc1 { ++ u-boot,dm-spl; ++}; ++ ++&pinctrl_usdhc1_100mhz { ++ u-boot,dm-spl; ++}; ++ ++&pinctrl_usdhc1_200mhz { ++ u-boot,dm-spl; ++}; ++ ++&pinctrl_usdhc2 { ++ u-boot,dm-spl; ++}; ++ ++&pca9450 { ++ u-boot,dm-spl; ++}; ++ ++&{/soc@0/bus@30800000/i2c@30a20000/pmic@25/regulators} { ++ u-boot,dm-spl; ++}; ++ ++&ecspi1 { ++ u-boot,dm-spl; ++}; ++ ++&gpio1 { ++ u-boot,dm-spl; ++}; ++ ++&gpio2 { ++ u-boot,dm-spl; ++}; ++ ++&gpio3 { ++ u-boot,dm-spl; ++}; ++ ++&gpio4 { ++ u-boot,dm-spl; ++}; ++ ++&gpio5 { ++ u-boot,dm-spl; ++}; ++ ++&uart3 { ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++}; ++ ++&usdhc1 { ++ u-boot,dm-spl; ++}; ++ ++&usdhc2 { ++ u-boot,dm-spl; ++}; ++ ++&wdog1 { ++ u-boot,dm-spl; ++}; +-- +2.30.2 +board/kontron/bl-imx8mm/post-build.sh new file +7
-0@@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"board/kontron/bl-imx8mm/readme.txt new file +85
-0@@ -0,0 +1,85 @@ +Kontron BL i.MX8M Mini +====================== + +https://www.kontron.com/produkte/baseboard-bl-i.mx8m-mini/p158549 + + +How to build it +=============== + +Configure buildroot: + + $ make kontron_bl_imx8mm_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + + +Result of the build +=================== + +After building, the output/images directory contains: + + output/images/ + ├── bl31.bin + ├── boot.scr + ├── ddr_fw.bin + ├── flash.bin + ├── Image + ├── imx8mm-kontron-n801x-s.dtb + ├── lpddr4_pmu_train_1d_dmem_201904.bin + ├── lpddr4_pmu_train_1d_dmem_202006.bin + ├── lpddr4_pmu_train_1d_dmem.bin + ├── lpddr4_pmu_train_1d_dmem_pad.bin + ├── lpddr4_pmu_train_1d_fw.bin + ├── lpddr4_pmu_train_1d_imem_201904.bin + ├── lpddr4_pmu_train_1d_imem_202006.bin + ├── lpddr4_pmu_train_1d_imem.bin + ├── lpddr4_pmu_train_1d_imem_pad.bin + ├── lpddr4_pmu_train_2d_dmem_201904.bin + ├── lpddr4_pmu_train_2d_dmem_202006.bin + ├── lpddr4_pmu_train_2d_dmem.bin + ├── lpddr4_pmu_train_2d_dmem_pad.bin + ├── lpddr4_pmu_train_2d_fw.bin + ├── lpddr4_pmu_train_2d_imem_201904.bin + ├── lpddr4_pmu_train_2d_imem_202006.bin + ├── lpddr4_pmu_train_2d_imem.bin + ├── lpddr4_pmu_train_2d_imem_pad.bin + ├── lpddr4_pmu_train_fw.bin + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.bin + └── u-boot-spl.bin + + +Flashing the SD card image +========================== + +To install the image on a SDCard simply copy sdcard.img to the storage (e.g. SD, eMMC) + + $ sudo dd if=output/images/sdcard.img of=<your-sd-device> + + +Preparing the board +=================== + + * Connect a serial line to the board + * Insert the SD card + * Power-up the board + + +Booting the board +================= + +By default the bootloader will search for the first valid image, starting +with the internal eMMC. To make sure the bootloader loads bootscript from +the correct location (SD card) set the boot_targets environment variable: + + $ setenv boot_targets mmc1configs/kontron_bl_imx8mm_defconfig new file +59
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y + +BR2_GLOBAL_PATCH_DIR="board/kontron/bl-imx8mm/patches" + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-kontron-n801x-s" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="IMX_BOOT_UART_BASE=0x30880000" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="kontron-sl-mx8mm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y + +# Required host tools to create the SD/eMMC image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/bl-imx8mm/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=ySignature · 6 lines
2.30.2 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Giulio,
Am Fr., 14. Jan. 2022 um 22:37 Uhr schrieb Giulio Benetti <[email protected]>:
Quoted 72 lines
Hi Heiko,
Quoted 69 lines
Il giorno 14 gen 2022, alle ore 22:17, Heiko Thiery <[email protected]> ha scritto:
The BL i.MX8M Mini is a baseboard that includes the SoM SL i.MX8M Mini.
https://www.kontron.com/produkte/baseboard-bl-i.mx8m-mini/p158549
Cc Frieder Schrempf <[email protected]>Signed-off-by Heiko Thiery <[email protected]>---
v2:
- switch to extlinux
- directly callgenimage.sh
- removepost-image.sh
- removeBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
- addBR2_LINUX_KERNEL_DTB_KEEP_DIRNAMEDEVELOPERS | 2 + board/kontron/bl-imx8mm/extlinux.conf | 4 + board/kontron/bl-imx8mm/genimage.cfg | 18 ++ ...m-kontron-n801x-s-convert-options-to.patch | 28 ++ ...m-kontron-n801x-s-add-common-board-u.patch | 302 ++++++++++++++++++ board/kontron/bl-imx8mm/post-build.sh | 7 + board/kontron/bl-imx8mm/readme.txt | 85 +++++ configs/kontron_bl_imx8mm_defconfig | 59 ++++ 8 files changed, 505 insertions(+)create mode 100644
board/kontron/bl-imx8mm/extlinux.conf
create mode 100644 board/kontron/bl-imx8mm/genimage.cfg
create mode 100644board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patchcreate mode 100644board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patchcreate mode 100755board/kontron/bl-imx8mm/post-build.sh
create mode 100644board/kontron/bl-imx8mm/readme.txt
create mode 100644 configs/kontron_bl_imx8mm_defconfigDEVELOPERS +0
-0@@ -1179,7 +1179,9 @@ F: package/python-sip/F: package/uhd/
N: Heiko Thiery <[email protected]>
+F: board/kontron/bl-imx8mm/
F: board/kontron/pitx-imx8m/
+F: configs/kontron_bl_imx8mm_defconfigF: configs/kontron_pitx_imx8m_defconfig F: package/altera-stapl/ F: package/ipmitool/board/kontron/bl-imx8mm/extlinux.conf new file +4
-0@@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mm-kontron-n801x-s.dtb + append root=PARTUUID=%PARTUUID% rootwait rwboard/kontron/bl-imx8mm/genimage.cfg new file +5
-0@@ -0,0 +1,18 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + }
Quoted 8 lines
board/kontron/bl-imx8mm/genimage.cfg line 10
Quoted 5 lines
board/kontron/bl-imx8mm/genimage.cfg new file +5
-0+ + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33kI’ve missed V1 patch, here ^^^ please use capitol K letter. I still have to write the linter for genimage.cfg files :-/
Indeed .. missed that. I will wait for some more comments and do a v3 with that fixed later.
[snip]
Quoted 11 lines
board/kontron/bl-imx8mm/genimage.cfg
Quoted 10 lines
board/kontron/bl-imx8mm/genimage.cfg new file +10
-0++&i2c1 { ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++}; ++ ++&i2c2 { ++ status = "okay"; ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++};
Quoted 2 lines
I don’t know the hardware of the board and it’s a bit off-topic, but do you really need 2 i2c channels before relocating uboot?
Good catch.
@Frieder: can you say something to that?
Signature · 5 lines
Heiko _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
A message that is not in the archive (sent off-list or not yet received): [email protected]
Hi Frieder, Heiko,
Quoted 105 lines · Frieder Schrempf
Am 14.01.22 um 22:54 schrieb Heiko Thiery:
Quoted 104 lines
Hi Giulio,
Am Fr., 14. Jan. 2022 um 22:37 Uhr schrieb Giulio Benetti <[email protected]>:
Quoted 72 lines
Hi Heiko,
Quoted 69 lines
Il giorno 14 gen 2022, alle ore 22:17, Heiko Thiery <[email protected]> ha scritto:
The BL i.MX8M Mini is a baseboard that includes the SoM SL i.MX8M Mini.
Cc Frieder Schrempf <[email protected]>Signed-off-by Heiko Thiery <[email protected]>---
v2:
- switch to extlinux
- directly callgenimage.sh
- removepost-image.sh
- removeBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
- addBR2_LINUX_KERNEL_DTB_KEEP_DIRNAMEDEVELOPERS | 2 + board/kontron/bl-imx8mm/extlinux.conf | 4 + board/kontron/bl-imx8mm/genimage.cfg | 18 ++ ...m-kontron-n801x-s-convert-options-to.patch | 28 ++ ...m-kontron-n801x-s-add-common-board-u.patch | 302 ++++++++++++++++++ board/kontron/bl-imx8mm/post-build.sh | 7 + board/kontron/bl-imx8mm/readme.txt | 85 +++++ configs/kontron_bl_imx8mm_defconfig | 59 ++++ 8 files changed, 505 insertions(+)create mode 100644
board/kontron/bl-imx8mm/extlinux.conf
create mode 100644 board/kontron/bl-imx8mm/genimage.cfg
create mode 100644board/kontron/bl-imx8mm/patches/uboot/0001-imx-imx8mm-imx8mm-kontron-n801x-s-convert-options-to.patchcreate mode 100644board/kontron/bl-imx8mm/patches/uboot/0002-imx-imx8mm-imx8mm-kontron-n801x-s-add-common-board-u.patchcreate mode 100755board/kontron/bl-imx8mm/post-build.sh
create mode 100644board/kontron/bl-imx8mm/readme.txt
create mode 100644 configs/kontron_bl_imx8mm_defconfigDEVELOPERS +0
-0@@ -1179,7 +1179,9 @@ F: package/python-sip/F: package/uhd/
N: Heiko Thiery <[email protected]>
+F: board/kontron/bl-imx8mm/
F: board/kontron/pitx-imx8m/
+F: configs/kontron_bl_imx8mm_defconfigF: configs/kontron_pitx_imx8m_defconfig F: package/altera-stapl/ F: package/ipmitool/board/kontron/bl-imx8mm/extlinux.conf new file +4
-0@@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mm-kontron-n801x-s.dtb + append root=PARTUUID=%PARTUUID% rootwait rwboard/kontron/bl-imx8mm/genimage.cfg new file +5
-0@@ -0,0 +1,18 @@ +image sdcard.img { + hdimage { + partition-table-type = "gpt" + gpt-location = 16K + }Quoted 8 lines
board/kontron/bl-imx8mm/genimage.cfg line 10
Quoted 5 lines
board/kontron/bl-imx8mm/genimage.cfg new file +5
-0+ + partition imx-boot { + in-partition-table = "no" + image = "flash.bin" + offset = 33kI’ve missed V1 patch, here ^^^ please use capitol K letter. I still have to write the linter for genimage.cfg files :-/
Indeed .. missed that. I will wait for some more comments and do a v3 with that fixed later.
[snip]
Quoted 13 lines
board/kontron/bl-imx8mm/genimage.cfg
Quoted 10 lines
board/kontron/bl-imx8mm/genimage.cfg new file +10
-0++&i2c1 { ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++}; ++ ++&i2c2 { ++ status = "okay"; ++ u-boot,dm-spl; ++ u-boot,dm-pre-reloc; ++};I don’t know the hardware of the board and it’s a bit off-topic, but do you really need 2 i2c channels before relocating uboot?
Quoted 9 lines
Quoted 3 lines
Good catch.
@Frieder: can you say something to that?
Hm, the I2C buses are used in SPL for configuring the PMIC and detecting the display, so the "u-boot,dm-spl" is correct. I'm not really sure at what time U-Boot proper probes the devices and if "u-boot,dm-pre-reloc" is needed or not.
CONFIG_SPL_DM_PMIC_PCA9450 and CONFIG_DM_PMIC_PCA9450 are both enabled and you add uboot,dm-spl and uboot,dm-pre-reloc. What I expect is that PMIC is initialized in SPL and in u-boot pre-reloc. So I think that for i2c1 node uboot,dm-pre-reloc is useless but you need to keep uboot,dm-spl.
Same goes for i2c2 if you use it with ush(uboot shell) since you have CONFIG_CMD_I2C enabled. Most of all, i2c2, if it's only used with CMD_I2C you can remove both uboot,dm-spl and uboot,dm-pre-reloc because the CMD_I2C will be available only after u-boot is relocated, for example when ush console is sent out.
Of course this deserves a test.
Do you have any kind of jtag-debugger to check this? Or can you enable uboot log debugging? That way you will be sure of what is going on.
Anyway you could check if PMIC changed its default voltages to what you've programmed and you can also check if i2c2 is probed with i2c ush command.
Best regards
Signature · 6 lines
Giulio Benetti Benetti Engineering sas _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Heiko,
I've missed one thing below,
On 14/01/22 22:15, Heiko Thiery wrote:
[SNIP]
configs/kontron_bl_imx8mm_defconfig line 3
Quoted 9 lines
configs/kontron_bl_imx8mm_defconfig new file +3
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y
i.MX8MM supports VFPv4-D16, so I would substitute this ^^^ with:BR2_ARM_FPU_VFPV4D16
This is to achieve the maximum performance.
Kind regards!
Signature · 2 lines
Giulio Benetti Benetti Engineering sas
Quoted 47 lines
configs/kontron_bl_imx8mm_defconfig new file +46
-0+ +BR2_GLOBAL_PATCH_DIR="board/kontron/bl-imx8mm/patches" + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-kontron-n801x-s" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloader +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="IMX_BOOT_UART_BASE=0x30880000" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="kontron-sl-mx8mm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYTHON3=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN=y +BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE=y
configs/kontron_bl_imx8mm_defconfig line 59
Quoted 10 lines
configs/kontron_bl_imx8mm_defconfig new file +10
-0+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="flash.bin" +BR2_TARGET_UBOOT_SPL=y + +# Required host tools to create the SD/eMMC image +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/bl-imx8mm/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Quoted 13 lines · On Mon, 17 Jan 2022 20:58:52 +0100 Giulio Benetti…
configs/kontron_bl_imx8mm_defconfig line 3
Quoted 9 lines
configs/kontron_bl_imx8mm_defconfig new file +3
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=yi.MX8MM supports VFPv4-D16, so I would substitute this ^^^ with:
BR2_ARM_FPU_VFPV4D16
Quoted 1 line
This is to achieve the maximum performance.
Nope, that's not really how it works. VFPv3 is better than VFPv3-D16. Indeed VFPv3 means that the the FPU has 32 double precision registers, while VFPv3-D16 means that it has "only" 16 double precision registers.
So, if the i.MX8MM has only the VFPv3-D16, then indeed it should be chosen, because code compiled with VFPv3 may not work, as it might use too many double precision registers.
On the other hand, if the i.MX8MM has the full VFPv3, then BR2_ARM_FPU_VFPV3=y should be used.
That being said, the gcc man page only documents vfpv3, vfpv3-d16-fp16, vfpv3-fp16 as extension for armv7-a. Interesting, would need to look into this.
Best regards,
Thomas
Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Thomas,
Quoted 16 lines · Thomas Petazzoni
Quoted 13 lines · On Mon, 17 Jan 2022 20:58:52 +0100 Giulio Benetti…
configs/kontron_bl_imx8mm_defconfig line 3
Quoted 9 lines
configs/kontron_bl_imx8mm_defconfig new file +3
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=yi.MX8MM supports VFPv4-D16, so I would substitute this ^^^ with:
BR2_ARM_FPU_VFPV4D16
Quoted 5 lines
Quoted 1 line
This is to achieve the maximum performance.
Nope, that's not really how it works. VFPv3 is better than VFPv3-D16. Indeed VFPv3 means that the the FPU has 32 double precision registers, while VFPv3-D16 means that it has "only" 16 double precision registers.
I'm a bit confused. The datasheet[1] states at 1.4.1:
``` • Media Processing Engine (MPE) with NEON technology supporting the Advanced Single Instruction Multiple Data architecture • Floating Point Unit (FPU) with support of the VFPv4-D16 architecture ```
[1]: https://www.nxp.com/docs/en/data-sheet/IMX8MMCEC.pdf
So I expect it to only have VFPv4-D16. And also NEON, but we can't mix them up in Aarch64 as I know.
Quoted 6 lines
So, if the i.MX8MM has only the VFPv3-D16, then indeed it should be chosen, because code compiled with VFPv3 may not work, as it might use too many double precision registers.
On the other hand, if the i.MX8MM has the full VFPv3, then BR2_ARM_FPU_VFPV3=y should be used.
It only has VFPv4-D16. I think I've explained myself bad. This is not to achieve maximum performance, simply datasheet states it only supports VFPv4-D16[1] and judging from this:
https://developer.arm.com/documentation/dui0472/h/CJADDCIF#:~:text=VFPv3%20has%2032%20double%2Dprecision,VFPv3%20with%20half%2Dprecision%20extensions.&text=VFPv4%20has%2032%20double%2Dprecision,to%20the%20features%20of%20VFPv3.
VFPv4 is retro-compatible with VFPv3, and I'd expect VFP4v4-D16 to be like that too. Is it possible that at the moment, by mistake, it worked without using more than 16 registers as VFPv3 that is retro-compatible with VFPv4-D16(maybe?).
Quoted 3 lines
That being said, the gcc man page only documents vfpv3, vfpv3-d16-fp16, vfpv3-fp16 as extension for armv7-a. Interesting, would need to look into this.
Yes, but i.MX8MM is a cortex-A53, so armv8-a:
https://developer.arm.com/ip-products/processors/cortex-a/cortex-a53
that then is retro-compatible to armv7-a if in Aarch32. But here we use it as BR2_aarch64, so armv8-a:
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
and it lists:
``` -mfpu=name This specifies what floating-point hardware (or hardware emulation) is available on the target. Permissible names are: ‘auto’, ‘vfpv2’, ‘vfpv3’, ‘vfpv3-fp16’, ‘vfpv3-d16’, ‘vfpv3-d16-fp16’, ‘vfpv3xd’, ‘vfpv3xd-fp16’, ‘neon-vfpv3’, ‘neon-fp16’, ‘vfpv4’, ‘vfpv4-d16’, ‘fpv4-sp-d16’, ‘neon-vfpv4’, ‘fpv5-d16’, ‘fpv5-sp-d16’, ‘fp-armv8’, ‘neon-fp-armv8’ and ‘crypto-neon-fp-armv8’. Note that ‘neon’ is an alias for ‘neon-vfpv3’ and ‘vfp’ is an alias for ‘vfpv2’. ```
So "vfpv4-d16" is possible.
Here I think we need vfpv4-d16 and not vfpv3 because of both DS and RM of i.MX8MM.
Does it sound good to you?
Thank you
Best regards
Signature · 6 lines
Giulio Benetti Benetti Engineering sas _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Giulio, Hi Thomas,
Am Di., 18. Jan. 2022 um 07:58 Uhr schrieb Giulio Benetti <[email protected]>:
Quoted 77 lines
Hi Thomas,
Quoted 16 lines · Thomas Petazzoni
Quoted 13 lines · On Mon, 17 Jan 2022 20:58:52 +0100 Giulio Benetti…
configs/kontron_bl_imx8mm_defconfig line 3
Quoted 9 lines
configs/kontron_bl_imx8mm_defconfig new file +3
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=yi.MX8MM supports VFPv4-D16, so I would substitute this ^^^ with:
BR2_ARM_FPU_VFPV4D16Quoted 5 lines
Quoted 1 line
This is to achieve the maximum performance.
Nope, that's not really how it works. VFPv3 is better than VFPv3-D16. Indeed VFPv3 means that the the FPU has 32 double precision registers, while VFPv3-D16 means that it has "only" 16 double precision registers.
I'm a bit confused. The datasheet[1] states at 1.4.1:
``` • Media Processing Engine (MPE) with NEON technology supporting the Advanced Single Instruction Multiple Data architecture • Floating Point Unit (FPU) with support of the VFPv4-D16 architecture ```[1]: https://www.nxp.com/docs/en/data-sheet/IMX8MMCEC.pdf
So I expect it to only have VFPv4-D16. And also NEON, but we can't mix them up in Aarch64 as I know.
Quoted 6 lines
So, if the i.MX8MM has only the VFPv3-D16, then indeed it should be chosen, because code compiled with VFPv3 may not work, as it might use too many double precision registers.
On the other hand, if the i.MX8MM has the full VFPv3, then BR2_ARM_FPU_VFPV3=y should be used.
It only has VFPv4-D16. I think I've explained myself bad. This is not to achieve maximum performance, simply datasheet states it only supports VFPv4-D16[1] and judging from this:
https://developer.arm.com/documentation/dui0472/h/CJADDCIF#:~:text=VFPv3%20has%2032%20double%2Dprecision,VFPv3%20with%20half%2Dprecision%20extensions.&text=VFPv4%20has%2032%20double%2Dprecision,to%20the%20features%20of%20VFPv3.VFPv4 is retro-compatible with VFPv3, and I'd expect VFP4v4-D16 to be like that too. Is it possible that at the moment, by mistake, it worked without using more than 16 registers as VFPv3 that is retro-compatible with VFPv4-D16(maybe?).
Quoted 3 lines
That being said, the gcc man page only documents vfpv3, vfpv3-d16-fp16, vfpv3-fp16 as extension for armv7-a. Interesting, would need to look into this.
Yes, but i.MX8MM is a cortex-A53, so armv8-a:
https://developer.arm.com/ip-products/processors/cortex-a/cortex-a53that then is retro-compatible to armv7-a if in Aarch32. But here we use it as
BR2_aarch64, so armv8-a:
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.htmland it lists:
``` -mfpu=name This specifies what floating-point hardware (or hardware emulation) is available on the target. Permissible names are: ‘auto’, ‘vfpv2’, ‘vfpv3’, ‘vfpv3-fp16’, ‘vfpv3-d16’, ‘vfpv3-d16-fp16’, ‘vfpv3xd’, ‘vfpv3xd-fp16’, ‘neon-vfpv3’, ‘neon-fp16’, ‘vfpv4’, ‘vfpv4-d16’, ‘fpv4-sp-d16’, ‘neon-vfpv4’, ‘fpv5-d16’, ‘fpv5-sp-d16’, ‘fp-armv8’, ‘neon-fp-armv8’ and ‘crypto-neon-fp-armv8’. Note that ‘neon’ is an alias for ‘neon-vfpv3’ and ‘vfp’ is an alias for ‘vfpv2’. ```
Quoted 6 lines
So "vfpv4-d16" is possible.
Here I think we need vfpv4-d16 and not vfpv3 because of both DS and RM of i.MX8MM.
Does it sound good to you?
After following the discussion in IRC between Yann and Michael I am sure that this setting cannot be used for the aarch64/cortex-A53 CPU. The settings BR2_ARM_CPU_HAS_FPU, BR2_ARM_CPU_HAS_VFPV2, BR2_ARM_CPU_HAS_VFPV3, BR2_ARM_CPU_HAS_VFPV4 and BR2_ARM_CPU_HAS_FP_ARMV8 are set implicitly.
I probably took the setting from the freescale_imx8mmevk_defconfig, which is then also not correct.
I then looked further at the other aarch64 defconfigs and saw that there are more that set the FPU settings.
# grep aarch64 -A50 configs/* | grep FPU | wc -l 28
I will remove this setting from the defconfig in this patch and also for the other kontron defconfig.
Signature · 5 lines
Heiko _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Heiko, Thomas,
Quoted 89 lines
Il giorno 18 gen 2022, alle ore 20:58, Heiko Thiery <[email protected]> ha scritto:
Hi Giulio, Hi Thomas,
Quoted 84 lines
Am Di., 18. Jan. 2022 um 07:58 Uhr schrieb Giulio Benetti <[email protected]>:
Hi Thomas,
Quoted 17 lines · Thomas Petazzoni
Quoted 13 lines · On Mon, 17 Jan 2022 20:58:52 +0100 Giulio Benetti…
configs/kontron_bl_imx8mm_defconfig line 3
Quoted 9 lines
configs/kontron_bl_imx8mm_defconfig new file +3
-0@@ -0,0 +1,59 @@ +# Architecture +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=yi.MX8MM supports VFPv4-D16, so I would substitute this ^^^ with:
BR2_ARM_FPU_VFPV4D16Quoted 5 lines
Quoted 1 line
This is to achieve the maximum performance.
Nope, that's not really how it works. VFPv3 is better than VFPv3-D16. Indeed VFPv3 means that the the FPU has 32 double precision registers, while VFPv3-D16 means that it has "only" 16 double precision registers.
I'm a bit confused. The datasheet[1] states at 1.4.1:
``` • Media Processing Engine (MPE) with NEON technology supporting the Advanced Single Instruction Multiple Data architecture • Floating Point Unit (FPU) with support of the VFPv4-D16 architecture ```[1]: https://www.nxp.com/docs/en/data-sheet/IMX8MMCEC.pdf
So I expect it to only have VFPv4-D16. And also NEON, but we can't mix them up in Aarch64 as I know.
Quoted 6 lines
So, if the i.MX8MM has only the VFPv3-D16, then indeed it should be chosen, because code compiled with VFPv3 may not work, as it might use too many double precision registers.
On the other hand, if the i.MX8MM has the full VFPv3, then BR2_ARM_FPU_VFPV3=y should be used.
It only has VFPv4-D16. I think I've explained myself bad. This is not to achieve maximum performance, simply datasheet states it only supports VFPv4-D16[1] and judging from this:
https://developer.arm.com/documentation/dui0472/h/CJADDCIF#:~:text=VFPv3%20has%2032%20double%2Dprecision,VFPv3%20with%20half%2Dprecision%20extensions.&text=VFPv4%20has%2032%20double%2Dprecision,to%20the%20features%20of%20VFPv3.VFPv4 is retro-compatible with VFPv3, and I'd expect VFP4v4-D16 to be like that too. Is it possible that at the moment, by mistake, it worked without using more than 16 registers as VFPv3 that is retro-compatible with VFPv4-D16(maybe?).
Quoted 3 lines
That being said, the gcc man page only documents vfpv3, vfpv3-d16-fp16, vfpv3-fp16 as extension for armv7-a. Interesting, would need to look into this.
Yes, but i.MX8MM is a cortex-A53, so armv8-a:
https://developer.arm.com/ip-products/processors/cortex-a/cortex-a53that then is retro-compatible to armv7-a if in Aarch32. But here we use it as
BR2_aarch64, so armv8-a:
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.htmland it lists:
``` -mfpu=name This specifies what floating-point hardware (or hardware emulation) is available on the target. Permissible names are: ‘auto’, ‘vfpv2’, ‘vfpv3’, ‘vfpv3-fp16’, ‘vfpv3-d16’, ‘vfpv3-d16-fp16’, ‘vfpv3xd’, ‘vfpv3xd-fp16’, ‘neon-vfpv3’, ‘neon-fp16’, ‘vfpv4’, ‘vfpv4-d16’, ‘fpv4-sp-d16’, ‘neon-vfpv4’, ‘fpv5-d16’, ‘fpv5-sp-d16’, ‘fp-armv8’, ‘neon-fp-armv8’ and ‘crypto-neon-fp-armv8’. Note that ‘neon’ is an alias for ‘neon-vfpv3’ and ‘vfp’ is an alias for ‘vfpv2’. ```So "vfpv4-d16" is possible.
Here I think we need vfpv4-d16 and not vfpv3 because of both DS and RM of i.MX8MM.
Quoted 7 lines
Quoted 1 line
Does it sound good to you?
After following the discussion in IRC between Yann and Michael I am sure that this setting cannot be used for the aarch64/cortex-A53 CPU. The settings
BR2_ARM_CPU_HAS_FPU,BR2_ARM_CPU_HAS_VFPV2,BR2_ARM_CPU_HAS_VFPV3,BR2_ARM_CPU_HAS_VFPV4andBR2_ARM_CPU_HAS_FP_ARMV8are set implicitly.
Yes, I was wrong and you point that fpu strategy falls back to BR2_ARM_FPU_FP_ARMV8 and it’s ok. But i.MX8MM supports NEON too, so I would go for setting BR2_ARM_FPU_NEON_FP_ARMV8, because as pointed here[1] the armv8 neon now supports IEEE 754 floating point standard.
BUT I’ve found that gcc[2] points that:
‘’’
If the selected floating-point hardware includes the NEON extension (e.g. -mfpu=neon), note that floating-point operations are not generated by GCC’s auto-vectorization pass unless -funsafe-math-optimizations is also specified. This is because NEON hardware does not fully implement the IEEE 754 standard for floating-point arithmetic (in particular denormal values are treated as zero), so the use of NEON instructions may lead to a loss of precision. ‘’’
So I still can’t understand if it’s something core related or something gcc related. Does anyone have any more in-depth explanation?
Anyway I agree with Heiko to remove the fpu strategy in this defconfig.
Best regards
—-
Giulio Benetti
Benetti Engineering sas
[1]: https://developer.arm.com/architectures/instruction-sets/floating-point
[2]: https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
Quoted 4 lines
I probably took the setting from the
freescale_imx8mmevk_defconfig, which is then also not correct.
Quoted 11 lines
I then looked further at the other aarch64 defconfigs and saw that there are more that set the FPU settings.
# grep aarch64 -A50 configs/* | grep FPU | wc -l 28
I will remove this setting from the defconfig in this patch and also for the other kontron defconfig.
Signature · 1 line
Heiko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
[please don't use html mails]
Am 2022-01-18 21:40, schrieb Giulio Benetti:
Quoted 16 lines
After following the discussion in IRC between Yann and Michael I am sure that this setting cannot be used for the aarch64/cortex-A53 CPU. The settings
BR2_ARM_CPU_HAS_FPU,BR2_ARM_CPU_HAS_VFPV2,BR2_ARM_CPU_HAS_VFPV3,BR2_ARM_CPU_HAS_VFPV4andBR2_ARM_CPU_HAS_FP_ARMV8are set implicitly.Yes, I was wrong and you point that fpu strategy falls back to
BR2_ARM_FPU_FP_ARMV8and it’s ok.
But i.MX8MM supports NEON too, so I would go for settingBR2_ARM_FPU_NEON_FP_ARMV8,
because as pointed here[1] the armv8 neon now supports IEEE 754 floating point standard.BUT I’ve found that gcc[2] points that:
‘’’
Quoted 9 lines
If the selected floating-point hardware includes the NEON extension (e.g. -mfpu=neon), note that floating-point operations are not generated by GCC’s auto-vectorization pass unless -funsafe-math-optimizations is also specified. This is because NEON hardware does not fully implement the IEEE 754 standard for floating-point arithmetic (in particular denormal values are treated as zero), so the use of NEON instructions may lead to a loss of precision.
‘’’
That is for aarch32 mode. aarch64 doesn't have the -mfpu switch. Instead the FPU support is either derived automatically or through modifiers of the -mcpu switch.
-michael
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Hi Michael,
Quoted 1 line · Michael Walle
[please don't use html mails]
I know, sometimes I write from mobile and I can't use plain-text :-/
Quoted 28 lines
Am 2022-01-18 21:40, schrieb Giulio Benetti:
Quoted 16 lines
After following the discussion in IRC between Yann and Michael I am sure that this setting cannot be used for the aarch64/cortex-A53 CPU. The settings
BR2_ARM_CPU_HAS_FPU,BR2_ARM_CPU_HAS_VFPV2,BR2_ARM_CPU_HAS_VFPV3,BR2_ARM_CPU_HAS_VFPV4andBR2_ARM_CPU_HAS_FP_ARMV8are set implicitly.Yes, I was wrong and you point that fpu strategy falls back to
BR2_ARM_FPU_FP_ARMV8and it’s ok.
But i.MX8MM supports NEON too, so I would go for settingBR2_ARM_FPU_NEON_FP_ARMV8,
because as pointed here[1] the armv8 neon now supports IEEE 754 floating point standard.BUT I’ve found that gcc[2] points that:
‘’’Quoted 9 lines
If the selected floating-point hardware includes the NEON extension (e.g. -mfpu=neon), note that floating-point operations are not generated by GCC’s auto-vectorization pass unless -funsafe-math-optimizations is also specified. This is because NEON hardware does not fully implement the IEEE 754 standard for floating-point arithmetic (in particular denormal values are treated as zero), so the use of NEON instructions may lead to a loss of precision.
‘’’
Quoted 3 lines
That is for aarch32 mode. aarch64 doesn't have the -mfpu switch. Instead the FPU support is either derived automatically or through modifiers of the -mcpu switch.
Thank you for the explanation, indeed as talked in IRC I've found that under armv8-a there are only options for +simd or +crypto. This explains everything to me.
Kind regards!
Signature · 6 lines
Giulio Benetti Benetti Engineering sas _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot