[PATCH] ARM: stm32: Add script to install U-Boot from SD/eMMC to SPI NOR on DH STM32MP15xx DHSOM

Patrick DELAUNAY patrick.delaunay at foss.st.com
Fri Oct 11 17:30:12 CEST 2024


Hi,

On 9/30/24 21:23, Marek Vasut wrote:
> Make the dh_update_sd_to_sf script generic, rename it to dh_update_sdmmc_to_sf
> and implement two specific dh_update_sd_to_sf and dh_update_emmc_to_sf scripts
> which load U-Boot from either SD or eMMC and install it into SPI NOR.
>
> Signed-off-by: Marek Vasut <marex at denx.de>
> ---
> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: u-boot at dh-electronics.com
> Cc: u-boot at lists.denx.de
> Cc: uboot-stm32 at st-md-mailman.stormreply.com
> ---
>   include/configs/stm32mp15_dh_dhsom.h | 16 +++++++++++++---
>   1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/include/configs/stm32mp15_dh_dhsom.h b/include/configs/stm32mp15_dh_dhsom.h
> index de39b19219d..fa759c938b3 100644
> --- a/include/configs/stm32mp15_dh_dhsom.h
> +++ b/include/configs/stm32mp15_dh_dhsom.h
> @@ -38,16 +38,26 @@
>   		"setenv loadaddr1 && "					\
>   		"setenv sblkcnt && "					\
>   		"setenv ublkcnt\0"					\
> -	"dh_update_sd_to_sf=" /* Erase SPI NOR and install U-Boot from SD */ \
> +	"dh_update_sdmmc_to_sf=" /* Erase SPI NOR and install U-Boot from SD/eMMC */ \
>   		"setexpr loadaddr1 ${loadaddr} + 0x1000000 && "		\
> -		"load mmc 0:4 ${loadaddr1} /boot/u-boot-spl.stm32 && "	\
> +		"load ${dh_update_iface} ${dh_update_dev} "		\
> +			"${loadaddr1} /boot/u-boot-spl.stm32 && "	\
>   		"env set filesize1 ${filesize} && "			\
> -		"load mmc 0:4 ${loadaddr} /boot/u-boot.itb && "		\
> +		"load ${dh_update_iface} ${dh_update_dev} "		\
> +			"${loadaddr} /boot/u-boot.itb && "		\
>   		"sf probe && sf erase 0 0x200000 && "			\
>   		"sf update ${loadaddr1} 0 ${filesize1} && "		\
>   		"sf update ${loadaddr1} 0x40000 ${filesize1} && "	\
>   		"sf update ${loadaddr} 0x80000 ${filesize} && "		\
>   		"env set filesize1 && env set loadaddr1\0"		\
> +	"dh_update_sd_to_sf=" /* Erase SPI NOR and install U-Boot from SD */ \
> +		"setenv dh_update_iface mmc && "			\
> +		"setenv dh_update_dev 0:4 && "				\
> +		"run dh_update_sdmmc_to_sf\0"				\
> +	"dh_update_emmc_to_sf=" /* Erase SPI NOR and install U-Boot from eMMC */ \
> +		"setenv dh_update_iface mmc && "			\
> +		"setenv dh_update_dev 1:4 && "				\
> +		"run dh_update_sdmmc_to_sf\0"				\
>   	"stdin=serial\0"						\
>   	"stdout=serial\0"						\
>   	"stderr=serial\0"						\
>

ok I will merge it as it

with 2 minor question

a)  it is strange to define interface variable for macro
     but use only with "mmc" device with

> setenv dh_update_iface mmc

it can be simplified with

"load mmc ${dh_update_dev}

or it is to prepare other device then "mmc" .....


b) you are using "sf" command and not "mtd" to udpate SPI NOR ?


the MTD command allows to use the MTD partition name, defined in DT,
so no need to know offset in script (and avoid "sf probe")

mtd erase fsbl1; mtd write fsbl1 ${loadaddr1} 0 ${filesize1} \
mtd erase fsbl2; mtd write fsbl2 ${loadaddr1} 0 ${filesize1} \
mtd erase uboot; mtd write uboot ${loadaddr} 0 ${filesize}



Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>

Thanks
Patrick



More information about the U-Boot mailing list