blob: fd3d6450f96104dacb2e7d7e83640b6651213ca7 [file] [log] [blame]
*** Variables ***
${UART} sysbus.uart
${URI} @https://dl.antmicro.com/projects/renode
${LED_DELAY} 1
*** Keywords ***
Create Machine
[Arguments] ${elf}
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/boards/miv-board.repl
Execute Command sysbus LoadELF ${URI}/${elf}
*** Test Cases ***
Should Blink Led Using Systick
Create Machine riscv-systick-blinky.elf-s_125004-59e1fa0a46f86e8ccad8b5bbb4d92b8dfa009af3
Create Terminal Tester ${UART}
Create LED Tester sysbus.gpioOutputs.led0 defaultTimeout=${LED_DELAY}
Start Emulation
Wait For Line On Uart System timer Blinky Example.
# because of very fast LED switching this ends very soon
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Should Blink Led Using CoreTimer
Create Machine riscv-interrupt-blinky.elf-s_135504-4fe164958c1fe3e89790f8d7d2824ba16182fa75
Create Terminal Tester ${UART}
Create LED Tester sysbus.gpioOutputs.led0 defaultTimeout=${LED_DELAY}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Assert LED State true
Assert LED State false
Should Run FreeRTOS Sample
Create Machine riscv-freertos-sample.elf-s_208404-40208b240e2d718e999a533e084f022628aec5d6
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Sample Demonstration of FreeRTOS port for Microsemi RISC-V processor.
Wait For Line On Uart Task - 2
Wait For Line On Uart Task - 1
Wait For Line On Uart Task - 2
Wait For Line On Uart Task - 1
Wait For Line On Uart Task - 2
Wait For Line On Uart Task - 1
Wait For Line On Uart Task - 2
Wait For Line On Uart Task - 1
Wait For Line On Uart Task - 2
Wait For Line On Uart Task - 1
Should Run LiteOS Port Sample
Create Machine riscv-liteos-port.elf-s_689820-e68d3bcf0a12c25daa66fc51e474281bcbed2fc7
Create Terminal Tester ${UART}
# this magic PerformanceInMips is required for the test to pass
# it is related to a bug in LiteOS (stack overflow and corruption) when interrupts happens in *wrong* moments
Execute Command sysbus.cpu PerformanceInMips 300
Execute Command showAnalyzer ${UART}
Start Emulation
Wait For Line On Uart Los Inspect start.
Wait For Line On Uart Los Key example: please press the UserKey (SW2) key
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_2 Toggle
Wait For Line On Uart Key test example
Should Run ZephyrRTOS Shell Sample
Create Machine shell-demo-miv.elf-s_803248-ea4ddb074325b2cc1aae56800d099c7cf56e592a
Create Terminal Tester ${UART}
Execute Command showAnalyzer ${UART}
Start Emulation
Wait For Prompt On Uart uart:~
Write Line To Uart version
Wait For Line On Uart Zephyr version 1.13.99
Should Generate Interrupts On Gpio Rising Edge
Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-positive.elf-s_135192-436f2656cbcff66f043ae6ba0b7977d0ee5e82a1
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Wait For Line On Uart GPIO1
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Wait For Line On Uart GPIO2
Should Generate Interrupts On Gpio Falling Edge
Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-negative.elf-s_135192-19e453c25b09a2ecfeb7a8015588355f90ad8f02
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Wait For Line On Uart GPIO1
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Wait For Line On Uart GPIO2
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Test If Uart Is Idle 1
Should Generate Interrupts On Gpio Both Edges
Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-both.elf-s_135192-1afc01350e4f0e17e2e556796cf577d2768636ec
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Wait For Line On Uart GPIO1
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Wait For Line On Uart GPIO1
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Wait For Line On Uart GPIO2
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Wait For Line On Uart GPIO2
Should Generate Interrupts On Gpio High Level
Create Machine riscv-interrupt-blinky_gpio-interrupts-level-high.elf-s_135168-e03e81b692982ad2f1f46085b9077fdfef62adf2
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Should Generate Interrupts On Gpio Low Level
Create Machine riscv-interrupt-blinky_gpio-interrupts-level-low.elf-s_135168-f570dad79ea5aa0bfe9aa1000f453f0f50f344df
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart CoreTIMER and external Interrupt Example.
Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Test If Uart Is Idle 1
Execute Command sysbus.gpioInputs.user_switch_0 Toggle
Sleep 1s
Execute Command sysbus.gpioInputs.user_switch_1 Toggle
Sleep 1s
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2
Wait For Line On Uart GPIO1
Wait For Line On Uart GPIO2