[U-Boot] [PATCH] tools: kwboot: Make kwboot more robust on a38x

Stefan Roese sr at denx.de
Wed Sep 19 12:13:46 UTC 2018


On 13.08.2018 17:24, Baruch Siach wrote:
> From: Jon Nettleton <jon at solid-run.com>
> 
> This patch accomplishes 2 things to make the kwboot procedure
> on the a38x more reliable.
> 
> 1)  We fill the tty with 1K of the magic bootparam.  This helps
> with the timing of where the microcode picks up in the read of
> the line to ensure we actually catch the break to go into recovery
> mode
> 
> 2)  Before starting the xmodem transfer we sleep for 2 seconds
> and then flush the line.  This allows all the magic bootparam
> to be flushed from the line and makes the xmodem transfer reliable
> and removes the Bad message failures.
> 
> Signed-off-by: Jon Nettleton <jon at solid-run.com>
> Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> ---
>   tools/kwboot.c | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/kwboot.c b/tools/kwboot.c
> index 50ae2b4b77b1..4be094c9c8d8 100644
> --- a/tools/kwboot.c
> +++ b/tools/kwboot.c
> @@ -286,6 +286,7 @@ kwboot_bootmsg(int tty, void *msg)
>   {
>   	int rc;
>   	char c;
> +	int count;
>   
>   	if (msg == NULL)
>   		kwboot_printv("Please reboot the target into UART boot mode...");
> @@ -297,10 +298,12 @@ kwboot_bootmsg(int tty, void *msg)
>   		if (rc)
>   			break;
>   
> -		rc = kwboot_tty_send(tty, msg, 8);
> -		if (rc) {
> -			usleep(msg_req_delay * 1000);
> -			continue;
> +		for (count = 0; count < 128; count++) {
> +			rc = kwboot_tty_send(tty, msg, 8);
> +			if (rc) {
> +				usleep(msg_req_delay * 1000);
> +				continue;
> +			}
>   		}
>   
>   		rc = kwboot_tty_recv(tty, &c, 1, msg_rsp_timeo);
> @@ -426,6 +429,9 @@ kwboot_xmodem(int tty, const void *_data, size_t size)
>   
>   	kwboot_printv("Sending boot image...\n");
>   
> +	sleep(2); /* flush isn't effective without it */
> +	tcflush(tty, TCIOFLUSH);
> +
>   	do {
>   		struct kwboot_block block;
>   		int n;
> 

Applied to u-boot-marvell/master

Thanks,
Stefan


More information about the U-Boot mailing list