From 6ec0537408e95ada3ee85eac5d502bd3d7d20d23 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 1 Feb 2023 15:14:35 +0700 Subject: 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: -- cgit v1.3.1 From 3846da69d38c824fc9609f60380b864d4376b70e Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 1 Feb 2023 16:36:39 +0700 Subject: run workflow if its yml is updated --- .github/workflows/build_aarch64.yml | 2 + .github/workflows/build_arm.yml | 8 ++-- .github/workflows/build_esp.yml | 2 + .github/workflows/build_iar.yml | 2 + .github/workflows/build_msp430.yml | 2 + .github/workflows/build_renesas.yml | 2 + .github/workflows/build_riscv.yml | 2 + .github/workflows/test_hardware.yml | 95 ------------------------------------- 8 files changed, 16 insertions(+), 99 deletions(-) delete mode 100644 .github/workflows/test_hardware.yml diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index c552a9574..800a54380 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_aarch64.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_aarch64.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index cba9b6d99..29c41a8eb 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -114,15 +114,15 @@ jobs: *.elf # Upload binaries for stm32l412nucleo hardware test with self-hosted - - name: Prepare stm32l4 Artifacts + - name: Prepare stm32l412nucleo Artifacts if: matrix.family == 'stm32l4' run: find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} . \; - - name: Upload stm32l4 Artifacts + - name: Upload stm32l412nucleo Artifacts if: matrix.family == 'stm32l4' uses: actions/upload-artifact@v3 with: - name: ${{ matrix.family }} + name: stm32l412nucleo path: | *.elf @@ -243,7 +243,7 @@ jobs: - name: Download stm32l4 Artifacts uses: actions/download-artifact@v3 with: - name: stm32l4 + name: stm32l412nucleo - name: Create flash.sh run: | diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 2e2859c95..dbc51a60f 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_esp.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_esp.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index 85183751b..c644bdc51 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_iar.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_iar.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 7e1c5b128..2c7785806 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_msp430.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_msp430.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index d9254dea8..3a961d327 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_renesas.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_renesas.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index 66f4fd153..fb4d4d28c 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -7,6 +7,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_riscv.yml' pull_request: branches: [ master ] paths: @@ -14,6 +15,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - '.github/workflows/build_riscv.yml' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/test_hardware.yml b/.github/workflows/test_hardware.yml deleted file mode 100644 index ca626926d..000000000 --- a/.github/workflows/test_hardware.yml +++ /dev/null @@ -1,95 +0,0 @@ -name: Hardware Test - -on: - push: - paths: - - 'src/**' - - 'examples/**' - - 'lib/**' - - 'hw/**' - pull_request: - branches: [ master ] - paths: - - 'src/**' - - 'examples/**' - - 'lib/**' - - 'hw/**' - -# 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 - -jobs: - stm32l412nucleo-test: - if: false - 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: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Get Dependencies and Build - run: | - git submodule update --init lib/FreeRTOS-Kernel lib/lwip - python3 tools/get_dependencies.py stm32l4 - python3 tools/build_family.py stm32l4 - - - name: Pick-up elf files - run: | - mkdir stm32l412nucleo/ - find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} stm32l412nucleo/ \; - - - name: Create flash.sh - run: | - echo > flash.sh 'echo halt > flash.jlink' - echo >> flash.sh 'echo r >> flash.jlink' - echo >> flash.sh 'echo loadfile stm32l412nucleo/$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 - -# - name: Test hid_boot_interface -# run: | -# ./flash.sh hid_boot_interface.elf -# while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 5 ]; do :; done -- cgit v1.3.1 From 647fd030ffe698409f20ebf28f6eea1ba7604348 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 1 Feb 2023 18:45:50 +0700 Subject: merge multiple matrix with IAR build --- .github/workflows/build_iar.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index c644bdc51..c7824d5a2 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -29,14 +29,7 @@ jobs: matrix: family: # Alphabetical order - # Due to long build time, we only enable build with different usb controller - - 'stm32f0' - #- 'stm32f1' - #- 'stm32f4' - #- 'stm32f7' - #- 'stm32g4' - - 'stm32h7' - - 'stm32l4' + - 'stm32f0 stm32f1 stm32f4 stm32f7 stm32g4 stm32h7 stm32l4' steps: - name: Clean workspace run: | -- cgit v1.3.1 From 172770221732030f14d5d3311d25509cbd7117f9 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 1 Feb 2023 19:29:37 +0700 Subject: add note for iar workflow --- .github/workflows/build_iar.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index c7824d5a2..33e77c3dc 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -29,6 +29,8 @@ jobs: matrix: family: # Alphabetical order + # Note: bundle multiple families into a matrix since there is only one self-hosted instance can + # run IAR build. Too many matrix can hurt due to setup/teardown overhead. - 'stm32f0 stm32f1 stm32f4 stm32f7 stm32g4 stm32h7 stm32l4' steps: - name: Clean workspace @@ -45,11 +47,11 @@ jobs: git submodule update --init lib/FreeRTOS-Kernel lib/lwip lib/sct_neopixel python3 tools/get_dependencies.py ${{ matrix.family }} - - name: Checkout pico-sdk for rp2040 - if: matrix.family == 'rp2040' - run: | - git clone --depth 1 -b develop https://github.com/raspberrypi/pico-sdk ~/pico-sdk - echo >> $GITHUB_ENV PICO_SDK_PATH=~/pico-sdk + #- name: Checkout pico-sdk for rp2040 + # if: matrix.family == 'rp2040' + # run: | + # git clone --depth 1 -b develop https://github.com/raspberrypi/pico-sdk ~/pico-sdk + # echo >> $GITHUB_ENV PICO_SDK_PATH=~/pico-sdk - name: Build run: python3 tools/build_family.py ${{ matrix.family }} CC=iccarm -- cgit v1.3.1