@@ -22,6 +22,9 @@ function ASSERT
2222
2323cleanup
2424
25+ # To test RTC clock
26+ HOST_UTC_YEAR=$( LC_ALL=C date -u +%Y)
27+
2528ENABLE_VBLK=1
2629VBLK_IMG=build/disk.img
2730[ -f " ${VBLK_IMG} " ] || ENABLE_VBLK=0
@@ -33,10 +36,93 @@ OPTS_BASE+=" -i build/linux-image/rootfs.cpio"
3336TEST_OPTIONS=(" base (${OPTS_BASE} )" )
3437EXPECT_CMDS=('
3538 expect "buildroot login:" { send "root\n" } timeout { exit 1 }
39+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
40+ expect "rtc0" { } timeout { exit 3 }
41+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
42+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
3643 expect "# " { send "uname -a\n" } timeout { exit 2 }
3744 expect "riscv32 GNU/Linux" { send "\x01"; send "x" } timeout { exit 3 }
3845' )
3946
47+ # RTC alarm and settime tests
48+ TEST_OPTIONS+=(" rtc_alarm ${OPTS_BASE} " )
49+ EXPECT_CMDS+=('
50+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
51+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
52+ expect "rtc0" { } timeout { exit 3 }
53+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
54+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
55+ expect "# " { send "uname -a\n" } timeout { exit 2 }
56+ expect "riscv32 GNU/Linux" { } timeout { exit 3 }
57+ expect "# " { send "rtc_alarm\n" } timeout { exit 3 }
58+ expect "alarm_IRQ : no" { } timeout { exit 3 }
59+ expect "alarm_IRQ : yes" { } timeout { exit 3 }
60+ expect "alarm_IRQ : no" { } timeout { exit 3 }
61+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
62+ ' )
63+ year1=1980
64+ year2=2030
65+ TEST_OPTIONS+=(" rtc_settime ${year1} ${OPTS_BASE} " )
66+ EXPECT_CMDS+=('
67+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
68+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
69+ expect "rtc0" { } timeout { exit 3 }
70+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
71+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
72+ expect "# " { send "uname -a\n" } timeout { exit 2 }
73+ expect "riscv32 GNU/Linux" { } timeout { exit 3 }
74+ expect "# " { send "rtc_settime ${year1}\n" } timeout { exit 3 }
75+ expect "rtc_date : ${year1}-01-01" { } timeout { exit 3 }
76+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
77+ ' )
78+ TEST_OPTIONS+=(" rtc_settime ${year2} ${OPTS_BASE} " )
79+ EXPECT_CMDS+=('
80+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
81+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
82+ expect "rtc0" { } timeout { exit 3 }
83+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
84+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
85+ expect "# " { send "uname -a\n" } timeout { exit 2 }
86+ expect "riscv32 GNU/Linux" { } timeout { exit 3 }
87+ expect "# " { send "rtc_settime ${year2}\n" } timeout { exit 3 }
88+ expect "rtc_date : ${year2}-01-01" { } timeout { exit 3 }
89+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
90+ ' )
91+ TEST_OPTIONS+=(" rtc_settime + rtc_alarm ${year1} ${OPTS_BASE} " )
92+ EXPECT_CMDS+=('
93+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
94+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
95+ expect "rtc0" { } timeout { exit 3 }
96+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
97+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
98+ expect "# " { send "uname -a\n" } timeout { exit 2 }
99+ expect "riscv32 GNU/Linux" { } timeout { exit 3 }
100+ expect "# " { send "rtc_settime ${year1}\n" } timeout { exit 3 }
101+ expect "rtc_date : ${year1}-01-01" { } timeout { exit 3 }
102+ expect "# " { send "rtc_alarm\n" } timeout { exit 3 }
103+ expect "alarm_IRQ : no" { } timeout { exit 3 }
104+ expect "alarm_IRQ : yes" { } timeout { exit 3 }
105+ expect "alarm_IRQ : no" { } timeout { exit 3 }
106+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
107+ ' )
108+ TEST_OPTIONS+=(" rtc_settime + rtc_alarm ${year2} ${OPTS_BASE} " )
109+ EXPECT_CMDS+=('
110+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
111+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
112+ expect "rtc0" { } timeout { exit 3 }
113+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
114+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
115+ expect "# " { send "uname -a\n" } timeout { exit 2 }
116+ expect "riscv32 GNU/Linux" { } timeout { exit 3 }
117+ expect "# " { send "rtc_settime ${year2}\n" } timeout { exit 3 }
118+ expect "rtc_date : ${year2}-01-01" { } timeout { exit 3 }
119+ expect "# " { send "rtc_alarm\n" } timeout { exit 3 }
120+ expect "alarm_IRQ : no" { } timeout { exit 3 }
121+ expect "alarm_IRQ : yes" { } timeout { exit 3 }
122+ expect "alarm_IRQ : no" { } timeout { exit 3 }
123+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
124+ ' )
125+
40126COLOR_G=' \e[32;01m' # Green
41127COLOR_R=' \e[31;01m' # Red
42128COLOR_Y=' \e[33;01m' # Yellow
@@ -54,6 +140,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
54140 TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} ,readonly" )
55141 EXPECT_CMDS+=('
56142 expect "buildroot login:" { send "root\n" } timeout { exit 1 }
143+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
144+ expect "rtc0" { } timeout { exit 3 }
145+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
146+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
57147 expect "# " { send "uname -a\n" } timeout { exit 2 }
58148 expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
59149 expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -65,6 +155,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
65155 TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} ,readonly -x vblk:${BLK_DEV} ,readonly" )
66156 EXPECT_CMDS+=('
67157 expect "buildroot login:" { send "root\n" } timeout { exit 1 }
158+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
159+ expect "rtc0" { } timeout { exit 3 }
160+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
161+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
68162 expect "# " { send "uname -a\n" } timeout { exit 2 }
69163 expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
70164 expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -79,6 +173,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
79173 TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} " )
80174 VBLK_EXPECT_CMDS='
81175 expect "buildroot login:" { send "root\n" } timeout { exit 1 }
176+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
177+ expect "rtc0" { } timeout { exit 3 }
178+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
179+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
82180 expect "# " { send "uname -a\n" } timeout { exit 2 }
83181 expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
84182 expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -96,6 +194,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
96194 TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} -x vblk:${BLK_DEV} " )
97195 VBLK_EXPECT_CMDS='
98196 expect "buildroot login:" { send "root\n" } timeout { exit 1 }
197+ expect "# " { send "dmesg | grep rtc\n" } timeout { exit 2 }
198+ expect "rtc0" { } timeout { exit 3 }
199+ expect "# " { send "date -u +%Y\n" } timeout { exit 2 }
200+ expect "${HOST_UTC_YEAR}" { } timeout { exit 3 }
99201 expect "# " { send "uname -a\n" } timeout { exit 2 }
100202 expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
101203 expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -121,6 +223,9 @@ for i in "${!TEST_OPTIONS[@]}"; do
121223 RUN_LINUX=" build/rv32emu ${OPTS} "
122224
123225 ASSERT expect << - DONE
226+ set HOST_UTC_YEAR ${HOST_UTC_YEAR}
227+ set year1 ${year1}
228+ set year2 ${year2}
124229 set timeout ${TIMEOUT}
125230 spawn ${RUN_LINUX}
126231 ${EXPECT_CMDS[$i]}
0 commit comments