| *** Variables *** |
| ${URL} https://dl.antmicro.com/projects/renode |
| ${AGT_ELF} ${URL}/renesas_ra6m5--agt.elf-s_303444-613fbe7bc11ecbc13afa7a8a907682bbbb2a3458 |
| ${HELLO_WORLD_ELF} ${URL}/ra6m5-hello_world.elf-s_310112-5e896556c868826bc8d25d695202ebe0beed7df2 |
| ${AWS_SCI_ICP10101_ELF} ${URL}/renesas_ra6m5--aws-icp10101.elf-s_795916-3d68631f0fdfc3838fdba768d3a6d46312707ae3 |
| ${AWS_SCI_HS3001_ELF} ${URL}/renesas_ra6m5--aws-hs3001.elf-s_758320-642c83fb428d4ccc1e35c2908178de232744dbad |
| ${AWS_ZMOD4510_ELF} ${URL}/renesas_ra6m5--aws-zmod4510.elf-s_807176-4b4d580be7d9876f822205349432d3ea68172a17 |
| ${AWS_ZMOD4410_ELF} ${URL}/renesas_ra6m5--aws-zmod4410.elf-s_808224-8d79f1a1ff242d00131c12298f64420df21bc1d3 |
| ${SCI_SPI_ELF} ${URL}/renesas_ra6m5--sci_spi.elf-s_346192-72cd95f5c506423a29f654be7fb7471b3b230ed0 |
| ${AWS_ICM20948_ELF} ${URL}/renesas_ra6m5--aws-icm20948.elf-s_799636-492407caeb09cadd9b5bab867955ce9dc6d7229e |
| # SCI_UART demo is slightly modified version with additional printfs for better testability |
| ${SCI_UART_ELF} ${URL}/renesas_ra6m5--sci_uart.elf-s_413420-158250896f48de6bf28e409c99cdda0b2b21e43e |
| ${IIC_MASTER_ELF} ${URL}/renesas_ra6m5--iic_master.elf-s_322744-232a1bea524059a7170c97c7fa698c5efff39f03 |
| ${AWS_CC_ELF} ${URL}/renesas_ra6m5--aws.elf-s_1022068-eb223bcbec23d091f52980a36dea325060d046f7 |
| |
| ${CSV2RESD} ${RENODETOOLS}/csv2resd/csv2resd.py |
| ${ICM20948_SAMPLES_CSV} ${CURDIR}/ICM20948-samples.csv |
| |
| ${RA6M5_REPL} platforms/cpus/renesas-r7fa6m5b.repl |
| ${CK_BOARD_REPL} platforms/boards/renesas-ck_ra6m5.repl |
| ${CK_SCI_SENSORS_BOARD_REPL} @tests/platforms/renesas-ck_ra6m5-sensors_example.repl |
| |
| ${LED_REPL} SEPARATOR=\n |
| ... """ |
| ... led: Miscellaneous.LED @ port6 10 |
| ... |
| ... port6: |
| ... ${SPACE*4}10 -> led@0 |
| ... """ |
| |
| ${BUTTON_REPL} SEPARATOR=\n |
| ... """ |
| ... button: Miscellaneous.Button @ port8 4 |
| ... ${SPACE*4}-> port8@4 |
| ... """ |
| |
| *** Keywords *** |
| Create Machine |
| [Arguments] ${bin} ${repl} |
| Execute Command using sysbus |
| Execute Command mach create "ra6m5" |
| |
| Execute Command machine LoadPlatformDescription @${repl} |
| |
| Execute Command set bin @${bin} |
| Execute Command macro reset "sysbus LoadELF $bin" |
| Execute Command runMacro $reset |
| |
| Prepare Machine |
| [Arguments] ${bin} |
| Create Machine ${bin} ${RA6M5_REPL} |
| |
| Prepare Machine With SCI Sensors Board |
| [Arguments] ${bin} |
| Create Machine ${bin} ${CK_SCI_SENSORS_BOARD_REPL} |
| |
| Prepare Machine With CK Board |
| [Arguments] ${bin} |
| Create Machine ${bin} ${CK_BOARD_REPL} |
| |
| Prepare Segger RTT |
| 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 |
| |
| Prepare LED Tester |
| Execute Command machine LoadPlatformDescriptionFromString ${LED_REPL} |
| Create Led Tester sysbus.port6.led |
| |
| Prepare UART Tester |
| Create Terminal Tester sysbus.sci0 |
| |
| Create ICM20948 RESD File |
| [Arguments] ${path} |
| ${resd_path}= Allocate Temporary File |
| ${args}= Catenate SEPARATOR=, |
| ... "--input", r"${path}" |
| ... "--map", "angular_rate:angular_rate_x,angular_rate_y,angular_rate_z:x,y,z" |
| ... "--map", "acceleration:acceleration_x,acceleration_y,acceleration_z:x,y,z" |
| ... "--map", "magnetic_flux_density:magnetic_flux_density_x,magnetic_flux_density_y,magnetic_flux_density_z:x,y,z" |
| ... "--start-time", "200000000" |
| ... "--frequency", "5" |
| ... r"${resd_path}" |
| Evaluate subprocess.run([sys.executable, "${CSV2RESD}", ${args}]) sys,subprocess |
| [Return] ${resd_path} |
| |
| *** 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 |
| |
| # 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 pauseEmulation=true timeout=0.011 |
| Wait For Log Entry AGT0 False level=Error pauseEmulation=true |
| # move to the begining 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. pauseEmulation=true |
| Assert And Hold Led State True 0.0 0.05 |
| |
| Should Run Hello World Demo |
| Prepare Machine ${HELLO_WORLD_ELF} |
| Execute Command machine LoadPlatformDescriptionFromString ${BUTTON_REPL} |
| Prepare UART Tester |
| |
| Start Emulation |
| Wait For Line On Uart Hello world! |
| Wait For Line On Uart Blinking available LEDs with 1Hz frequency: P1546, P1545, P1537, P1538, P1539, P1541 |
| Wait For Line On Uart LEDS OFF |
| Wait For Line On Uart LEDS ON |
| Wait For Line On Uart LEDS OFF |
| Wait For Line On Uart LEDS ON |
| |
| # Test GPIO IRQ, button (PORT8.4) allows to toggle blinking |
| |
| # Stop blinking |
| Execute Command port8.button PressAndRelease |
| Wait For Line On Uart Blinking has been disabled |
| # LEDS OFF and LEDS ON messages shouldn't be printed anymore |
| Should Not Be On Uart LEDS OFF timeout=1 |
| Should Not Be On Uart LEDS ON timeout=1 |
| |
| # Star blinking again |
| Execute Command port8.button PressAndRelease |
| Wait For Line On Uart Blinking has been enabled |
| Wait For Line On Uart LEDS OFF |
| Wait For Line On Uart LEDS ON |
| Wait For Line On Uart LEDS OFF |
| Wait For Line On Uart LEDS ON |
| |
| Should Get Correct Temperature Readouts From ICP10101 |
| Prepare Machine With SCI Sensors Board ${AWS_SCI_ICP10101_ELF} |
| Prepare SEGGER_RTT |
| |
| Start Emulation |
| Wait For Line On Uart Renesas FSP Application Project |
| Wait For Line On Uart I2C bus setup success |
| Wait For Line On Uart ICP Sensor Data |
| Wait For Line On Uart Temperature -000.000 |
| Wait For Line On Uart Pressure\\s+ 29999.820 treatAsRegex=true |
| |
| Execute Command sysbus.sci0.barometer_sci DefaultTemperature 13.5 |
| Execute Command sysbus.sci0.barometer_sci DefaultPressure 40000 |
| Wait For Line On Uart Temperature\\s+013.498 treatAsRegex=true |
| Wait For Line On Uart Pressure\\s+ 39999.929 treatAsRegex=true |
| |
| Should Get Correct Readouts from the HS3001 |
| |
| Prepare Machine With SCI Sensors Board ${AWS_SCI_HS3001_ELF} |
| Prepare SEGGER RTT |
| |
| # Due to rounding precision, some errors in the measured values are expected |
| Wait For Line On Uart HS3001 sensor setup success |
| Wait For Line On Uart HS3001 Sensor Data |
| Wait For Line On Uart Temperature:\\s+000.000 treatAsRegex=true |
| Wait For Line On Uart Humidity:\\s+000.000 treatAsRegex=true |
| |
| Execute Command sysbus.sci0.hs3001_sci DefaultTemperature 13.5 |
| Execute Command sysbus.sci0.hs3001_sci DefaultHumidity 50 |
| Wait For Line On Uart Temperature:\\s+013.500 treatAsRegex=true |
| Wait For Line On Uart Humidity:\\s+050.099 treatAsRegex=true |
| |
| Execute Command sysbus.sci0.hs3001_sci DefaultTemperature -40 |
| Wait For Line On Uart Temperature:\\s-039.950 treatAsRegex=true |
| Wait For Line On Uart Humidity:\\s+050.099 treatAsRegex=true |
| |
| Execute Command sysbus.sci0.hs3001_sci DefaultTemperature 125 |
| Execute Command sysbus.sci0.hs3001_sci DefaultHumidity 100 |
| Wait For Line On Uart Temperature:\\s+125.000 treatAsRegex=true |
| Wait For Line On Uart Humidity:\\s+100.000 treatAsRegex=true |
| |
| Should Read From The ZMOD4510 Sensor |
| Prepare Machine With SCI Sensors Board ${AWS_ZMOD4510_ELF} |
| Prepare SEGGER_RTT |
| |
| Wait For Line On Uart ZMOD4510 sensor setup success |
| # Sensor readouts depend on the "InitConfigurationRValue", "Rvalue" and "Configuration". |
| # This test uses the default values, but it can be set using those properties |
| # As the algorithm for calculating the final result is proprietary, we expose a way of providing the complete RField input vector |
| Wait For Line On Uart OAQ: 231.935 |
| Wait For Line On Uart OAQ: 099.132 |
| |
| Should Read From The ZMOD4410 Sensor |
| Prepare Machine With SCI Sensors Board ${AWS_ZMOD4410_ELF} |
| Prepare SEGGER_RTT |
| |
| Wait For Line On Uart ZMOD4410 sensor setup success |
| # Sensor readouts depend on the "InitConfigurationRValue", "Rvalue" , "ProductionData" and "Configuration". |
| # This test uses the default values, but it can be set using those properties |
| # As the algorithm for calculating the final result is proprietary, we expose a way of providing the complete RField input vector |
| Wait For Line On Uart TVOC: 000.014 |
| Wait For Line On Uart ETOH: 000.007 |
| Wait For Line On Uart ECO2: 401.176 |
| # Readouts should soon stabilize |
| Wait For Line On Uart TVOC: 000.015 |
| Wait For Line On Uart ETOH: 000.008 |
| Wait For Line On Uart ECO2: 404.523 |
| |
| Should Read Temperature From SPI Sensor |
| Prepare Machine ${SCI_SPI_ELF} |
| Prepare Segger RTT |
| |
| # Sample expects the MAX31723PMB1 temperature sensor which there is no model for in Renode |
| Execute Command machine LoadPlatformDescriptionFromString "sensor: Sensors.GenericSPISensor @ sci0" |
| |
| # Sensor initialization values |
| Execute Command sci0.sensor FeedSample 0x80 |
| Execute Command sci0.sensor FeedSample 0x6 |
| Execute Command sci0.sensor FeedSample 0x0 |
| |
| # Temperature of 15 °C |
| Execute Command sci0.sensor FeedSample 0x0 |
| Execute Command sci0.sensor FeedSample 0xF |
| Execute Command sci0.sensor FeedSample 0x0 |
| |
| # Temperature of 10 °C |
| Execute Command sci0.sensor FeedSample 0x0 |
| Execute Command sci0.sensor FeedSample 0xA |
| Execute Command sci0.sensor FeedSample 0x0 |
| |
| # Temperature of 2 °C |
| Execute Command sci0.sensor FeedSample 0x0 |
| Execute Command sci0.sensor FeedSample 0x2 |
| Execute Command sci0.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 Read And Write On UART |
| Prepare Machine ${SCI_UART_ELF} |
| |
| Create Terminal Tester sysbus.sci0 |
| |
| 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 Default Values From ICM20948 |
| Prepare Machine With SCI Sensors Board ${AWS_ICM20948_ELF} |
| Prepare Segger RTT |
| |
| Execute Command sci0.icm_sci DefaultAccelerationX 0.3183098861837907 |
| Execute Command sci0.icm_sci DefaultAccelerationY 1.618033988749895 |
| Execute Command sci0.icm_sci DefaultAccelerationZ -0.36787944117144233 |
| |
| Execute Command sci0.icm_sci DefaultAngularRateX 10.604 |
| Execute Command sci0.icm_sci DefaultAngularRateY 200.002 |
| Execute Command sci0.icm_sci DefaultAngularRateZ -3.1 |
| |
| Execute Command sysbus.sci0.icm_sci.magnetometer_sci DefaultMagneticFluxDensityX 150 |
| Execute Command sysbus.sci0.icm_sci.magnetometer_sci DefaultMagneticFluxDensityY 300 |
| Execute Command sysbus.sci0.icm_sci.magnetometer_sci DefaultMagneticFluxDensityZ 450 |
| |
| Wait For Line On Uart ICM Sensor Data |
| Wait For Line On Uart AccX 000.318 |
| Wait For Line On Uart AccY 001.618 |
| Wait For Line On Uart AccZ -000.367 |
| |
| Wait For Line On Uart GyrX 010.597 |
| Wait For Line On Uart GyrY 199.890 |
| Wait For Line On Uart GyrZ -003.097 |
| |
| Wait For Line On Uart MagX 000.149 |
| Wait For Line On Uart MagY 000.298 |
| Wait For Line On Uart MagZ 000.448 |
| |
| |
| Should Read Values From ICM20948 Fed From RESD File |
| Prepare Machine With SCI Sensors Board ${AWS_ICM20948_ELF} |
| Prepare Segger RTT |
| |
| ${resd_path}= Create ICM20948 RESD File ${ICM20948_SAMPLES_CSV} |
| Execute Command sysbus.sci0.icm_sci FeedAccelerationSamplesFromRESD @${resd_path} |
| Execute Command sysbus.sci0.icm_sci FeedAngularRateSamplesFromRESD @${resd_path} |
| Execute Command sysbus.sci0.icm_sci.magnetometer_sci FeedMagneticSamplesFromRESD @${resd_path} |
| |
| Wait For Line On Uart ICM Sensor Data |
| Wait For Line On Uart AccX 000.001 |
| Wait For Line On Uart AccY 001.002 |
| Wait For Line On Uart AccZ -004.000 |
| |
| Wait For Line On Uart GyrX 249.862 |
| Wait For Line On Uart GyrY -249.862 |
| Wait For Line On Uart GyrZ 003.143 |
| |
| Wait For Line On Uart MagX 000.149 |
| Wait For Line On Uart MagY 000.298 |
| Wait For Line On Uart MagZ 000.448 |
| |
| Wait For Line On Uart ICM Sensor Data |
| Wait For Line On Uart AccX 000.002 |
| Wait For Line On Uart AccY 000.998 |
| Wait For Line On Uart AccZ 003.999 |
| |
| Wait For Line On Uart GyrX 243.499 |
| Wait For Line On Uart GyrY -249.549 |
| Wait For Line On Uart GyrZ 003.280 |
| |
| Wait For Line On Uart MagX 000.298 |
| Wait For Line On Uart MagY 000.448 |
| Wait For Line On Uart MagZ 000.597 |
| |
| Should Communicate Over IIC |
| Prepare Machine ${IIC_MASTER_ELF} |
| Execute Command machine LoadPlatformDescriptionFromString "adxl345: Sensors.ADXL345 @ iic1 0x1D" |
| Prepare Segger RTT |
| |
| # Sample displays raw data from the sensor, so printed values are different from loaded samples |
| Execute Command iic1.adxl345 FeedSample 1000 1000 1000 |
| Wait For Line On Uart X-axis = 250.00, Y-axis = 250.00, Z-axis = 250.00 |
| |
| Execute Command iic1.adxl345 FeedSample 2000 3000 4000 |
| Wait For Line On Uart X-axis = 500.00, Y-axis = 750.00, Z-axis = 1000.00 |
| |
| Execute Command iic1.adxl345 FeedSample 1468 745 8921 |
| Wait For Line On Uart X-axis = 367.00, Y-axis = 186.00, Z-axis = 2230.00 |
| |
| Execute Command iic1.adxl345 FeedSample 3912 8888 5456 |
| Wait For Line On Uart X-axis = 978.00, Y-axis = 2222.00, Z-axis = 1364.00 |
| |
| Execute Command iic1.adxl345 FeedSample 0 5000 0 |
| Wait For Line On Uart X-axis = 0.00, Y-axis = 1250.00, Z-axis = 0.00 |
| |
| Wait For Line On Uart X-axis = 0.00, Y-axis = 0.00, Z-axis = 0.00 |
| |
| CK IIC Board Should Work |
| Prepare Machine With CK Board ${AWS_CC_ELF} |
| Prepare Segger RTT |
| |
| Execute Command sysbus.iic0.hs3001 DefaultTemperature 13.5 |
| Execute Command sysbus.iic0.hs3001 DefaultHumidity 50 |
| |
| Execute Command sysbus.iic0.barometer DefaultTemperature 13.5 |
| Execute Command sysbus.iic0.barometer DefaultPressure 40000 |
| |
| Execute Command sysbus.iic0.icm DefaultAccelerationX 0.3183098861837907 |
| Execute Command sysbus.iic0.icm DefaultAccelerationY 1.618033988749895 |
| Execute Command sysbus.iic0.icm DefaultAccelerationZ -0.36787944117144233 |
| |
| Execute Command sysbus.iic0.icm DefaultAngularRateX 10.604 |
| Execute Command sysbus.iic0.icm DefaultAngularRateY 200.002 |
| Execute Command sysbus.iic0.icm DefaultAngularRateZ -3.1 |
| |
| Execute Command sysbus.iic0.icm.magnetometer DefaultMagneticFluxDensityX 150 |
| Execute Command sysbus.iic0.icm.magnetometer DefaultMagneticFluxDensityY 300 |
| Execute Command sysbus.iic0.icm.magnetometer DefaultMagneticFluxDensityZ 450 |
| |
| Wait For Line On Uart IAQ Sensor Data |
| Wait For Line On Uart TVOC: 000.015 |
| Wait For Line On Uart ETOH: 000.008 |
| Wait For Line On Uart ECO2: 404.384 |
| |
| Wait For Line On Uart OAQ Sensor Data |
| Wait For Line On Uart OAQ: 231.935 |
| |
| Wait For Line On Uart HS3001 Sensor Data |
| Wait For Line On Uart Humidity: 050.099 |
| Wait For Line On Uart Temperature: 013.500 |
| |
| Wait For Line On Uart ICM Sensor Data |
| Wait For Line On Uart AccX 000.318 |
| Wait For Line On Uart AccY 001.618 |
| Wait For Line On Uart AccZ -000.367 |
| |
| Wait For Line On Uart GyrX 010.597 |
| Wait For Line On Uart GyrY 199.890 |
| Wait For Line On Uart GyrZ -003.097 |
| |
| Wait For Line On Uart MagX 000.149 |
| Wait For Line On Uart MagY 000.298 |
| Wait For Line On Uart MagZ 000.448 |
| |
| Wait For Line On Uart ICP Sensor Data |
| Wait For Line On Uart Temperature: 013.498 |
| Wait For Line On Uart Pressure: 39999.929 |