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