@@ -22,6 +22,9 @@ function ASSERT
22
22
23
23
cleanup
24
24
25
+ # To test RTC clock
26
+ HOST_UTC_YEAR=$( LC_ALL=C date -u +%Y)
27
+
25
28
ENABLE_VBLK=1
26
29
VBLK_IMG=build/disk.img
27
30
[ -f " ${VBLK_IMG} " ] || ENABLE_VBLK=0
@@ -33,10 +36,93 @@ OPTS_BASE+=" -i build/linux-image/rootfs.cpio"
33
36
TEST_OPTIONS=(" base (${OPTS_BASE} )" )
34
37
EXPECT_CMDS=('
35
38
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 }
36
43
expect "# " { send "uname -a\n" } timeout { exit 2 }
37
44
expect "riscv32 GNU/Linux" { send "\x01"; send "x" } timeout { exit 3 }
38
45
' )
39
46
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
+
40
126
COLOR_G=' \e[32;01m' # Green
41
127
COLOR_R=' \e[31;01m' # Red
42
128
COLOR_Y=' \e[33;01m' # Yellow
@@ -54,6 +140,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
54
140
TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} ,readonly" )
55
141
EXPECT_CMDS+=('
56
142
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 }
57
147
expect "# " { send "uname -a\n" } timeout { exit 2 }
58
148
expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
59
149
expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -65,6 +155,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
65
155
TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} ,readonly -x vblk:${BLK_DEV} ,readonly" )
66
156
EXPECT_CMDS+=('
67
157
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 }
68
162
expect "# " { send "uname -a\n" } timeout { exit 2 }
69
163
expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
70
164
expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -79,6 +173,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
79
173
TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} " )
80
174
VBLK_EXPECT_CMDS='
81
175
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 }
82
180
expect "# " { send "uname -a\n" } timeout { exit 2 }
83
181
expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
84
182
expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -96,6 +194,10 @@ if [ "${ENABLE_VBLK}" -eq "1" ]; then
96
194
TEST_OPTIONS+=(" ${OPTS_BASE} -x vblk:${VBLK_IMG} -x vblk:${BLK_DEV} " )
97
195
VBLK_EXPECT_CMDS='
98
196
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 }
99
201
expect "# " { send "uname -a\n" } timeout { exit 2 }
100
202
expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
101
203
expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
@@ -121,6 +223,9 @@ for i in "${!TEST_OPTIONS[@]}"; do
121
223
RUN_LINUX=" build/rv32emu ${OPTS} "
122
224
123
225
ASSERT expect << - DONE
226
+ set HOST_UTC_YEAR ${HOST_UTC_YEAR}
227
+ set year1 ${year1}
228
+ set year2 ${year2}
124
229
set timeout ${TIMEOUT}
125
230
spawn ${RUN_LINUX}
126
231
${EXPECT_CMDS[$i]}
0 commit comments