blob: 8b69703f889d24305e93ccd5bb5c7945c2cb9c6d [file] [log] [blame]
*** Variables ***
${UART} sysbus.usart2
${RTC_32KHZ}= SEPARATOR=
... """ ${\n}
... using "platforms/cpus/stm32f4.repl" ${\n}
... ${\n}
... rtc: ${\n}
... ${SPACE*4}wakeupTimerFrequency: 32000 ${\n}
... """
*** Test Cases ***
Run Zephyr Hello World
Execute Command set bin @https://dl.antmicro.com/projects/renode/stm32f4_discovery--zephyr-hello_world.elf-s_515008-2180a4018e82fcbc8821ef4330c9b5f3caf2dcdb
Execute Command include @scripts/single-node/stm32f4_discovery.resc
Execute Command showAnalyzer ${UART}
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Booting Zephyr OS
Wait For Line On Uart Hello World! stm32f4_disco
Configure RTC Alarm
Execute Command mach create
# Use an RTC frequency of exactly 32 kHz as expected by the test binary
Execute Command machine LoadPlatformDescriptionFromString ${RTC_32KHZ}
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4_discovery--riot-tests_periph_rtc.elf-s_1249644-ca2effb6a0a8bcde39496b99bcb8b160a4ed292e
Execute Command showAnalyzer ${UART}
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Help: Press s to start test, r to print it is ready
Write Char On Uart s
Wait For Line On Uart This is RIOT!
Wait For Line On Uart RIOT RTC low-level driver test
Wait For Line On Uart This test will display 'Alarm!' every 2 seconds for 4 times
# "Alarm!" should be printed every 2 seconds, 4 times in total
Wait For Line On Uart Alarm!
${timeInfo}= Execute Command emulation GetTimeSourceInfo
Should Contain ${timeInfo} Elapsed Virtual Time: 00:00:02
Wait For Line On Uart Alarm!
${timeInfo}= Execute Command emulation GetTimeSourceInfo
Should Contain ${timeInfo} Elapsed Virtual Time: 00:00:04
Wait For Line On Uart Alarm!
${timeInfo}= Execute Command emulation GetTimeSourceInfo
Should Contain ${timeInfo} Elapsed Virtual Time: 00:00:06
Wait For Line On Uart Alarm!
${timeInfo}= Execute Command emulation GetTimeSourceInfo
Should Contain ${timeInfo} Elapsed Virtual Time: 00:00:08
# There should be no more alarms after the expected 4
Test If Uart Is Idle 3
Should Fire Update Event When Counting Up
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4disco-timer-upcount.elf-g2d98d1b-s_1021132-961284be838516abea9db8302c9af2dcb67b482a
Create Terminal Tester sysbus.usart2
Start Emulation
Wait For Line On Uart *** Timer2 Upcount Overflow Example ***
Wait For Line On Uart Tim2 IRQ enabled
Wait For Line On Uart Tim2 started
Wait For Line On Uart period elapsed callback
Wait For Line On Uart period elapsed callback
Wait For Line On Uart period elapsed callback
Should Fire Update Event When Counting Down
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4disco-timer-downcount.elf-g2d98d1b-s_1021136-4995992fa219c49c38d7163da1381104c26c823a
Create Terminal Tester sysbus.usart2
Start Emulation
Wait For Line On Uart *** Timer2 Downcount Overflow Example ***
Wait For Line On Uart Tim2 IRQ enabled
Wait For Line On Uart Tim2 started
Wait For Line On Uart period elapsed callback
Wait For Line On Uart period elapsed callback
Wait For Line On Uart period elapsed callback
Should Print Hello World When Built With STM32CubeMX
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4--cube_mx-hello_world.elf-s_625976-606092c29de896f3bd83a4e981f2c7f3a6ed3142
Create Terminal Tester sysbus.usart2
Start Emulation
Wait For Line On Uart Hello World!
Wait For Line On Uart Hello World!
Wait For Line On Uart Hello World!
Should Print Hello World With Custom Flash Latency
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4--cube_mx-hello_world.elf-s_625992-119d2b1d81ef6bb85498d1024c61736bb53cee4c
Create Terminal Tester sysbus.usart2
Start Emulation
Wait For Line On Uart Hello World!
Wait For Line On Uart Hello World!
Wait For Line On Uart Hello World!
Should Block Timer Interrupt When Faultmask Is Set
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4disco-faultmask.elf-s_434744-080256edf201b1e2f7c67bf15000ba1ffa031990
Create Terminal Tester sysbus.usart2
Start Emulation
Wait For Line On Uart Setting FAULTMASK to 1
Wait For Line On Uart Timer IRQ enabled
Wait For Line On Uart Sleeping
Test If Uart Is Idle 1
Wait For Line On Uart Setting FAULTMASK to 0
Wait For Line On Uart Timer interrupt
Wait For Line On Uart Timer interrupt
Wait For Line On Uart Timer interrupt
Should Clear FAULTMASK On Exception Exit
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32f4.repl
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/stm32f4disco-faultmask-noclearing.elf-s_433676-802f85357028150b4586bb3a54a5e44e7a3c2ec5
Create Terminal Tester sysbus.usart2
Start Emulation
# Each timer interrupt sets FAULTMASK, so if the field is not cleared by exception exit
# then this message would be only printed once
Wait For Line On Uart Timer interrupt
Wait For Line On Uart Timer interrupt
Wait For Line On Uart Timer interrupt
Wait For Line On Uart Timer interrupt