[PATCH] imx8mn_beacon: Fix booting hang and switch to binman

Peng Fan (OSS) peng.fan at oss.nxp.com
Wed Sep 15 04:49:09 CEST 2021



On 2021/9/11 4:19, Adam Ford wrote:
> Somewhere along the line, the board stopped being able to boot.
> Rather than just fixing the issue, let's fix the issue and migrate
> to binman to eliminate a warning when using custom imx tools for
> generating the binary.
> 
> Signed-off-by: Adam Ford <aford173 at gmail.com>
> 
> diff --git a/arch/arm/dts/imx8mn-beacon-kit-u-boot.dtsi b/arch/arm/dts/imx8mn-beacon-kit-u-boot.dtsi
> index bbc64a2819..69fd69c8d0 100644
> --- a/arch/arm/dts/imx8mn-beacon-kit-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mn-beacon-kit-u-boot.dtsi
> @@ -4,6 +4,10 @@
>    */
>   
>   / {
> +	binman: binman {
> +		multiple-images;
> +	};
> +
>   	wdt-reboot {
>   		compatible = "wdt-reboot";
>   		wdt = <&wdog1>;
> @@ -40,6 +44,9 @@
>   &clk {
>   	u-boot,dm-spl;
>   	u-boot,dm-pre-reloc;
> +	/delete-property/ assigned-clocks;
> +	/delete-property/ assigned-clock-parents;
> +	/delete-property/ assigned-clock-rates;
>   };
>   
>   &gpio1 {
> @@ -99,6 +106,10 @@
>   	u-boot,off-on-delay-us = <20000>;
>   };
>   
> +&uart2 {
> +	u-boot,dm-spl;
> +};
> +
>   &usdhc1 {
>   	u-boot,dm-spl;
>   	sd-uhs-sdr104;
> @@ -120,3 +131,122 @@
>   &wdog1 {
>   	u-boot,dm-spl;
>   };
> +
> +&binman {
> +	 u-boot-spl-ddr {
> +		filename = "u-boot-spl-ddr.bin";
> +		pad-byte = <0xff>;
> +		align-size = <4>;
> +		align = <4>;
> +
> +		u-boot-spl {
> +			align-end = <4>;
> +		};
> +
> +		blob_1: blob-ext at 1 {
> +			filename = "lpddr4_pmu_train_1d_imem.bin";
> +			size = <0x8000>;
> +		};
> +
> +		blob_2: blob-ext at 2 {
> +			filename = "lpddr4_pmu_train_1d_dmem.bin";
> +			size = <0x4000>;
> +		};
> +
> +		blob_3: blob-ext at 3 {
> +			filename = "lpddr4_pmu_train_2d_imem.bin";
> +			size = <0x8000>;
> +		};
> +
> +		blob_4: blob-ext at 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 0x912000";
> +
> +			blob {
> +				filename = "u-boot-spl-ddr.bin";
> +			};
> +		};
> +	};
> +
> +	itb {
> +		filename = "u-boot.itb";
> +
> +		fit {
> +			description = "Configuration to load ATF before U-Boot";
> +			#address-cells = <1>;
> +			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
> +
> +			images {
> +				uboot {
> +					description = "U-Boot (64-bit)";
> +					type = "standalone";
> +					arch = "arm64";
> +					compression = "none";
> +					load = <CONFIG_SYS_TEXT_BASE>;
> +
> +					uboot_blob: blob-ext {
> +						filename = "u-boot-nodtb.bin";
> +					};
> +				};
> +
> +				atf {
> +					description = "ARM Trusted Firmware";
> +					type = "firmware";
> +					arch = "arm64";
> +					compression = "none";
> +					load = <0x960000>;
> +					entry = <0x960000>;
> +
> +					atf_blob: blob-ext {
> +						filename = "bl31.bin";
> +					};
> +				};
> +
> +				fdt {
> +					description = "NAME";
> +					type = "flat_dt";
> +					compression = "none";
> +
> +					uboot_fdt_blob: blob-ext {
> +						filename = "u-boot.dtb";
> +					};
> +				};
> +			};
> +
> +			configurations {
> +				default = "conf";
> +
> +				conf {
> +					description = "NAME";
> +					firmware = "uboot";
> +					loadables = "atf";
> +					fdt = "fdt";
> +				};
> +			};
> +		};
> +	};
> +
> +	imx-boot {
> +		filename = "flash.bin";
> +		pad-byte = <0x00>;
> +
> +		spl: blob-ext at 1 {
> +			offset = <0x0>;
> +			filename = "spl.bin";
> +		};
> +
> +		uboot: blob-ext at 2 {
> +			offset = <0x58000>;
> +			filename = "u-boot.itb";
> +		};
> +	};
> +};
> diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig
> index 8fedf45987..9a1eb108e4 100644
> --- a/arch/arm/mach-imx/imx8m/Kconfig
> +++ b/arch/arm/mach-imx/imx8m/Kconfig
> @@ -116,6 +116,7 @@ config TARGET_IMX8MM_BEACON
>   
>   config TARGET_IMX8MN_BEACON
>   	bool "imx8mn Beacon Embedded devkit"
> +	select BINMAN
>   	select IMX8MN
>   	select SUPPORT_SPL
>   	select IMX8M_LPDDR4
> diff --git a/board/beacon/imx8mn/imximage-8mn-lpddr4.cfg b/board/beacon/imx8mn/imximage-8mn-lpddr4.cfg
> new file mode 100644
> index 0000000000..7286b26494
> --- /dev/null
> +++ b/board/beacon/imx8mn/imximage-8mn-lpddr4.cfg
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2021 NXP
> + */
> +
> +#define __ASSEMBLY__
> +
> +ROM_VERSION	v2
> +BOOT_FROM	sd
> +LOADER		u-boot-spl-ddr.bin	0x912000
> diff --git a/configs/imx8mn_beacon_defconfig b/configs/imx8mn_beacon_defconfig
> index 5296204aad..f2515874a2 100644
> --- a/configs/imx8mn_beacon_defconfig
> +++ b/configs/imx8mn_beacon_defconfig
> @@ -26,9 +26,9 @@ CONFIG_LTO=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=arch/arm/mach-imx/imx8m/imximage-8mn-lpddr4.cfg"
> +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/beacon/imx8mn/imximage-8mn-lpddr4.cfg"
>   CONFIG_DEFAULT_FDT_FILE="imx8mn-beacon-kit.dtb"
>   CONFIG_ARCH_MISC_INIT=y
>   CONFIG_SPL_BOARD_INIT=y
> @@ -36,6 +36,7 @@ CONFIG_SPL_BOOTROM_SUPPORT=y
>   CONFIG_SPL_SEPARATE_BSS=y
>   CONFIG_SPL_I2C=y
>   CONFIG_SPL_POWER=y
> +CONFIG_SPL_WATCHDOG=y
>   CONFIG_HUSH_PARSER=y
>   CONFIG_SYS_PROMPT="u-boot=> "
>   # CONFIG_BOOTM_NETBSD is not set
> @@ -62,7 +63,6 @@ CONFIG_CMD_EXT4_WRITE=y
>   CONFIG_CMD_FAT=y
>   CONFIG_OF_CONTROL=y
>   CONFIG_SPL_OF_CONTROL=y
> -CONFIG_OF_SPL_REMOVE_PROPS="interrupt-parent interrupts"
>   CONFIG_ENV_IS_IN_MMC=y
>   CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>   CONFIG_SYS_MMC_ENV_DEV=2
> @@ -106,6 +106,7 @@ CONFIG_PHY_GIGE=y
>   CONFIG_FEC_MXC=y
>   CONFIG_MII=y
>   CONFIG_PINCTRL=y
> +CONFIG_SPL_PINCTRL=y
>   CONFIG_PINCTRL_IMX8M=y
>   CONFIG_DM_PMIC=y
>   # CONFIG_SPL_PMIC_CHILDREN is not set
> @@ -122,7 +123,9 @@ CONFIG_SPI=y
>   CONFIG_DM_SPI=y
>   CONFIG_NXP_FSPI=y
>   CONFIG_SYSRESET=y
> +CONFIG_SPL_SYSRESET=y
>   CONFIG_SYSRESET_PSCI=y
> +CONFIG_SYSRESET_WATCHDOG=y
>   CONFIG_DM_THERMAL=y
>   CONFIG_USB=y
>   # CONFIG_SPL_DM_USB is not set
> @@ -134,3 +137,4 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>   CONFIG_CI_UDC=y
>   CONFIG_SDP_LOADADDR=0x0
>   CONFIG_OF_LIBFDT_OVERLAY=y
> +CONFIG_IMX_WATCHDOG=y
> 

Reviewed-by: Peng Fan <peng.fan at nxp.com>


More information about the U-Boot mailing list