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