summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2023-02-01 20:10:01 +0700
committerGitHub <[email protected]>2023-02-01 20:10:01 +0700
commit4c03a9f85573c58d4c1415ab203278451ad568e8 (patch)
tree849088df9fe1819cc8ca833849a0f58090137677
parentd6354a2aa76ba1e991248faadc53734edce6eeae (diff)
parent172770221732030f14d5d3311d25509cbd7117f9 (diff)
Merge pull request #1880 from hathach/reduce-selfed-host-iar
Bundle mulitple familes for self-hosted iar to reduce build time
-rw-r--r--.github/workflows/build_aarch64.yml2
-rw-r--r--.github/workflows/build_arm.yml89
-rw-r--r--.github/workflows/build_esp.yml2
-rw-r--r--.github/workflows/build_iar.yml22
-rw-r--r--.github/workflows/build_msp430.yml2
-rw-r--r--.github/workflows/build_renesas.yml2
-rw-r--r--.github/workflows/build_riscv.yml2
-rw-r--r--.github/workflows/test_hardware.yml94
8 files changed, 101 insertions, 114 deletions
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 c16fc0d45..29c41a8eb 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 stm32l412nucleo Artifacts
+ if: matrix.family == 'stm32l4'
+ run: find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} . \;
+
+ - name: Upload stm32l412nucleo Artifacts
+ if: matrix.family == 'stm32l4'
+ uses: actions/upload-artifact@v3
+ with:
+ name: stm32l412nucleo
+ 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: 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 $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_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 9c1bfa18a..33e77c3dc 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 }}
@@ -27,13 +29,9 @@ jobs:
matrix:
family:
# Alphabetical order
- - 'stm32f0'
- - 'stm32f1'
- - 'stm32f4'
- - 'stm32f7'
- - 'stm32g4'
- - 'stm32h7'
- - 'stm32l4'
+ # 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
run: |
@@ -49,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
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 601a97e99..000000000
--- a/.github/workflows/test_hardware.yml
+++ /dev/null
@@ -1,94 +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:
- 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