[U-Boot] [RFC PATCH 2/2] sunxi: add "fel" boot target

Hans de Goede hdegoede at redhat.com
Thu Sep 10 20:36:14 CEST 2015


Hi,

On 03-09-15 16:12, Bernhard Nortmann wrote:
> This patch makes use of the previous changes to add a new "fel" boot
> target for sunxi boards.
>
> When booting via FEL, it's often desirable to work around the absence
> of other (usable) boot devices - or to be able to override them,
> deviating from the standard boot sequence. To achieve this, the "fel"
> boot target gets the highest priority, but won't actually do anything
> unless certain criteria are met.
>
> The "bootcmd_fel" implementation proposed here first tests if an actual
> FEL boot takes place (using the "fel_booted" env var), and secondly
> checks that "fel_data_addr" was set (originating from the 'loader',
> i.e. the sunxi-tools fel utility). If both checks pass, then it will
> try to execute a boot script (boot.scr) at the given address. In case
> of an error (e.g. an invalid image), the source command might return
> "false", causing "distro_bootcmd" to proceed with the next boot target.
>
> Signed-off-by: Bernhard Nortmann <bernhard.nortmann at web.de>
>
> ---
>
>   include/configs/sunxi-common.h | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
> index 48cc4ed..750355d 100644
> --- a/include/configs/sunxi-common.h
> +++ b/include/configs/sunxi-common.h
> @@ -423,7 +423,20 @@ extern int soft_i2c_gpio_scl;
>   #define BOOT_TARGET_DEVICES_USB(func)
>   #endif
>
> +/* FEL boot support, auto-execute boot.scr if a script address was provided */
> +#define BOOTENV_DEV_FEL(devtypeu, devtypel, instance) \
> +	"bootcmd_fel=" \
> +		"if test -n ${fel_booted}; then " \
> +			"echo '(FEL boot)';" \
> +			"if test -n ${fel_data_addr}; then " \
> +				"source ${fel_data_addr}; " \
> +			"fi; " \
> +		"fi\0"

I would prefer to have this like this:

	"bootcmd_fel=" \
		"if test -n ${fel_booted} && test -n ${fel_data_addr}; then " \
			"echo '(FEL boot)';" \
			"source ${fel_data_addr}; " \
		"fi\0"

Also if we are not using fel_data_size, then why do we even
have it ?

Regards,

Hans



> +#define BOOTENV_DEV_NAME_FEL(devtypeu, devtypel, instance) \
> +	"fel "
> +
>   #define BOOT_TARGET_DEVICES(func) \
> +	func(FEL, fel, na) \
>   	BOOT_TARGET_DEVICES_MMC(func) \
>   	BOOT_TARGET_DEVICES_SCSI(func) \
>   	BOOT_TARGET_DEVICES_USB(func) \
>


More information about the U-Boot mailing list