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.