157 lines
7.4 KiB
Plaintext
157 lines
7.4 KiB
Plaintext
*** Variables ***
|
|
${AGT_ELF} https://dl.antmicro.com/projects/renode/renesas_ek_ra8m1--agt.elf-s_391008-c0a91e7f3d279b86269ca83ac0aabb9936f94838
|
|
${SCI_UART_ELF} https://dl.antmicro.com/projects/renode/renesas_ek_ra8m1--sci_uart.elf-s_535224-63f8b0f8a025f09554a015f4b896f73b2cbeee43
|
|
${SCI_SPI_ELF} https://dl.antmicro.com/projects/renode/renesas_ek_ra8m1--sci_spi.elf-s_436396-52fced761b153c037fab56f23d65971e752af799
|
|
${SCI_I2C_ELF} https://dl.antmicro.com/projects/renode/renesas_ek_ra8m1--sci_i2c.elf-s_427784-2814fc53a441712e50d182c6e73770344b7f6ba4
|
|
|
|
*** Keywords ***
|
|
Prepare Machine
|
|
[Arguments] ${elf}
|
|
Execute Command using sysbus
|
|
Execute Command mach create "ra8m1"
|
|
|
|
Execute Command machine LoadPlatformDescription @platforms/boards/renesas-ek_ra8m1.repl
|
|
|
|
Execute Command set bin @${elf}
|
|
Execute Command macro reset "sysbus LoadELF $bin"
|
|
Execute Command runMacro $reset
|
|
|
|
Prepare Segger RTT
|
|
[Arguments] ${pauseEmulation}=true
|
|
Execute Command machine CreateVirtualConsole "segger_rtt"
|
|
Execute Command include @scripts/single-node/segger-rtt.py
|
|
Execute Command setup_segger_rtt sysbus.segger_rtt
|
|
Create Terminal Tester sysbus.segger_rtt defaultPauseEmulation=${pauseEmulation}
|
|
|
|
Prepare LED Tester
|
|
Create Led Tester sysbus.port6.led_blue
|
|
|
|
Create Echo I2C Peripheral
|
|
[Arguments] ${master} ${slave_address}
|
|
Execute Command machine LoadPlatformDescriptionFromString "dummy: Mocks.DummyI2CSlave @ ${master} ${slave_address}"
|
|
|
|
${python_script}= Catenate SEPARATOR=\n
|
|
... python
|
|
... """
|
|
... class EchoI2CPeripheral:
|
|
... ${SPACE*4}def __init__(self, dummy):
|
|
... ${SPACE*8}self.dummy = dummy
|
|
...
|
|
... ${SPACE*4}def write(self, data):
|
|
... ${SPACE*8}self.dummy.EnqueueResponseBytes(data)
|
|
...
|
|
... def mc_setup_echo_i2c_peripheral(path):
|
|
... ${SPACE*4}dummy = monitor.Machine[path]
|
|
... ${SPACE*4}dummy.DataReceived += EchoI2CPeripheral(dummy).write
|
|
... """
|
|
|
|
Execute Command ${python_script}
|
|
Execute Command setup_echo_i2c_peripheral "sysbus.${master}.dummy"
|
|
|
|
*** Test Cases ***
|
|
Should Run Periodically Blink LED
|
|
Prepare Machine ${AGT_ELF}
|
|
Prepare LED Tester
|
|
Prepare Segger RTT
|
|
|
|
Execute Command agt0 IRQ AddStateChangedHook "Antmicro.Renode.Logging.Logger.Log(LogLevel.Error, 'AGT0 ' + str(state))"
|
|
# Timeout is only used for checking whether the IRQ has been handled
|
|
Create Log Tester 0.001 defaultPauseEmulation=true
|
|
|
|
# Configuration is roughly in ms
|
|
Wait For Prompt On Uart One-shot mode:
|
|
Write Line To Uart 10 waitForEcho=false
|
|
Wait For Line On Uart Time period for one-shot mode timer: 10
|
|
|
|
Wait For Prompt On Uart Periodic mode:
|
|
Write Line To Uart 5 waitForEcho=false
|
|
Wait For Line On Uart Time period for periodic mode timer: 5
|
|
|
|
Wait For Prompt On Uart Enter any key to start or stop the timers
|
|
Write Line To Uart waitForEcho=false
|
|
|
|
# Timeout is extended by an additional 1ms to account for rounding errors
|
|
Wait For Log Entry AGT0 True level=Error timeout=0.011
|
|
Wait For Log Entry AGT0 False level=Error
|
|
# move to the beginning of a True state
|
|
Assert Led State True timeout=0.01 pauseEmulation=true
|
|
# Run test for 5 cycles
|
|
Assert Led Is Blinking testDuration=0.05 onDuration=0.005 offDuration=0.005 tolerance=0.2 pauseEmulation=true
|
|
Assert Led State True timeout=0.005 pauseEmulation=true
|
|
|
|
# Stop timers, clear log tester history and check whether the periodic timer stops
|
|
Write Line To Uart waitForEcho=false
|
|
Wait For Line On Uart Periodic timer stopped. Enter any key to start timers.
|
|
Assert And Hold Led State True 0.0 0.05
|
|
|
|
Should Read And Write On UART
|
|
Prepare Machine ${SCI_UART_ELF}
|
|
Execute Command cpu AddHook `sysbus GetSymbolAddress "bsp_clock_init"` "cpu.PC = cpu.LR"
|
|
|
|
Create Terminal Tester sysbus.sci2
|
|
|
|
Wait For Line On Uart Starting UART demo
|
|
|
|
Write Line To Uart 56 waitForEcho=false
|
|
Wait For Line On Uart Setting intensity to: 56
|
|
Wait For Line On Uart Set next value
|
|
|
|
Write Line To Uart 1 waitForEcho=false
|
|
Wait For Line On Uart Setting intensity to: 1
|
|
Wait For Line On Uart Set next value
|
|
|
|
Write Line To Uart 100 waitForEcho=false
|
|
Wait For Line On Uart Setting intensity to: 100
|
|
Wait For Line On Uart Set next value
|
|
|
|
Write Line To Uart 371 waitForEcho=false
|
|
Wait For Line On Uart Invalid input. Input range is from 1 - 100
|
|
|
|
Write Line To Uart 74 waitForEcho=false
|
|
Wait For Line On Uart Setting intensity to: 74
|
|
Wait For Line On Uart Set next value
|
|
|
|
Should Read Temperature From SPI
|
|
Prepare Machine ${SCI_SPI_ELF}
|
|
Execute Command cpu AddHook `sysbus GetSymbolAddress "bsp_clock_init"` "cpu.PC = cpu.LR"
|
|
Prepare Segger RTT
|
|
|
|
# Sample expects the MAX31723PMB1 temperature sensor which there is no model for in Renode
|
|
Execute Command machine LoadPlatformDescriptionFromString "sensor: Sensors.GenericSPISensor @ sci2"
|
|
|
|
# Sensor initialization values
|
|
Execute Command sci2.sensor FeedSample 0x80
|
|
Execute Command sci2.sensor FeedSample 0x6
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
|
|
# Temperature of 15 °C
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
Execute Command sci2.sensor FeedSample 0xF
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
|
|
# Temperature of 10 °C
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
Execute Command sci2.sensor FeedSample 0xA
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
|
|
# Temperature of 2 °C
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
Execute Command sci2.sensor FeedSample 0x2
|
|
Execute Command sci2.sensor FeedSample 0x0
|
|
|
|
Wait For Line On Uart Temperature:${SPACE*2}15.000000 *C
|
|
Wait For Line On Uart Temperature:${SPACE*2}10.000000 *C
|
|
Wait For Line On Uart Temperature:${SPACE*2}2.000000 *C
|
|
Wait For Line On Uart Temperature:${SPACE*2}0.000000 *C
|
|
|
|
Should Pass Communication Test On SCI With Sample I2C Echo Slave
|
|
Prepare Machine ${SCI_I2C_ELF}
|
|
Prepare Segger RTT
|
|
Execute Command cpu AddHook `sysbus GetSymbolAddress "bsp_clock_init"` "cpu.PC = cpu.LR"
|
|
|
|
Create Echo I2C Peripheral sci1 0x4A
|
|
|
|
Wait For Line On Uart ** SCI_I2C Master Write operation is successful **
|
|
Wait For Line On Uart ** SCI_I2C Master Read operation is successful **
|
|
Wait For Line On Uart ** Read and Write buffers are equal **
|