| *** Variables *** | |
| ${SCRIPT} ${CURDIR}/../../scripts/single-node/hifive_unleashed.resc | |
| ${UART} sysbus.uart0 | |
| *** Keywords *** | |
| Prepare Machine | |
| # we use special FDT that contains spi sensors | |
| Execute Command \$fdt?=@https://dl.antmicro.com/projects/renode/hifive-unleashed--devicetree-tests.dtb-s_8718-ba79c50f59ec31c6317ba31d1eeebee2b4fb3d89 | |
| Execute Script ${SCRIPT} | |
| # attach SPI sensor | |
| Execute Command machine LoadPlatformDescriptionFromString "lm74_1: Sensors.TI_LM74 @ qspi1 0x0" | |
| Execute Command machine LoadPlatformDescriptionFromString "lm74_2: Sensors.TI_LM74 @ qspi1 0x1" | |
| # attach I2C sensors | |
| Execute Command machine LoadPlatformDescriptionFromString "si7021: Sensors.SI70xx @ i2c 0x40 { model: Model.SI7021 }" | |
| # create gpio analyzer and connect pwm0 to it | |
| Execute Command machine LoadPlatformDescriptionFromString "pt: PWMTester @ pwm0 2" | |
| Execute Command machine LoadPlatformDescriptionFromString "pwm0: { 2 -> pt@0 }" | |
| *** Test Cases *** | |
| Should Boot Linux | |
| [Documentation] Boots Linux on SiFive Freedom U540 platform. | |
| [Tags] linux uart interrupts | |
| Prepare Machine | |
| Create Terminal Tester ${UART} | |
| Start Emulation | |
| Wait For Prompt On Uart buildroot login | |
| Write Line To Uart root | |
| Wait For Prompt On Uart Password | |
| Write Line To Uart root waitForEcho=false | |
| Wait For Prompt On Uart \# | |
| # This platform must use an old approach as it fails to deserialize on Windows and macOS | |
| Provides booted-linux Reexecution | |
| Should Ls | |
| [Documentation] Tests shell responsiveness in Linux on SiFive Freedom U540 platform. | |
| [Tags] linux uart interrupts | |
| Requires booted-linux | |
| Write Line To Uart ls / | |
| Wait For Line On Uart proc | |
| Should Read Temperature From SPI sensors | |
| [Documentation] Reads temperature from SPI sensor in Linux on SiFive Freedom U540 platform. | |
| [Tags] linux uart spi sensors | |
| Requires booted-linux | |
| Execute Command qspi1.lm74_1 Temperature 36.5 | |
| Execute Command qspi1.lm74_2 Temperature 73 | |
| Write Line To Uart cd /sys/class/spi_master/spi0/spi0.0/hwmon/hwmon0 | |
| Write Line To Uart cat temp1_input | |
| Wait For Line On Uart 36500 | |
| Write Line To Uart cd /sys/class/spi_master/spi0/spi0.1/hwmon/hwmon1 | |
| Write Line To Uart cat temp1_input | |
| Wait For Line On Uart 73000 | |
| Should Detect I2C sensor | |
| [Documentation] Tests I2C controller in Linux on SiFive Freedom U540 platform. | |
| [Tags] linux uart i2c | |
| Requires booted-linux | |
| Write Line To Uart i2cdetect 0 | |
| Wait For Prompt On Uart Continue? [y/N] | |
| Write Line To Uart y | |
| Wait For Line On Uart 40: 40 -- | |
| Should Read Temperature From I2C sensor | |
| [Documentation] Reads temperature from I2C sensor in Linux on SiFive Freedom U540 platform. | |
| [Tags] linux uart i2c sensors | |
| Requires booted-linux | |
| Execute Command i2c.si7021 Temperature 36.6 | |
| Write Line To Uart echo "si7020 0x40" > /sys/class/i2c-dev/i2c-0/device/new_device | |
| Wait For Line On Uart Instantiated device si7020 at 0x40 | |
| Write Line To Uart cd /sys/class/i2c-dev/i2c-0/device/0-0040/iio:device0 | |
| # here we read a RAW value from the device | |
| # warning: the driver uses different equation to calculate the actual value than the documentation says, so it will differ from what we set in the peripheral | |
| Write Line To Uart cat in_temp_raw | |
| Wait For Line On Uart 7780 | |
| # there is some bug in PWM implementation or the PWM tester and this tests fails non-deterministically | |
| Should Generate Proper PWM Pulses | |
| [Tags] non_critical | |
| Requires booted-linux | |
| Write Line To Uart echo 5 > /sys/class/leds/netdev/brightness | |
| Execute Command pwm0.pt Reset | |
| Sleep 3 | |
| ${hp}= Execute Command pwm0.pt HighPercentage | |
| ${hpn}= Convert To Number ${hp} | |
| Should Be True ${hpn} < 10 | |
| Should Be True ${hpn} > 0 | |
| Write Line To Uart echo 127 > /sys/class/leds/netdev/brightness | |
| Execute Command pwm0.pt Reset | |
| Sleep 3 | |
| ${hp}= Execute Command pwm0.pt HighPercentage | |
| ${hpn}= Convert To Number ${hp} | |
| Should Be True ${hpn} < 55 | |
| Should Be True ${hpn} > 45 | |
| Write Line To Uart echo 250 > /sys/class/leds/netdev/brightness | |
| Execute Command pwm0.pt Reset | |
| Sleep 3 | |
| ${hp}= Execute Command pwm0.pt HighPercentage | |
| ${hpn}= Convert To Number ${hp} | |
| Should Be True ${hpn} < 100 | |
| Should Be True ${hpn} > 90 | |
| Should Ping Linux | |
| Execute Command emulation CreateSwitch "switch" | |
| Execute Command $name="unleashed-1" | |
| Prepare Machine | |
| Execute Command connector Connect ethernet switch | |
| ${u1}= Create Terminal Tester ${UART} machine=unleashed-1 | |
| Execute Command mach clear | |
| Execute Command $name="unleashed-2" | |
| Prepare Machine | |
| Execute Command connector Connect ethernet switch | |
| ${u2}= Create Terminal Tester ${UART} machine=unleashed-2 | |
| Execute Command mach clear | |
| Start Emulation | |
| Wait For Prompt On Uart buildroot login testerId=${u1} | |
| Write Line To Uart root testerId=${u1} | |
| Wait For Prompt On Uart Password testerId=${u1} | |
| Write Line To Uart root waitForEcho=false testerId=${u1} | |
| Wait For Prompt On Uart buildroot login testerId=${u2} | |
| Write Line To Uart root testerId=${u2} | |
| Wait For Prompt On Uart Password testerId=${u2} | |
| Write Line To Uart root waitForEcho=false testerId=${u2} | |
| Write Line To Uart ifconfig eth0 hw ether 02:01:03:05:04:06 testerId=${u1} | |
| Write Line To Uart ifconfig eth0 192.168.0.1 netmask 255.255.255.0 testerId=${u1} | |
| Write Line To Uart ifconfig eth0 192.168.0.2 netmask 255.255.255.0 testerId=${u2} | |
| Write Line To Uart ping 192.168.0.1 testerId=${u2} | |
| Wait For Line On Uart 64 bytes from 192.168.0.1 testerId=${u2} | |