*** 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