test_hardware.yml 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. name: Hardware Test
  2. on:
  3. push:
  4. paths:
  5. - 'src/**'
  6. - 'examples/**'
  7. - 'lib/**'
  8. - 'hw/**'
  9. pull_request:
  10. branches: [ master ]
  11. paths:
  12. - 'src/**'
  13. - 'examples/**'
  14. - 'lib/**'
  15. - 'hw/**'
  16. # Hardware in the loop (HIL)
  17. # Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user
  18. # - STM32L412 Nucleo with on-board jlink as ttyACM0
  19. jobs:
  20. stm32l412nucleo-test:
  21. runs-on: [self-hosted, Linux, X64, hifiphile]
  22. steps:
  23. - name: Clean workspace
  24. run: |
  25. echo "Cleaning up previous run"
  26. rm -rf "${{ github.workspace }}"
  27. mkdir -p "${{ github.workspace }}"
  28. - name: Checkout TinyUSB
  29. uses: actions/checkout@v3
  30. - name: Get Dependencies and Build
  31. run: |
  32. git submodule update --init lib/FreeRTOS-Kernel lib/lwip
  33. python3 tools/get_dependencies.py stm32l4
  34. python3 tools/build_family.py stm32l4
  35. - name: Pick-up elf files
  36. run: |
  37. mkdir stm32l412nucleo/
  38. find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} stm32l412nucleo/ \;
  39. - name: Create flash.sh
  40. run: |
  41. echo > flash.sh 'echo halt > flash.jlink'
  42. echo >> flash.sh 'echo r >> flash.jlink'
  43. echo >> flash.sh 'echo loadfile stm32l412nucleo/$1 >> flash.jlink'
  44. echo >> flash.sh 'echo r >> flash.jlink'
  45. echo >> flash.sh 'echo go >> flash.jlink'
  46. echo >> flash.sh 'echo exit >> flash.jlink'
  47. echo >> flash.sh 'cmdout=$(JLinkExe -device stm32l412kb -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink)'
  48. echo >> flash.sh 'if (( $? )) ; then echo $cmdout ; fi'
  49. chmod +x flash.sh
  50. - name: Test cdc_dual_ports
  51. run: |
  52. ./flash.sh cdc_dual_ports.elf
  53. while (! ([ -e /dev/ttyACM1 ] && [ -e /dev/ttyACM2 ])) && [ $SECONDS -le 5 ]; do :; done
  54. test -e /dev/ttyACM1 && echo "ttyACM1 exists"
  55. test -e /dev/ttyACM2 && echo "ttyACM2 exists"
  56. # Debian does not auto mount usb drive. skip this test for now
  57. - name: Test cdc_msc
  58. if: false
  59. run: |
  60. ./flash.sh cdc_msc.elf
  61. readme='/media/pi/TinyUSB MSC/README.TXT'
  62. while (! ([ -e /dev/ttyACM1 ] && [ -f "$readme" ])) && [ $SECONDS -le 5 ]; do :; done
  63. test -e /dev/ttyACM1 && echo "ttyACM1 exists"
  64. test -f "$readme" && echo "$readme exists"
  65. cat "$readme"
  66. - name: Test dfu
  67. run: |
  68. ./flash.sh dfu.elf
  69. while (! (dfu-util -l | grep "Found DFU")) && [ $SECONDS -le 5 ]; do :; done
  70. dfu-util -d cafe -a 0 -U dfu0
  71. dfu-util -d cafe -a 1 -U dfu1
  72. grep "TinyUSB DFU! - Partition 0" dfu0
  73. grep "TinyUSB DFU! - Partition 1" dfu1
  74. - name: Test dfu_runtime
  75. run: |
  76. ./flash.sh dfu_runtime.elf
  77. while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done
  78. # - name: Test hid_boot_interface
  79. # run: |
  80. # ./flash.sh hid_boot_interface.elf
  81. # while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done