blob: 8beeaf915d1cbf8a00eb854b9557d578c8bbb194 [file] [log] [blame]
*** 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}