[PATCH] menu: fix the logic checking whether ESC key is pressed

Daniel Golle daniel at makrotopia.org
Sat Oct 26 21:23:17 CEST 2024


Hi!

On Mon, Oct 21, 2024 at 08:56:42AM +0800, Weijie Gao wrote:
> It's observed that the bootmenu on a serial console sometimes
> incorrectly quitted with superfluous characters filled to command
> line input:
> 
> >  *** U-Boot Boot Menu ***
> >
> >      1. Startup system (Default)
> >      2. Upgrade firmware
> >      3. Upgrade ATF BL2
> >      4. Upgrade ATF FIP
> >      5. Load image
> >      0. U-Boot console
> >
> >
> >  Press UP/DOWN to move, ENTER to select, ESC to quit
> >MT7988> [B
> 
> Analysis shows it was caused by the wrong logic of bootmenu_loop:
> 
> At first the bootmenu_loop received the first ESC char correctly.
> 
> However, during the second call to bootmenu_loop, there's no data
> in the UART Rx FIFO. Due to the low baudrate, the second char of
> the down array key sequence hasn't be fully received.
> 
> But bootmenu_loop just did a mdelay(10), and then treated it as a
> single ESC key press event. It didn't even try tstc() again after
> the 10ms timeout.
> 
> This patch fixes this issue by letting bootmenu_loop check tstc()
> twice.

The patch helps to fix the problem when dealing with single key
presses. However, apparently this is not enough to fix the issue in
all situations. I still manage to drop into U-Boot console with an
extra '[A' when simply holding down the arrow-up key for a while.



More information about the U-Boot mailing list