153 lines
8.0 KiB
Plaintext
153 lines
8.0 KiB
Plaintext
# Based on MCAN.robot
|
|
|
|
*** Variables ***
|
|
${UART} sysbus.usart3
|
|
${CAN} sysbus.utcan
|
|
${CAN_HUB} canHub
|
|
${PROMPT} \#${SPACE}
|
|
${UT32_CAN_REPL} utcan: CAN.UT32_CAN @ sysbus 0x40cccc00
|
|
${UT32_CAN_REPL_WITH_IRQ} SEPARATOR=\n
|
|
... """
|
|
... ${UT32_CAN_REPL}
|
|
... ${SPACE*4}-> nvic@19
|
|
... """
|
|
# All Zephyr tests work in loopback mode
|
|
${TESTS_NET_SOCKET_CAN_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-tests-net-socket-can-ut32_can.elf-s_730196-c52d44ada96c6b31de3a0d158d015b73292b40da
|
|
${TESTS_DRIVERS_CAN_API_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-tests-drivers-can-api-ut32_can.elf-s_1906268-a5504a6579baa2a4ec54631d64c9f21337b91379
|
|
${TESTS_DRIVERS_CAN_TIMING_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-tests-drivers-can-timing-ut32_can.elf-s_1734652-3eb1047cd81cc11f72613746aee01d5278d0bcc8
|
|
${TESTS_DRIVERS_CAN_SHELL_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-tests-drivers-can-shell-ut32_can.elf-s_1510120-b2056800cb2907c73a4bd42b49417e4a09db5b99
|
|
# Zephyr samples can be configured to work in either normal or loopback mode
|
|
${SAMPLES_NET_SOCKETS_CAN_LOOPBACK_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-samples-net-sockets-can--loopback-ut32_can.elf-s_2059904-50e9744c770ea67909a0951ab30650f0c0246f13
|
|
${SAMPLES_NET_SOCKETS_CAN_NO_LOOPBACK_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-samples-net-sockets-can-ut32_can.elf-s_2056976-efbc0327c5433fde0fa166ab3b652602c9c5ae0b
|
|
${SAMPLES_DRIVERS_CAN_COUNTER_LOOPBACK_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-samples-drivers-can-counter--loopback-ut32_can.elf-s_1272296-cfc7a216ae8f087a89e79c211442a80347888017
|
|
${SAMPLES_DRIVERS_CAN_COUNTER_NO_LOOPBACK_BIN} @https://dl.antmicro.com/projects/renode/nucleo_h743zi--zephyr-samples-drivers-can-counter-ut32_can.elf-s_1271844-3366c77a9b0c4c7ca234a445644ae89ef8b73ad7
|
|
|
|
*** Keywords ***
|
|
Create CAN Hub
|
|
Execute Command emulation CreateCANHub "${CAN_HUB}"
|
|
|
|
Create STM32H7 Machine
|
|
[Arguments] ${bin} ${name}=machine-0
|
|
Execute Command $bin=${bin}
|
|
Execute Command mach create "${name}"
|
|
Execute Command machine LoadPlatformDescription @platforms/cpus/stm32h753.repl
|
|
# The Zephyr binaries used here would not work on a real STM32H753 as they expect a UT32-compatible CAN controller
|
|
# to be present at 0x40cccc00. Add it to the platform
|
|
Execute Command machine LoadPlatformDescriptionFromString ${UT32_CAN_REPL_WITH_IRQ}
|
|
Execute Command macro reset "sysbus LoadELF ${bin}"
|
|
Execute Command runMacro $reset
|
|
Execute Command connector Connect ${CAN} ${CAN_HUB}
|
|
Execute Command showAnalyzer ${UART}
|
|
|
|
Set Emulation Parameters For Better Synchronization Between Machines
|
|
Execute Command emulation SetGlobalQuantum "0.000025"
|
|
Execute Command emulation SetGlobalSerialExecution True
|
|
|
|
Assert Command Result Is
|
|
[Arguments] ${command} ${result}
|
|
${x}= Execute Command ${command}
|
|
Should Be Equal ${x} ${result} strip_spaces=True
|
|
|
|
*** Test Cases ***
|
|
Should Pass Zephyr CAN Net Socket Test
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${TESTS_NET_SOCKET_CAN_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
Wait For Line On Uart PROJECT EXECUTION SUCCESSFUL
|
|
|
|
Should Pass Zephyr CAN API Test
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${TESTS_DRIVERS_CAN_API_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
Wait For Line On Uart PROJECT EXECUTION SUCCESSFUL
|
|
|
|
Should Pass Zephyr CAN Timing Test
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${TESTS_DRIVERS_CAN_TIMING_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
Wait For Line On Uart PROJECT EXECUTION SUCCESSFUL
|
|
|
|
Should Pass Zephyr CAN Shell Test
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${TESTS_DRIVERS_CAN_SHELL_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
Wait For Line On Uart PROJECT EXECUTION SUCCESSFUL
|
|
|
|
Should Use CAN Socket API To Exchange Messages In Loopback Mode
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${SAMPLES_NET_SOCKETS_CAN_LOOPBACK_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
# Wait for several successful transmissions
|
|
${cnt}= Set Variable 40
|
|
FOR ${i} IN RANGE 0 ${cnt}
|
|
Wait For Line On Uart net_socket_can_sample: [0] CAN frame: IDE 0x0 RTR 0x0 ID 0x1 DLC 0x8
|
|
Wait For Line On Uart f0 f1 f2 f3 f4 f5 f6 f7
|
|
END
|
|
|
|
Should Use CAN Socket API To Exchange Messages Between Machines
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${SAMPLES_NET_SOCKETS_CAN_NO_LOOPBACK_BIN} machine-0
|
|
${tester-0}= Create Terminal Tester ${UART} machine=machine-0
|
|
|
|
Create STM32H7 Machine ${SAMPLES_NET_SOCKETS_CAN_NO_LOOPBACK_BIN} machine-1
|
|
${tester-1}= Create Terminal Tester ${UART} machine=machine-1
|
|
|
|
Set Emulation Parameters For Better Synchronization Between Machines
|
|
|
|
# Wait for several successful transmissions
|
|
${cnt}= Set Variable 40
|
|
FOR ${i} IN RANGE 0 ${cnt}
|
|
Wait For Line On Uart net_socket_can_sample: [0] CAN frame: IDE 0x0 RTR 0x0 ID 0x1 DLC 0x8 testerId=${tester-0}
|
|
Wait For Line On Uart net_socket_can_sample: [0] CAN frame: IDE 0x0 RTR 0x0 ID 0x1 DLC 0x8 testerId=${tester-1}
|
|
Wait For Line On Uart f0 f1 f2 f3 f4 f5 f6 f7 testerId=${tester-0}
|
|
Wait For Line On Uart f0 f1 f2 f3 f4 f5 f6 f7 testerId=${tester-1}
|
|
END
|
|
|
|
Should Run Zephyr CAN Counter Sample In Loopback Mode
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${SAMPLES_DRIVERS_CAN_COUNTER_LOOPBACK_BIN}
|
|
Create Terminal Tester ${UART}
|
|
|
|
# Wait for several successful transmissions
|
|
${cnt}= Set Variable 40
|
|
FOR ${i} IN RANGE 0 ${cnt}
|
|
Wait For Line On Uart Counter received: ${i}
|
|
END
|
|
|
|
Should Run Zephyr CAN Counter Sample To Exchange Messages Between Machines
|
|
Create CAN Hub
|
|
Create STM32H7 Machine ${SAMPLES_DRIVERS_CAN_COUNTER_NO_LOOPBACK_BIN} machine-0
|
|
${tester-0}= Create Terminal Tester ${UART} machine=machine-0
|
|
|
|
Create STM32H7 Machine ${SAMPLES_DRIVERS_CAN_COUNTER_NO_LOOPBACK_BIN} machine-1
|
|
${tester-1}= Create Terminal Tester ${UART} machine=machine-1
|
|
|
|
Set Emulation Parameters For Better Synchronization Between Machines
|
|
|
|
# Wait for several successful transmissions
|
|
${cnt}= Set Variable 40
|
|
FOR ${i} IN RANGE 0 ${cnt}
|
|
Wait For Line On Uart Counter received: ${i} testerId=${tester-0}
|
|
Wait For Line On Uart Counter received: ${i} testerId=${tester-1}
|
|
END
|
|
|
|
Should Allow Setting A Reset-Mode-Only Bit And Leaving Reset Mode In The Same Write
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescriptionFromString "${UT32_CAN_REPL}"
|
|
|
|
Execute Command utcan WriteByte 0x00 0x00 # leave reset mode
|
|
|
|
Execute Command utcan WriteByte 0x00 0x02 # try to enable listen-only mode
|
|
Assert Command Result Is utcan ReadByte 0x00 0x00 # wasn't allowed so the bit got restored
|
|
|
|
Execute Command utcan WriteByte 0x00 0x03 # enter reset mode and try to enable listen-only mode simultaneously
|
|
Assert Command Result Is utcan ReadByte 0x00 0x01 # only reset mode takes
|
|
|
|
Execute Command utcan WriteByte 0x00 0x02 # request leaving reset mode and enable listen-only mode simultaneously
|
|
Assert Command Result Is utcan ReadByte 0x00 0x02 # listen-only mode is set, reset is unset
|