blob: bc56d62ff32f589fcbef5f90320258709f6b30a3 [file] [log] [blame]
*** Variables ***
${CPU} sysbus.cpu
${UART} sysbus.uartB
${URI} @https://dl.antmicro.com/projects/renode
${SCRIPT} ${CURDIR}/../../scripts/single-node/quark_c1000.resc
*** Test Cases ***
Should Run Hello World
[Documentation] Runs Zephyr's 'hello_world' sample on Quark C1000 platform.
[Tags] zephyr uart
Execute Command $bin = ${URI}/hello_world.elf-s_314404-767e7a65942935de2abf276086957170847d99b5
Execute Script ${SCRIPT}
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Hello World! x86
Should Run Hello World With Sleep
[Documentation] Runs modified Zephyr's 'hello_world' sample on Quark C1000 platform. This one outputs 'Hello World! x86' on uart every 2 seconds.
[Tags] zephyr uart interrupts
Set Test Variable ${SLEEP_TIME} 2000
Set Test Variable ${SLEEP_TOLERANCE} 20
Set Test Variable ${REPEATS} 5
Execute Command $bin = ${URI}/hello_world-with-sleep.elf-s_317148-a279de34d55b10c97720845fdf7e58bd42bb0477
Execute Script ${SCRIPT}
Create Terminal Tester ${UART}
Start Emulation
${l}= Create List
${MAX_SLEEP_TIME}= Evaluate ${SLEEP_TIME} + ${SLEEP_TOLERANCE}
FOR ${i} IN RANGE 0 ${REPEATS}
${r} Wait For Line On Uart Hello World! x86
Append To List ${l} ${r.timestamp}
END
FOR ${i} IN RANGE 1 ${REPEATS}
${i1}= Get From List ${l} ${i - 1}
${i2}= Get From List ${l} ${i}
${d}= Evaluate ${i2} - ${i1}
Should Be True ${d} >= ${SLEEP_TIME} Too short sleep detected between entries ${i} and ${i + 1}: expected ${SLEEP_TIME}, got ${d}
Should Be True ${d} <= ${MAX_SLEEP_TIME} Too long sleep detected between entires ${i} and ${i + 1}: expected ${SLEEP_TIME}, got ${d}
END
Should Run Shell
[Documentation] Runs Zephyr's 'shell' sample on Quark C1000 platform.
[Tags] zephyr uart interrupts
Execute Command $bin = ${URI}/shell.elf-s_392956-4b5bdd435f3d7c6555e78447438643269a87186b
Execute Script ${SCRIPT}
Create Terminal Tester ${UART} endLineOption=TreatCarriageReturnAsEndLine
Start Emulation
Wait For Prompt On Uart shell>
# this sleep here is to prevent against writing to soon on uart - it can happen under high stress of the host CPU - when an uart driver is not initalized which leads to irq-loop
Sleep 3
Write Line To Uart select sample_module
Wait For Prompt On Uart sample_module>
Write Line To Uart ping
Wait For Line On Uart pong
Should Handle Gpio Button
[Documentation] Runs Zephyr's 'basic/button' sample on Quark C1000 platform.
[Tags] zephyr uart interrupts gpio button non_critical
Set Test Variable ${WAIT_PERIOD} 2
Execute Command $bin = ${URI}/button.elf-s_317524-b42765dd760d0dd260079b99724aabec2b5cf34b
Execute Script ${SCRIPT}
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Press the user defined button on the board
Test If Uart Is Idle ${WAIT_PERIOD}
Execute Command gpio.button Toggle
Test If Uart Is Idle ${WAIT_PERIOD}
Execute Command gpio.button Toggle
Wait For Line On Uart Button pressed
Test If Uart Is Idle ${WAIT_PERIOD}
Execute Command gpio.button PressAndRelease
Wait For Line On Uart Button pressed
Should Read Sensor
[Documentation] Runs antmicro's 'sensor/lm74' sample on Quark C1000 platform.
[Tags] zephyr uart lm74 temperature sensor spi
Set Test Variable ${SENSOR} spi0.lm74
Execute Command $bin = ${URI}/lm74.elf-s_397752-47a08286be251887f15b378bd3c9f0d7829e1469
Execute Script ${SCRIPT}
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart SPI Example application
Wait For Line On Uart Current temperature: 0.0
Execute Command ${SENSOR} Temperature 36
Wait For Line On Uart Current temperature: 36.0
Should Talk Over Network Using Ethernet
[Documentation] Runs Zephyr's 'net/echo' sample on Quark C1000 platform with external ENC28J60 ethernet module.
[Tags] zephyr uart spi ethernet gpio
Set Test Variable ${REPEATS} 5
Execute Command emulation CreateSwitch "switch"
Execute Command $bin = ${URI}/echo_server.elf-s_684004-1ebf8c5dffefb95db60350692cf81fb7fd888869
Execute Command $name="quark-server"
Execute Script ${SCRIPT}
Execute Command connector Connect spi1.ethernet switch
Execute Command mach clear
Execute Command $bin = ${URI}/echo_client.elf-s_686384-fab5f2579652cf4bf16d68a456e6f6e4dbefbafa
Execute Command $name="quark-client"
Execute Script ${SCRIPT}
Execute Command connector Connect spi1.ethernet switch
${mach0_tester}= Create Terminal Tester ${UART} machine=quark-server
${mach1_tester}= Create Terminal Tester ${UART} machine=quark-client
Start Emulation
FOR ${i} IN RANGE 1 ${REPEATS}
${r}= Evaluate random.randint(1, 50) modules=random
RepeatKeyword ${r}
... Wait For Next Line On Uart testerId=${mach0_tester}
${p}= Wait For Line On Uart build_reply_pkt: UDP IPv4 received (\\d+) testerId=${mach0_tester} treatAsRegex=true
${n}= Wait For Next Line On Uart testerId=${mach0_tester}
Should Contain ${n.line} pkt_sent: Sent ${p.groups[0]} bytes
END
FOR ${i} IN RANGE 1 ${REPEATS}
${r}= Evaluate random.randint(1, 50) modules=random
RepeatKeyword ${r}
... Wait For Next Line On Uart testerId=${mach1_tester}
${p}= Wait For Line On Uart udp_sent: IPv4: sent (\\d+) testerId=${mach1_tester} treatAsRegex=true
${n}= Wait For Next Line On Uart testerId=${mach1_tester}
Should Contain ${n.line} Compared ${p.groups[0]} bytes, all ok
END