Message ID | 20210823150357.247295-5-marcel@ziswiler.com |
---|---|
State | Superseded |
Delegated to: | Stefano Babic |
Headers | show |
Series | board: toradex: verdin-imx8mm: target refresh | expand |
Hi Marcel, Am Mo., 23. Aug. 2021 um 17:04 Uhr schrieb Marcel Ziswiler <marcel@ziswiler.com>: > > From: Marcel Ziswiler <marcel.ziswiler@toradex.com> > > Use binman to pack images. > > Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Reviewed-by: Heiko Thiery <heiko.thiery@gmail.com> > --- > > Changes in v2: > - Explicitly pass filename to binman when generating binaries as > suggested by Heiko. > - Use proper intermediate binary u-boot-spl-ddr.bin for imximage as > pointed out by Heiko. > > arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 124 ++++++++++++++++++++++- > arch/arm/mach-imx/imx8m/Kconfig | 1 + > board/toradex/verdin-imx8mm/imximage.cfg | 11 +- > configs/verdin-imx8mm_defconfig | 2 +- > doc/board/toradex/verdin-imx8mm.rst | 53 +++++----- > 5 files changed, 157 insertions(+), 34 deletions(-) > > diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > index a97626fa0c1..a3ad8f3ad37 100644 > --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > @@ -1,11 +1,15 @@ > // SPDX-License-Identifier: GPL-2.0+ OR MIT > /* > - * Copyright 2020 Toradex > + * Copyright 2021 Toradex > */ > > #include "imx8mm-u-boot.dtsi" > > / { > + binman: binman { > + multiple-images; > + }; > + > firmware { > optee { > compatible = "linaro,optee-tz"; > @@ -91,3 +95,121 @@ > &wdog1 { > u-boot,dm-spl; > }; > + > +&binman { > + u-boot-spl-ddr { > + align = <4>; > + align-size = <4>; > + filename = "u-boot-spl-ddr.bin"; > + pad-byte = <0xff>; > + > + u-boot-spl { > + align-end = <4>; > + }; > + > + blob_1: blob-ext@1 { > + filename = "lpddr4_pmu_train_1d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_2: blob-ext@2 { > + filename = "lpddr4_pmu_train_1d_dmem.bin"; > + size = <0x4000>; > + }; > + > + blob_3: blob-ext@3 { > + filename = "lpddr4_pmu_train_2d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_4: blob-ext@4 { > + filename = "lpddr4_pmu_train_2d_dmem.bin"; > + size = <0x4000>; > + }; > + }; > + > + spl { > + filename = "spl.bin"; > + > + mkimage { > + args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000"; > + > + blob { > + filename = "u-boot-spl-ddr.bin"; > + }; > + }; > + }; > + > + itb { > + filename = "u-boot.itb"; > + > + fit { > + description = "Configuration to load ATF before U-Boot"; > + fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>; > + #address-cells = <1>; > + > + images { > + uboot { > + arch = "arm64"; > + compression = "none"; > + description = "U-Boot (64-bit)"; > + load = <CONFIG_SYS_TEXT_BASE>; > + type = "standalone"; > + > + uboot_blob: blob-ext { > + filename = "u-boot-nodtb.bin"; > + }; > + }; > + > + atf { > + arch = "arm64"; > + compression = "none"; > + description = "ARM Trusted Firmware"; > + entry = <0x920000>; > + load = <0x920000>; > + type = "firmware"; > + > + atf_blob: blob-ext { > + filename = "bl31.bin"; > + }; > + }; > + > + fdt { > + compression = "none"; > + description = "NAME"; > + type = "flat_dt"; > + > + uboot_fdt_blob: blob-ext { > + filename = "u-boot.dtb"; > + }; > + }; > + }; > + > + configurations { > + default = "conf"; > + > + conf { > + description = "NAME"; > + fdt = "fdt"; > + firmware = "uboot"; > + loadables = "atf"; > + }; > + }; > + }; > + }; > + > + imx-boot { > + filename = "flash.bin"; > + pad-byte = <0x00>; > + > + spl: blob-ext@1 { > + filename = "spl.bin"; > + offset = <0x0>; > + }; > + > + uboot: blob-ext@2 { > + filename = "u-boot.itb"; > + offset = <0x5fc00>; > + }; > + }; > +}; > diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig > index a2ba30cf332..3eccc6b4d4f 100644 > --- a/arch/arm/mach-imx/imx8m/Kconfig > +++ b/arch/arm/mach-imx/imx8m/Kconfig > @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ > > config TARGET_VERDIN_IMX8MM > bool "Support Toradex Verdin iMX8M Mini module" > + select BINMAN > select IMX8MM > select SUPPORT_SPL > select IMX8M_LPDDR4 > diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg > index b8b25ff4201..a303f98e170 100644 > --- a/board/toradex/verdin-imx8mm/imximage.cfg > +++ b/board/toradex/verdin-imx8mm/imximage.cfg > @@ -1,16 +1,9 @@ > /* SPDX-License-Identifier: GPL-2.0+ */ > /* > - * Copyright 2020 Toradex > + * Copyright 2021 Toradex > */ > > #define __ASSEMBLY__ > > -FIT > BOOT_FROM emmc_fastboot > -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 > -SECOND_LOADER u-boot.itb 0x40200000 0x60000 > - > -DDR_FW lpddr4_pmu_train_1d_imem.bin > -DDR_FW lpddr4_pmu_train_1d_dmem.bin > -DDR_FW lpddr4_pmu_train_2d_imem.bin > -DDR_FW lpddr4_pmu_train_2d_dmem.bin > +LOADER u-boot-spl-ddr.bin 0x7E1000 > diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig > index 624f1b99096..b323ceb19af 100644 > --- a/configs/verdin-imx8mm_defconfig > +++ b/configs/verdin-imx8mm_defconfig > @@ -24,7 +24,7 @@ CONFIG_DISTRO_DEFAULTS=y > CONFIG_FIT=y > CONFIG_FIT_EXTERNAL_OFFSET=0x3000 > CONFIG_SPL_LOAD_FIT=y > -CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" > +# CONFIG_USE_SPL_FIT_GENERATOR is not set > CONFIG_OF_SYSTEM_SETUP=y > CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/verdin-imx8mm/imximage.cfg" > # CONFIG_USE_BOOTCOMMAND is not set > diff --git a/doc/board/toradex/verdin-imx8mm.rst b/doc/board/toradex/verdin-imx8mm.rst > index b9f7dc39c96..a11c82da2f5 100644 > --- a/doc/board/toradex/verdin-imx8mm.rst > +++ b/doc/board/toradex/verdin-imx8mm.rst > @@ -34,10 +34,10 @@ Get the DDR Firmware > .. code-block:: bash > > $ cd .. > - $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.4.1.bin > - $ chmod +x firmware-imx-8.4.1.bin > - $ ./firmware-imx-8.4.1.bin > - $ cp firmware-imx-8.4.1/firmware/ddr/synopsys/lpddr4*.bin ./ > + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.10.1.bin > + $ chmod +x firmware-imx-8.10.1.bin > + $ ./firmware-imx-8.10.1.bin > + $ cp firmware-imx-8.10.1/firmware/ddr/synopsys/lpddr4*.bin ./ > > Build U-Boot > ------------ > @@ -46,7 +46,7 @@ Build U-Boot > $ export CROSS_COMPILE=aarch64-linux-gnu- > $ export ATF_LOAD_ADDR=0x920000 > $ make verdin-imx8mm_defconfig > - $ make flash.bin > + $ make > > Flash to eMMC > ------------- > @@ -78,21 +78,28 @@ Output: > > .. code-block:: bash > > - U-Boot SPL 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) > - Normal Boot > - Trying to boot from MMC1 > - > - U-Boot 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) > - > - CPU: Freescale i.MX8MMQ rev1.0 at 0 MHz > - Reset cause: POR > - DRAM: 2 GiB > - MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 > - Loading Environment from MMC... OK > - In: serial > - Out: serial > - Err: serial > - Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.0A, Serial: > - Net: eth0: ethernet@30be0000 > - Hit any key to stop autoboot: 0 > - Verdin iMX8MM # > +U-Boot SPL 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) > +Normal Boot > +WDT: Started with servicing (60s timeout) > +Trying to boot from MMC1 > +NOTICE: BL31: v2.2(release):rel_imx_5.4.70_2.3.2_rc1-5-g835a8f67b > +NOTICE: BL31: Built : 18:02:12, Aug 16 2021 > + > + > +U-Boot 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) > + > +CPU: Freescale i.MX8MMQ rev1.0 at 1200 MHz > +Reset cause: POR > +DRAM: 2 GiB > +WDT: Started with servicing (60s timeout) > +MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 > +Loading Environment from MMC... OK > +In: serial > +Out: serial > +Err: serial > +Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.1A, Serial# 06760554 > +Carrier: Toradex Verdin Development Board V1.1A, Serial# 10754333 > +Setting variant to wifi > +Net: eth0: ethernet@30be0000 > +Hit any key to stop autoboot: 0 > +Verdin iMX8MM # > -- > 2.26.2 >
Hi Marcel, On Mon, 23 Aug 2021 at 09:09, Marcel Ziswiler <marcel@ziswiler.com> wrote: > > From: Marcel Ziswiler <marcel.ziswiler@toradex.com> > > Use binman to pack images. > > Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> > > --- > > Changes in v2: > - Explicitly pass filename to binman when generating binaries as > suggested by Heiko. > - Use proper intermediate binary u-boot-spl-ddr.bin for imximage as > pointed out by Heiko. > > arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 124 ++++++++++++++++++++++- > arch/arm/mach-imx/imx8m/Kconfig | 1 + > board/toradex/verdin-imx8mm/imximage.cfg | 11 +- > configs/verdin-imx8mm_defconfig | 2 +- > doc/board/toradex/verdin-imx8mm.rst | 53 +++++----- > 5 files changed, 157 insertions(+), 34 deletions(-) > > diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > index a97626fa0c1..a3ad8f3ad37 100644 > --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi > @@ -1,11 +1,15 @@ > // SPDX-License-Identifier: GPL-2.0+ OR MIT > /* > - * Copyright 2020 Toradex > + * Copyright 2021 Toradex > */ > > #include "imx8mm-u-boot.dtsi" > > / { > + binman: binman { > + multiple-images; > + }; > + > firmware { > optee { > compatible = "linaro,optee-tz"; > @@ -91,3 +95,121 @@ > &wdog1 { > u-boot,dm-spl; > }; > + > +&binman { > + u-boot-spl-ddr { > + align = <4>; > + align-size = <4>; > + filename = "u-boot-spl-ddr.bin"; > + pad-byte = <0xff>; > + > + u-boot-spl { > + align-end = <4>; > + }; > + > + blob_1: blob-ext@1 { This works but the naming is a little odd. You can do: 1d-imem { type = "blob-ext"; > + filename = "lpddr4_pmu_train_1d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_2: blob-ext@2 { > + filename = "lpddr4_pmu_train_1d_dmem.bin"; > + size = <0x4000>; > + }; > + > + blob_3: blob-ext@3 { > + filename = "lpddr4_pmu_train_2d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_4: blob-ext@4 { > + filename = "lpddr4_pmu_train_2d_dmem.bin"; > + size = <0x4000>; > + }; > + }; > + > + spl { > + filename = "spl.bin"; > + > + mkimage { > + args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000"; > + > + blob { > + filename = "u-boot-spl-ddr.bin"; > + }; > + }; > + }; > + > + itb { > + filename = "u-boot.itb"; > + > + fit { > + description = "Configuration to load ATF before U-Boot"; > + fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>; > + #address-cells = <1>; > + > + images { > + uboot { > + arch = "arm64"; > + compression = "none"; > + description = "U-Boot (64-bit)"; > + load = <CONFIG_SYS_TEXT_BASE>; > + type = "standalone"; > + > + uboot_blob: blob-ext { > + filename = "u-boot-nodtb.bin"; > + }; > + }; > + > + atf { > + arch = "arm64"; > + compression = "none"; > + description = "ARM Trusted Firmware"; > + entry = <0x920000>; > + load = <0x920000>; > + type = "firmware"; > + > + atf_blob: blob-ext { > + filename = "bl31.bin"; > + }; > + }; > + > + fdt { > + compression = "none"; > + description = "NAME"; > + type = "flat_dt"; > + > + uboot_fdt_blob: blob-ext { > + filename = "u-boot.dtb"; > + }; > + }; > + }; > + > + configurations { > + default = "conf"; > + > + conf { > + description = "NAME"; > + fdt = "fdt"; > + firmware = "uboot"; > + loadables = "atf"; > + }; > + }; > + }; > + }; > + > + imx-boot { > + filename = "flash.bin"; > + pad-byte = <0x00>; > + > + spl: blob-ext@1 { > + filename = "spl.bin"; > + offset = <0x0>; > + }; > + > + uboot: blob-ext@2 { > + filename = "u-boot.itb"; > + offset = <0x5fc00>; > + }; > + }; > +}; > diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig > index a2ba30cf332..3eccc6b4d4f 100644 > --- a/arch/arm/mach-imx/imx8m/Kconfig > +++ b/arch/arm/mach-imx/imx8m/Kconfig > @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ > > config TARGET_VERDIN_IMX8MM > bool "Support Toradex Verdin iMX8M Mini module" > + select BINMAN > select IMX8MM > select SUPPORT_SPL > select IMX8M_LPDDR4 > diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg > index b8b25ff4201..a303f98e170 100644 > --- a/board/toradex/verdin-imx8mm/imximage.cfg > +++ b/board/toradex/verdin-imx8mm/imximage.cfg > @@ -1,16 +1,9 @@ > /* SPDX-License-Identifier: GPL-2.0+ */ > /* > - * Copyright 2020 Toradex > + * Copyright 2021 Toradex > */ > > #define __ASSEMBLY__ > > -FIT > BOOT_FROM emmc_fastboot > -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 > -SECOND_LOADER u-boot.itb 0x40200000 0x60000 > - > -DDR_FW lpddr4_pmu_train_1d_imem.bin > -DDR_FW lpddr4_pmu_train_1d_dmem.bin > -DDR_FW lpddr4_pmu_train_2d_imem.bin > -DDR_FW lpddr4_pmu_train_2d_dmem.bin > +LOADER u-boot-spl-ddr.bin 0x7E1000 > diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig > index 624f1b99096..b323ceb19af 100644 > --- a/configs/verdin-imx8mm_defconfig > +++ b/configs/verdin-imx8mm_defconfig > @@ -24,7 +24,7 @@ CONFIG_DISTRO_DEFAULTS=y > CONFIG_FIT=y > CONFIG_FIT_EXTERNAL_OFFSET=0x3000 > CONFIG_SPL_LOAD_FIT=y > -CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" > +# CONFIG_USE_SPL_FIT_GENERATOR is not set > CONFIG_OF_SYSTEM_SETUP=y > CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/verdin-imx8mm/imximage.cfg" > # CONFIG_USE_BOOTCOMMAND is not set > diff --git a/doc/board/toradex/verdin-imx8mm.rst b/doc/board/toradex/verdin-imx8mm.rst > index b9f7dc39c96..a11c82da2f5 100644 > --- a/doc/board/toradex/verdin-imx8mm.rst > +++ b/doc/board/toradex/verdin-imx8mm.rst > @@ -34,10 +34,10 @@ Get the DDR Firmware > .. code-block:: bash > > $ cd .. > - $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.4.1.bin > - $ chmod +x firmware-imx-8.4.1.bin > - $ ./firmware-imx-8.4.1.bin > - $ cp firmware-imx-8.4.1/firmware/ddr/synopsys/lpddr4*.bin ./ > + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.10.1.bin > + $ chmod +x firmware-imx-8.10.1.bin > + $ ./firmware-imx-8.10.1.bin > + $ cp firmware-imx-8.10.1/firmware/ddr/synopsys/lpddr4*.bin ./ This makes me wonder if we should add a way for binman to locate blobs? > > Build U-Boot > ------------ > @@ -46,7 +46,7 @@ Build U-Boot > $ export CROSS_COMPILE=aarch64-linux-gnu- > $ export ATF_LOAD_ADDR=0x920000 > $ make verdin-imx8mm_defconfig > - $ make flash.bin > + $ make > > Flash to eMMC > ------------- > @@ -78,21 +78,28 @@ Output: > > .. code-block:: bash > > - U-Boot SPL 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) > - Normal Boot > - Trying to boot from MMC1 > - > - U-Boot 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) > - > - CPU: Freescale i.MX8MMQ rev1.0 at 0 MHz > - Reset cause: POR > - DRAM: 2 GiB > - MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 > - Loading Environment from MMC... OK > - In: serial > - Out: serial > - Err: serial > - Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.0A, Serial: > - Net: eth0: ethernet@30be0000 > - Hit any key to stop autoboot: 0 > - Verdin iMX8MM # > +U-Boot SPL 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) > +Normal Boot > +WDT: Started with servicing (60s timeout) > +Trying to boot from MMC1 > +NOTICE: BL31: v2.2(release):rel_imx_5.4.70_2.3.2_rc1-5-g835a8f67b > +NOTICE: BL31: Built : 18:02:12, Aug 16 2021 > + > + > +U-Boot 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) > + > +CPU: Freescale i.MX8MMQ rev1.0 at 1200 MHz > +Reset cause: POR > +DRAM: 2 GiB > +WDT: Started with servicing (60s timeout) > +MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 > +Loading Environment from MMC... OK > +In: serial > +Out: serial > +Err: serial > +Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.1A, Serial# 06760554 > +Carrier: Toradex Verdin Development Board V1.1A, Serial# 10754333 > +Setting variant to wifi > +Net: eth0: ethernet@30be0000 > +Hit any key to stop autoboot: 0 > +Verdin iMX8MM # > -- > 2.26.2 > Regards, Simon
On 24.08.21 18:13, Simon Glass wrote: > Hi Marcel, > > On Mon, 23 Aug 2021 at 09:09, Marcel Ziswiler <marcel@ziswiler.com> wrote: >> >> From: Marcel Ziswiler <marcel.ziswiler@toradex.com> >> >> Use binman to pack images. >> >> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> >> >> --- >> >> Changes in v2: >> - Explicitly pass filename to binman when generating binaries as >> suggested by Heiko. >> - Use proper intermediate binary u-boot-spl-ddr.bin for imximage as >> pointed out by Heiko. >> >> arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 124 ++++++++++++++++++++++- >> arch/arm/mach-imx/imx8m/Kconfig | 1 + >> board/toradex/verdin-imx8mm/imximage.cfg | 11 +- >> configs/verdin-imx8mm_defconfig | 2 +- >> doc/board/toradex/verdin-imx8mm.rst | 53 +++++----- >> 5 files changed, 157 insertions(+), 34 deletions(-) >> >> diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi >> index a97626fa0c1..a3ad8f3ad37 100644 >> --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi >> +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi >> @@ -1,11 +1,15 @@ >> // SPDX-License-Identifier: GPL-2.0+ OR MIT >> /* >> - * Copyright 2020 Toradex >> + * Copyright 2021 Toradex >> */ >> >> #include "imx8mm-u-boot.dtsi" >> >> / { >> + binman: binman { >> + multiple-images; >> + }; >> + >> firmware { >> optee { >> compatible = "linaro,optee-tz"; >> @@ -91,3 +95,121 @@ >> &wdog1 { >> u-boot,dm-spl; >> }; >> + >> +&binman { >> + u-boot-spl-ddr { >> + align = <4>; >> + align-size = <4>; >> + filename = "u-boot-spl-ddr.bin"; >> + pad-byte = <0xff>; >> + >> + u-boot-spl { >> + align-end = <4>; >> + }; >> + >> + blob_1: blob-ext@1 { > > This works but the naming is a little odd. You can do: > > 1d-imem { > type = "blob-ext"; This is copied from the existing binman config for imx8mm-evk. Before we do such cosmetic changes for each i.MX8M board separately, maybe it would be a good idea to switch to a common binman config first and then do this for all boards at once. > >> + filename = "lpddr4_pmu_train_1d_imem.bin"; >> + size = <0x8000>; >> + }; >> + >> + blob_2: blob-ext@2 { >> + filename = "lpddr4_pmu_train_1d_dmem.bin"; >> + size = <0x4000>; >> + }; >> + >> + blob_3: blob-ext@3 { >> + filename = "lpddr4_pmu_train_2d_imem.bin"; >> + size = <0x8000>; >> + }; >> + >> + blob_4: blob-ext@4 { >> + filename = "lpddr4_pmu_train_2d_dmem.bin"; >> + size = <0x4000>; >> + }; >> + }; >> + [...]
On Wed, 2021-08-25 at 10:41 +0200, Frieder Schrempf wrote: > On 24.08.21 18:13, Simon Glass wrote: > > ... > > This works but the naming is a little odd. You can do: > > > > 1d-imem { > > type = "blob-ext"; > > This is copied from the existing binman config for imx8mm-evk. Before we do such cosmetic changes for each > i.MX8M board separately, maybe it would be a good idea to switch to a common binman config first and then do > this for all boards at once. Yes, I agree. Let me revert to a plain copy thereof and subsequently send another patch set migrating to a common binman config and then further improving on this one. > [...]
diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi index a97626fa0c1..a3ad8f3ad37 100644 --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi @@ -1,11 +1,15 @@ // SPDX-License-Identifier: GPL-2.0+ OR MIT /* - * Copyright 2020 Toradex + * Copyright 2021 Toradex */ #include "imx8mm-u-boot.dtsi" / { + binman: binman { + multiple-images; + }; + firmware { optee { compatible = "linaro,optee-tz"; @@ -91,3 +95,121 @@ &wdog1 { u-boot,dm-spl; }; + +&binman { + u-boot-spl-ddr { + align = <4>; + align-size = <4>; + filename = "u-boot-spl-ddr.bin"; + pad-byte = <0xff>; + + u-boot-spl { + align-end = <4>; + }; + + blob_1: blob-ext@1 { + filename = "lpddr4_pmu_train_1d_imem.bin"; + size = <0x8000>; + }; + + blob_2: blob-ext@2 { + filename = "lpddr4_pmu_train_1d_dmem.bin"; + size = <0x4000>; + }; + + blob_3: blob-ext@3 { + filename = "lpddr4_pmu_train_2d_imem.bin"; + size = <0x8000>; + }; + + blob_4: blob-ext@4 { + filename = "lpddr4_pmu_train_2d_dmem.bin"; + size = <0x4000>; + }; + }; + + spl { + filename = "spl.bin"; + + mkimage { + args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000"; + + blob { + filename = "u-boot-spl-ddr.bin"; + }; + }; + }; + + itb { + filename = "u-boot.itb"; + + fit { + description = "Configuration to load ATF before U-Boot"; + fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>; + #address-cells = <1>; + + images { + uboot { + arch = "arm64"; + compression = "none"; + description = "U-Boot (64-bit)"; + load = <CONFIG_SYS_TEXT_BASE>; + type = "standalone"; + + uboot_blob: blob-ext { + filename = "u-boot-nodtb.bin"; + }; + }; + + atf { + arch = "arm64"; + compression = "none"; + description = "ARM Trusted Firmware"; + entry = <0x920000>; + load = <0x920000>; + type = "firmware"; + + atf_blob: blob-ext { + filename = "bl31.bin"; + }; + }; + + fdt { + compression = "none"; + description = "NAME"; + type = "flat_dt"; + + uboot_fdt_blob: blob-ext { + filename = "u-boot.dtb"; + }; + }; + }; + + configurations { + default = "conf"; + + conf { + description = "NAME"; + fdt = "fdt"; + firmware = "uboot"; + loadables = "atf"; + }; + }; + }; + }; + + imx-boot { + filename = "flash.bin"; + pad-byte = <0x00>; + + spl: blob-ext@1 { + filename = "spl.bin"; + offset = <0x0>; + }; + + uboot: blob-ext@2 { + filename = "u-boot.itb"; + offset = <0x5fc00>; + }; + }; +}; diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index a2ba30cf332..3eccc6b4d4f 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ config TARGET_VERDIN_IMX8MM bool "Support Toradex Verdin iMX8M Mini module" + select BINMAN select IMX8MM select SUPPORT_SPL select IMX8M_LPDDR4 diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..a303f98e170 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Copyright 2020 Toradex + * Copyright 2021 Toradex */ #define __ASSEMBLY__ -FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000 - -DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER u-boot-spl-ddr.bin 0x7E1000 diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig index 624f1b99096..b323ceb19af 100644 --- a/configs/verdin-imx8mm_defconfig +++ b/configs/verdin-imx8mm_defconfig @@ -24,7 +24,7 @@ CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_OF_SYSTEM_SETUP=y CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/verdin-imx8mm/imximage.cfg" # CONFIG_USE_BOOTCOMMAND is not set diff --git a/doc/board/toradex/verdin-imx8mm.rst b/doc/board/toradex/verdin-imx8mm.rst index b9f7dc39c96..a11c82da2f5 100644 --- a/doc/board/toradex/verdin-imx8mm.rst +++ b/doc/board/toradex/verdin-imx8mm.rst @@ -34,10 +34,10 @@ Get the DDR Firmware .. code-block:: bash $ cd .. - $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.4.1.bin - $ chmod +x firmware-imx-8.4.1.bin - $ ./firmware-imx-8.4.1.bin - $ cp firmware-imx-8.4.1/firmware/ddr/synopsys/lpddr4*.bin ./ + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.10.1.bin + $ chmod +x firmware-imx-8.10.1.bin + $ ./firmware-imx-8.10.1.bin + $ cp firmware-imx-8.10.1/firmware/ddr/synopsys/lpddr4*.bin ./ Build U-Boot ------------ @@ -46,7 +46,7 @@ Build U-Boot $ export CROSS_COMPILE=aarch64-linux-gnu- $ export ATF_LOAD_ADDR=0x920000 $ make verdin-imx8mm_defconfig - $ make flash.bin + $ make Flash to eMMC ------------- @@ -78,21 +78,28 @@ Output: .. code-block:: bash - U-Boot SPL 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) - Normal Boot - Trying to boot from MMC1 - - U-Boot 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) - - CPU: Freescale i.MX8MMQ rev1.0 at 0 MHz - Reset cause: POR - DRAM: 2 GiB - MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 - Loading Environment from MMC... OK - In: serial - Out: serial - Err: serial - Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.0A, Serial: - Net: eth0: ethernet@30be0000 - Hit any key to stop autoboot: 0 - Verdin iMX8MM # +U-Boot SPL 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) +Normal Boot +WDT: Started with servicing (60s timeout) +Trying to boot from MMC1 +NOTICE: BL31: v2.2(release):rel_imx_5.4.70_2.3.2_rc1-5-g835a8f67b +NOTICE: BL31: Built : 18:02:12, Aug 16 2021 + + +U-Boot 2021.10-rc2-00028-gee010ba1129 (Aug 23 2021 - 16:56:02 +0200) + +CPU: Freescale i.MX8MMQ rev1.0 at 1200 MHz +Reset cause: POR +DRAM: 2 GiB +WDT: Started with servicing (60s timeout) +MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 +Loading Environment from MMC... OK +In: serial +Out: serial +Err: serial +Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.1A, Serial# 06760554 +Carrier: Toradex Verdin Development Board V1.1A, Serial# 10754333 +Setting variant to wifi +Net: eth0: ethernet@30be0000 +Hit any key to stop autoboot: 0 +Verdin iMX8MM #