board_status.sh: Update to fix serial port reads
The old serial port read method lost characters from the boot log. This method works better for me. - Put get_serial_bootlog arguments into variable names for clarity. - Fully configure the serial port with stty: disable parity and flow control. - Change serial port read from reading with 'cat' to reading with 'read'. - Update help to show current default speed from the variable. tested under dash, bash, and zsh on several platfoms. Change-Id: I91ae63a3c226e61019dbdf69c405c3f20ba7db54 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/12757 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
1eaaa0e446
commit
d0128df777
|
@ -122,8 +122,12 @@ cmd_nonfatal()
|
|||
# $3: filename to direct output of command into
|
||||
get_serial_bootlog () {
|
||||
|
||||
if [ ! -c "$1" ]; then
|
||||
echo "$1 is not a valid serial device"
|
||||
local TTY=$1
|
||||
local SPEED=$2
|
||||
local FILENAME=$3
|
||||
|
||||
if [ ! -c "$TTY" ]; then
|
||||
echo "$TTY is not a valid serial device"
|
||||
exit $EXIT_FAILURE
|
||||
fi
|
||||
|
||||
|
@ -136,27 +140,29 @@ get_serial_bootlog () {
|
|||
fi
|
||||
|
||||
echo
|
||||
echo "Waiting to receive boot log from $1"
|
||||
echo "Waiting to receive boot log from $TTY"
|
||||
echo "Press [Enter] when the boot is complete and the"
|
||||
echo "system is ready for ssh to get the dmesg log."
|
||||
echo
|
||||
|
||||
if [ $tput_not_available -eq 0 ]; then
|
||||
tput sgr0
|
||||
fi
|
||||
|
||||
# set up the serial port
|
||||
cmd $LOCAL "stty -F $1 $2 cs8 -cstopb"
|
||||
stty -F $TTY $SPEED cs8 -cstopb -parenb clocal
|
||||
|
||||
# read from the serial port - user must press enter when complete
|
||||
test_cmd $LOCAL "tee"
|
||||
cat "$SERIAL_DEVICE" | tee "$3" &
|
||||
while read LINE; do
|
||||
echo "$LINE" | tee -a "$FILENAME"
|
||||
done < "$SERIAL_DEVICE" &
|
||||
PID=$!
|
||||
|
||||
read
|
||||
kill "$PID" 2>/dev/null &
|
||||
read foo
|
||||
kill "$PID" 2>/dev/null
|
||||
|
||||
# remove the binary zero value that gets inserted into the file.
|
||||
sed -i 's/\x00//' "$3"
|
||||
echo "Finished reading boot log."
|
||||
}
|
||||
|
||||
show_help() {
|
||||
|
@ -173,7 +179,7 @@ Options
|
|||
-s </dev/xxx>
|
||||
Obtain boot log via serial device.
|
||||
-S <speed>
|
||||
Set the port speed for the serial device (Default is 115200).
|
||||
Set the port speed for the serial device (Default is $SERIAL_PORT_SPEED).
|
||||
-u
|
||||
Upload results to coreboot.org.
|
||||
"
|
||||
|
|
Loading…
Reference in New Issue