From 6ec0537408e95ada3ee85eac5d502bd3d7d20d23 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 1 Feb 2023 15:14:35 +0700 Subject: [PATCH] move hw-stm32l412nucleo-test into build-arm to reduce self-host compile time reduce IAR build to only f0, h7, l4 --- .github/workflows/build_arm.yml | 89 ++++++++++++++++++++++++++--- .github/workflows/build_iar.yml | 9 +-- .github/workflows/test_hardware.yml | 1 + 3 files changed, 87 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index c16fc0d45..cba9b6d99 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_arm.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_arm.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -98,13 +100,12 @@ jobs: find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' done - # Following steps are for Hardware Test with self-hosted - - - name: Prepare Artifacts + # Upload binaries for rp2040 hardware test with self-hosted + - name: Prepare rp2040 Artifacts if: matrix.family == 'rp2040' && github.repository_owner == 'hathach' run: find examples/ -name "*.elf" -exec mv {} . \; - - name: Upload Artifacts for Hardware Test + - name: Upload rp2040 Artifacts if: matrix.family == 'rp2040' && github.repository_owner == 'hathach' uses: actions/upload-artifact@v3 with: @@ -112,6 +113,19 @@ jobs: path: | *.elf + # Upload binaries for stm32l412nucleo hardware test with self-hosted + - name: Prepare stm32l4 Artifacts + if: matrix.family == 'stm32l4' + run: find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} . \; + + - name: Upload stm32l4 Artifacts + if: matrix.family == 'stm32l4' + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.family }} + path: | + *.elf + # --------------------------------------- # Build all no-family (orphaned) boards # disable this workflow since it is often failed randomly @@ -210,8 +224,67 @@ jobs: ./flash.sh dfu_runtime.elf while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done -# - name: Test hid_boot_interface -# run: | -# ./flash.sh hid_boot_interface.elf -# while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done + # --------------------------------------- + # Hardware in the loop (HIL) + # Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user + # - STM32L412 Nucleo with on-board jlink as ttyACM0 + # --------------------------------------- + hw-stm32l412nucleo-test: + needs: build-arm + runs-on: [self-hosted, Linux, X64, hifiphile] + steps: + - name: Clean workspace + run: | + echo "Cleaning up previous run" + rm -rf "${{ github.workspace }}" + mkdir -p "${{ github.workspace }}" + + - name: Download stm32l4 Artifacts + uses: actions/download-artifact@v3 + with: + name: stm32l4 + + - name: Create flash.sh + run: | + echo > flash.sh 'echo halt > flash.jlink' + echo >> flash.sh 'echo r >> flash.jlink' + echo >> flash.sh 'echo loadfile $1 >> flash.jlink' + echo >> flash.sh 'echo r >> flash.jlink' + echo >> flash.sh 'echo go >> flash.jlink' + echo >> flash.sh 'echo exit >> flash.jlink' + echo >> flash.sh 'cmdout=$(JLinkExe -device stm32l412kb -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink)' + echo >> flash.sh 'if (( $? )) ; then echo $cmdout ; fi' + chmod +x flash.sh + + - name: Test cdc_dual_ports + run: | + ./flash.sh cdc_dual_ports.elf + while (! ([ -e /dev/ttyACM1 ] && [ -e /dev/ttyACM2 ])) && [ $SECONDS -le 5 ]; do :; done + test -e /dev/ttyACM1 && echo "ttyACM1 exists" + test -e /dev/ttyACM2 && echo "ttyACM2 exists" + + # Debian does not auto mount usb drive. skip this test for now + - name: Test cdc_msc + if: false + run: | + ./flash.sh cdc_msc.elf + readme='/media/pi/TinyUSB MSC/README.TXT' + while (! ([ -e /dev/ttyACM1 ] && [ -f "$readme" ])) && [ $SECONDS -le 5 ]; do :; done + test -e /dev/ttyACM1 && echo "ttyACM1 exists" + test -f "$readme" && echo "$readme exists" + cat "$readme" + + - name: Test dfu + run: | + ./flash.sh dfu.elf + while (! (dfu-util -l | grep "Found DFU")) && [ $SECONDS -le 5 ]; do :; done + dfu-util -d cafe -a 0 -U dfu0 + dfu-util -d cafe -a 1 -U dfu1 + grep "TinyUSB DFU! - Partition 0" dfu0 + grep "TinyUSB DFU! - Partition 1" dfu1 + + - name: Test dfu_runtime + run: | + ./flash.sh dfu_runtime.elf + while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index 9c1bfa18a..85183751b 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -27,11 +27,12 @@ jobs: matrix: family: # Alphabetical order + # Due to long build time, we only enable build with different usb controller - 'stm32f0' - - 'stm32f1' - - 'stm32f4' - - 'stm32f7' - - 'stm32g4' + #- 'stm32f1' + #- 'stm32f4' + #- 'stm32f7' + #- 'stm32g4' - 'stm32h7' - 'stm32l4' steps: diff --git a/.github/workflows/test_hardware.yml b/.github/workflows/test_hardware.yml index 601a97e99..ca626926d 100644 --- a/.github/workflows/test_hardware.yml +++ b/.github/workflows/test_hardware.yml @@ -21,6 +21,7 @@ on: jobs: stm32l412nucleo-test: + if: false runs-on: [self-hosted, Linux, X64, hifiphile] steps: