The serial getchar will only modify the LSB of ch, the MSB 3 bytes will be unchanged as the random value on stack, so if MSB 3 bytes not zero, the value got is wrong.
@@ -139,7 +139,7 @@ static int finsh_getchar(void)
#ifdef RT_USING_POSIX
return getchar();
#else
- int ch;
+ int ch = 0;
RT_ASSERT(shell != RT_NULL);
while (rt_device_read(shell->device, -1, &ch, 1) != 1)