[PATCH] tools: kwboot: Check if baudrate value is supported before sending image

Marek Behún marek.behun at nic.cz
Sun Mar 6 14:12:02 CET 2022


On Sun,  6 Mar 2022 13:39:07 +0100
Pali Rohár <pali at kernel.org> wrote:

> Call kwboot_open_tty() which baudrate value which was specified at the
                         with
> command line by option -B. This function returns error if baudrate is not
> supported by selected tty device.
> 
> Initial baudrate for image transfer is always 115200, so call
> kwboot_tty_change_baudrate() with value 115200 immediately after
> kwboot_open_tty() if baudrate specified by option -B is different than
> 115200.
> 
> This help user to see error message about unsupported baudrate value by
> local tty device immediately after starting kwboot.
This makes kwboot fail immediately, informing that baudrate is
unsupported, instead of failing only after the first part of image is
already sent.

> 
> Before this change, kwboot sent kwbimage header (at 115200 Bd) and then
> validated that selected baudrate if is supported by tty device. It consumed
> too much time (need to send kwbimage again and again) until some supported
> baudrate by local tty device was guessed.
This last paragraph can be dropped. If you want to keep it, please
change "Before this change" to "Until now"
> 
> Signed-off-by: Pali Rohár <pali at kernel.org>
> ---
>  tools/kwboot.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/kwboot.c b/tools/kwboot.c
> index f975c4a6c6ca..d9498af8fc02 100644
> --- a/tools/kwboot.c
> +++ b/tools/kwboot.c
> @@ -2137,12 +2137,24 @@ main(int argc, char **argv)
>  	if (optind != argc)
>  		goto usage;
>  
> -	tty = kwboot_open_tty(ttypath, imgpath ? 115200 : baudrate);
> +	tty = kwboot_open_tty(ttypath, baudrate);
>  	if (tty < 0) {
>  		perror(ttypath);
>  		goto out;
>  	}
>  
> +	/*
> +	 * initial baudrate for image transfer is always 115200,
> +	 * change to different baudrate is done after sending header
*the change to different baudrate is done only after the header is sent
> +	 */
> +	if (imgpath && baudrate != 115200) {
> +		rc = kwboot_tty_change_baudrate(tty, 115200);
> +		if (rc) {
> +			perror(ttypath);
> +			goto out;
> +		}
> +	}
> +
>  	if (baudrate == 115200)
>  		/* do not change baudrate during Xmodem to the same value */
>  		baudrate = 0;

Marek


More information about the U-Boot mailing list