nuttx-riscv64/qemu-riscv-leds64-rust.exp

108 lines
2.1 KiB
Text
Executable file

#!/usr/bin/expect
## Expect Script for Testing NuttX with QEMU Emulator
## Wait at most 10 seconds
set timeout 10
## For every 1 character sent, wait 0.01 milliseconds
set send_slow {1 0.01}
## Start the QEMU Emulator for 64-bit RISC-V
spawn qemu-system-riscv64 \
-semihosting \
-M virt,aclint=on \
-cpu rv64 \
-bios none \
-kernel nuttx \
-nographic
## Wait for the prompt and enter `uname -a`
expect "nsh> "
send -s "uname -a\r"
## Wait for the prompt and enter `free`
expect "nsh> "
send -s "free\r"
## Wait for the prompt and enter `ps`
expect "nsh> "
send -s "ps\r"
## Wait for the prompt and enter `ls -l /dev`
expect "nsh> "
send -s "ls -l /dev\r"
## Wait for the prompt and enter `hello`
expect "nsh> "
send -s "hello\r"
## Wait for the prompt and enter `getprime`
expect "nsh> "
send -s "getprime\r"
## Wait for the prompt and enter `hello`
expect "nsh> "
send -s "hello\r"
## Wait for the prompt and enter `getprime`
expect "nsh> "
send -s "getprime\r"
## Wait for the prompt and enter `ls -l /dev`
expect "nsh> "
send -s "ls -l /dev\r"
## Wait for the prompt and enter `ps`
expect "nsh> "
send -s "ps\r"
## Wait for the prompt and enter `leds_rust`
expect "nsh> "
send -s "leds_rust\r"
## Check the response...
expect {
## If we see this message, continue normally
"board_userled: LED 1 set to 0" {}
## If timeout, exit with an error
timeout {
## Terminate the session: Ctrl-A x
send "\x01x"
puts "\n===== Error: Test Failed\n"
exit 1
}
}
## Check the response...
expect {
## If we see this message, continue normally
"board_userled: LED 2 set to 0" {}
## If timeout, exit with an error
timeout {
## Terminate the session: Ctrl-A x
send "\x01x"
puts "\n===== Error: Test Failed\n"
exit 1
}
}
## Check the response...
expect {
## If we see this message, continue normally
"board_userled: LED 3 set to 0" {}
## If timeout, exit with an error
timeout {
## Terminate the session: Ctrl-A x
send "\x01x"
puts "\n===== Error: Test Failed\n"
exit 1
}
}
## Terminate the session: Ctrl-A x
send "\x01x"
puts "\n===== Test OK\n"
exit 0