From b92015544490ed6fd8891db59c4cb88365f0f137 Mon Sep 17 00:00:00 2001 From: hathach Date: Sun, 6 Nov 2022 14:56:05 +0700 Subject: minor clean up --- .github/workflows/build_esp.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 6a46773b2..417887172 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -43,7 +43,8 @@ jobs: - name: Linker Map run: | pip install linkermap/ - for ex in `ls -d examples/device/*/`; do \ - find ${ex} -maxdepth 3 -name *.map -print -quit | \ - xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'; \ + # find -quit to only print linkermap of 1 board per example + for ex in `ls -d examples/device/*/` + do + find ${ex} -maxdepth 3 -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' done -- cgit v1.3.1 From fee90f353f426d6fafe323534ad7d91918d4b98d Mon Sep 17 00:00:00 2001 From: hathach Date: Sun, 6 Nov 2022 15:17:00 +0700 Subject: bump up setup python action to v4 --- .github/workflows/build_aarch64.yml | 2 +- .github/workflows/build_arm.yml | 2 +- .github/workflows/build_esp.yml | 2 +- .github/workflows/build_msp430.yml | 2 +- .github/workflows/build_renesas.yml | 2 +- .github/workflows/build_riscv.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index b4ea8a0eb..d610d6eff 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -21,7 +21,7 @@ jobs: - 'broadcom_64bit' steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 56804da8a..4d27ba729 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -65,7 +65,7 @@ jobs: - 'xmc4000' steps: - name: Setup Python - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 - name: Install ARM GCC uses: carlosperate/arm-none-eabi-gcc-action@v1 diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 417887172..162226cc5 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Pull ESP-IDF docker run: docker pull espressif/idf:latest diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 731febb03..b43d9e740 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -18,7 +18,7 @@ jobs: - 'msp430' steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index 4de42f935..c8920c7f7 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -18,7 +18,7 @@ jobs: - 'rx' steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index 9362da893..a0e09190b 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -19,7 +19,7 @@ jobs: - 'gd32vf103' steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Checkout TinyUSB uses: actions/checkout@v3 -- cgit v1.3.1 From ca4ae61c1ce79f36e540fa4848b9e575a21e71d3 Mon Sep 17 00:00:00 2001 From: hathach Date: Sun, 6 Nov 2022 22:06:22 +0700 Subject: use gh cli instead of action for workflow dispatch --- .github/workflows/build_aarch64.yml | 2 ++ .github/workflows/build_arm.yml | 9 +++++---- .github/workflows/build_esp.yml | 2 ++ .github/workflows/build_renesas.yml | 2 ++ .github/workflows/build_riscv.yml | 2 ++ 5 files changed, 13 insertions(+), 4 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index d610d6eff..18989a5e9 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -22,6 +22,8 @@ jobs: steps: - name: Setup Python uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 4d27ba729..12853b72b 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -66,6 +66,8 @@ jobs: steps: - name: Setup Python uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Install ARM GCC uses: carlosperate/arm-none-eabi-gcc-action@v1 @@ -121,10 +123,9 @@ jobs: - name: Trigger Hardware Test if: matrix.family == 'rp2040' && github.repository_owner == 'hathach' - uses: benc-uk/workflow-dispatch@v1 - with: - workflow: Hardware Test - token: ${{ secrets.TRIGGER_SELF_HOSTED }} + env: + GH_TOKEN: ${{ secrets.API_TOKEN_GITHUB }} + run: gh workflow run test_hardware.yml -r $GITHUB_REF # --------------------------------------- # Build all no-family (orphaned) boards diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 162226cc5..51d91de49 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -24,6 +24,8 @@ jobs: steps: - name: Setup Python uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Pull ESP-IDF docker run: docker pull espressif/idf:latest diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index c8920c7f7..d212708f7 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -19,6 +19,8 @@ jobs: steps: - name: Setup Python uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index a0e09190b..96b8c676b 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -20,6 +20,8 @@ jobs: steps: - name: Setup Python uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Checkout TinyUSB uses: actions/checkout@v3 -- cgit v1.3.1 From b37870c964e9fafe8cdd4ff6e48fa072ca59858b Mon Sep 17 00:00:00 2001 From: hathach Date: Sun, 4 Dec 2022 21:08:47 +0700 Subject: test exclude-file.txt, add action concurrency --- .codespell/exclude-file.txt | 2 +- .codespellrc | 2 +- .github/workflows/build_aarch64.yml | 4 ++++ .github/workflows/build_arm.yml | 21 --------------------- .github/workflows/build_esp.yml | 4 ++++ .github/workflows/build_msp430.yml | 4 ++++ .github/workflows/build_renesas.yml | 4 ++++ .github/workflows/build_riscv.yml | 4 ++++ .github/workflows/pre-commit.yml | 16 ++++++++++++++-- 9 files changed, 36 insertions(+), 25 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.codespell/exclude-file.txt b/.codespell/exclude-file.txt index 8b1378917..af8265cc7 100644 --- a/.codespell/exclude-file.txt +++ b/.codespell/exclude-file.txt @@ -1 +1 @@ - + return USB0.INTSTS1.BIT.ATTCH ? true : false; diff --git a/.codespellrc b/.codespellrc index 0e1bc1483..19a877e2a 100644 --- a/.codespellrc +++ b/.codespellrc @@ -5,4 +5,4 @@ ignore-words-list = synopsys, sie, tre, hsi, fro, dout, mot, te check-filenames = check-hidden = skip = .cproject,./.git,./hw/mcu,./lib,./examples/*/*/_build,./examples/*/*/ses,./examples/*/*/ozone,./hw/mcu,./test/vendor,./tests_obsolete -exclude-file = .codespell/exclude-file.txt +exclude-file = ./.codespell/exclude-file.txt diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index af26f33f2..49973fe41 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -7,6 +7,10 @@ on: types: - created +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: # --------------------------------------- # Build AARCH64 family diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 0dab46d0f..56200465b 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -12,27 +12,6 @@ concurrency: cancel-in-progress: true jobs: - # --------------------------------------- - # Unit testing with Ceedling - # --------------------------------------- - unit-test: - runs-on: ubuntu-latest - steps: - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '2.7' - - - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Unit Tests - run: | - # Install Ceedling - gem install ceedling - cd test - ceedling test:all - # --------------------------------------- # Build ARM family # --------------------------------------- diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 51d91de49..d775e50b6 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -7,6 +7,10 @@ on: types: - created +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: build-esp: runs-on: ubuntu-latest diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 1ef25a6a0..d28341e5b 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -7,6 +7,10 @@ on: types: - created +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: build-msp430: runs-on: ubuntu-latest diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index 2e272c832..6cb873dd8 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -7,6 +7,10 @@ on: types: - created +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: build-rx: runs-on: ubuntu-latest diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index 61c1c60c5..18e952d92 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -7,6 +7,10 @@ on: types: - created +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: build-riscv: runs-on: ubuntu-latest diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 7baf66e72..2463903f8 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -17,8 +17,20 @@ jobs: with: python-version: '3.x' + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7' + - name: Checkout TinyUSB uses: actions/checkout@v3 - - name: Check Code Spelling - uses: codespell-project/actions-codespell@master \ No newline at end of file + - name: Run codespell + uses: codespell-project/actions-codespell@master + + - name: Run Unit Tests + run: | + # Install Ceedling + gem install ceedling + cd test + ceedling test:all \ No newline at end of file -- cgit v1.3.1 From 91d5fa5639a2330793b8e8828c4077911cdd2acd Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 8 Dec 2022 09:44:26 +0700 Subject: add paths to all workflows --- .github/workflows/build_aarch64.yml | 16 ++++++++++++---- .github/workflows/build_arm.yml | 5 +++++ .github/workflows/build_esp.yml | 16 ++++++++++++---- .github/workflows/build_msp430.yml | 16 ++++++++++++---- .github/workflows/build_renesas.yml | 16 ++++++++++++---- .github/workflows/build_riscv.yml | 16 ++++++++++++---- .github/workflows/pre-commit.yml | 2 +- .github/workflows/test_hardware.yml | 17 +++++++++++++---- 8 files changed, 79 insertions(+), 25 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index 49973fe41..ccfca6316 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -1,11 +1,19 @@ name: Build AArch64 on: - pull_request: push: - release: - types: - - created + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' + pull_request: + branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' 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 56ba88669..d1b94c47b 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -9,6 +9,11 @@ on: - 'hw' pull_request: branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index d775e50b6..7f2c292fa 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -1,11 +1,19 @@ name: Build ESP on: - pull_request: push: - release: - types: - - created + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' + pull_request: + branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' 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 d28341e5b..f41344e30 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -1,11 +1,19 @@ name: Build MSP430 on: - pull_request: push: - release: - types: - - created + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' + pull_request: + branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' 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 6cb873dd8..d6550ed6d 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -1,11 +1,19 @@ name: Build Renesas on: - pull_request: push: - release: - types: - - created + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' + pull_request: + branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' 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 18e952d92..257050a53 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -1,11 +1,19 @@ name: Build RISC-V on: - pull_request: push: - release: - types: - - created + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' + pull_request: + branches: [ master ] + paths: + - 'src' + - 'examples' + - 'lib' + - 'hw' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 2463903f8..c0261ec66 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '2.7' + ruby-version: '3.0' - name: Checkout TinyUSB uses: actions/checkout@v3 diff --git a/.github/workflows/test_hardware.yml b/.github/workflows/test_hardware.yml index 3ef1fdc56..622b079da 100644 --- a/.github/workflows/test_hardware.yml +++ b/.github/workflows/test_hardware.yml @@ -1,10 +1,19 @@ name: Hardware Test + on: - pull_request: push: - release: - types: - - created + 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 -- cgit v1.3.1 From d0758d0733019debc7a61bf554d14b9a1f16c0cb Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 8 Dec 2022 11:47:01 +0700 Subject: correct ci paths filter --- .github/workflows/build_aarch64.yml | 16 ++++++++-------- .github/workflows/build_arm.yml | 16 ++++++++-------- .github/workflows/build_esp.yml | 16 ++++++++-------- .github/workflows/build_msp430.yml | 16 ++++++++-------- .github/workflows/build_renesas.yml | 16 ++++++++-------- .github/workflows/build_riscv.yml | 16 ++++++++-------- .github/workflows/test_hardware.yml | 16 ++++++++-------- 7 files changed, 56 insertions(+), 56 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index ccfca6316..c552a9574 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -3,17 +3,17 @@ name: Build AArch64 on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' 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 d1b94c47b..c16fc0d45 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -3,17 +3,17 @@ name: Build ARM on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 7f2c292fa..df4d3d1f5 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -3,17 +3,17 @@ name: Build ESP on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' 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 f41344e30..7e1c5b128 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -3,17 +3,17 @@ name: Build MSP430 on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' 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 d6550ed6d..d9254dea8 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -3,17 +3,17 @@ name: Build Renesas on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' 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 257050a53..026da7bdc 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -3,17 +3,17 @@ name: Build RISC-V on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/test_hardware.yml b/.github/workflows/test_hardware.yml index 622b079da..601a97e99 100644 --- a/.github/workflows/test_hardware.yml +++ b/.github/workflows/test_hardware.yml @@ -3,17 +3,17 @@ name: Hardware Test on: push: paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' pull_request: branches: [ master ] paths: - - 'src' - - 'examples' - - 'lib' - - 'hw' + - 'src/**' + - 'examples/**' + - 'lib/**' + - 'hw/**' # Hardware in the loop (HIL) # Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user -- cgit v1.3.1 From c19bffb1d91dd7dad3365fce938b6d6687d4e5b0 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 8 Dec 2022 11:48:53 +0700 Subject: clean up --- .github/workflows/build_esp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index df4d3d1f5..2e2859c95 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -6,7 +6,7 @@ on: - 'src/**' - 'examples/**' - 'lib/**' - - 'hw/**' + - 'hw/**' pull_request: branches: [ master ] paths: -- 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 (limited to '.github/workflows/build_esp.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 5ef260d5fceeef49c8d1eb08fe39a12712b1ae53 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 3 Apr 2023 17:44:05 +0700 Subject: fix build for esp32 --- .github/workflows/build_esp.yml | 2 +- examples/CMakeLists.txt | 1 + .../boards/adafruit_feather_esp32s2/board.cmake | 1 - .../boards/adafruit_magtag_29gray/board.cmake | 1 - .../boards/adafruit_metro_esp32s2/board.cmake | 1 - .../espressif/boards/espressif_addax_1/board.cmake | 1 - .../boards/espressif_kaluga_1/board.cmake | 1 - .../boards/espressif_s3_devkitc/board.cmake | 1 - .../boards/espressif_s3_devkitm/board.cmake | 1 - .../espressif/boards/espressif_saola_1/board.cmake | 1 - hw/bsp/espressif/family.cmake | 6 ++ tools/build_esp32.py | 98 ++++++++++++++++++++++ tools/build_esp32sx.py | 98 ---------------------- tools/build_utils.py | 7 ++ 14 files changed, 113 insertions(+), 107 deletions(-) create mode 100644 tools/build_esp32.py delete mode 100644 tools/build_esp32sx.py (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index dbc51a60f..0a6815ea2 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -54,7 +54,7 @@ jobs: path: linkermap - name: Build - run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }} + run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} - name: Linker Map run: | diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 8f5626fa9..d91d8ca62 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.5) +#set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(${CMAKE_CURRENT_SOURCE_DIR}/../hw/bsp/family_support.cmake) project(tinyusb_examples) diff --git a/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.cmake b/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.cmake index fcd2f6e9f..abbdf7abc 100644 --- a/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.cmake +++ b/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s2") -set(FAMILY_MCUS ESP32S2) diff --git a/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.cmake b/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.cmake index fcd2f6e9f..abbdf7abc 100644 --- a/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.cmake +++ b/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s2") -set(FAMILY_MCUS ESP32S2) diff --git a/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.cmake b/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.cmake index fcd2f6e9f..abbdf7abc 100644 --- a/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.cmake +++ b/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s2") -set(FAMILY_MCUS ESP32S2) diff --git a/hw/bsp/espressif/boards/espressif_addax_1/board.cmake b/hw/bsp/espressif/boards/espressif_addax_1/board.cmake index bc528e9fa..9bac46d64 100644 --- a/hw/bsp/espressif/boards/espressif_addax_1/board.cmake +++ b/hw/bsp/espressif/boards/espressif_addax_1/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s3") -set(FAMILY_MCUS ESP32S3) diff --git a/hw/bsp/espressif/boards/espressif_kaluga_1/board.cmake b/hw/bsp/espressif/boards/espressif_kaluga_1/board.cmake index fcd2f6e9f..abbdf7abc 100644 --- a/hw/bsp/espressif/boards/espressif_kaluga_1/board.cmake +++ b/hw/bsp/espressif/boards/espressif_kaluga_1/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s2") -set(FAMILY_MCUS ESP32S2) diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.cmake b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.cmake index bc528e9fa..9bac46d64 100644 --- a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.cmake +++ b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s3") -set(FAMILY_MCUS ESP32S3) diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.cmake b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.cmake index bc528e9fa..9bac46d64 100644 --- a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.cmake +++ b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s3") -set(FAMILY_MCUS ESP32S3) diff --git a/hw/bsp/espressif/boards/espressif_saola_1/board.cmake b/hw/bsp/espressif/boards/espressif_saola_1/board.cmake index fcd2f6e9f..abbdf7abc 100644 --- a/hw/bsp/espressif/boards/espressif_saola_1/board.cmake +++ b/hw/bsp/espressif/boards/espressif_saola_1/board.cmake @@ -1,3 +1,2 @@ # Apply board specific content here set(IDF_TARGET "esp32s2") -set(FAMILY_MCUS ESP32S2) diff --git a/hw/bsp/espressif/family.cmake b/hw/bsp/espressif/family.cmake index 954dc635b..92a9bcb04 100644 --- a/hw/bsp/espressif/family.cmake +++ b/hw/bsp/espressif/family.cmake @@ -3,6 +3,12 @@ cmake_minimum_required(VERSION 3.5) # Apply board specific content i.e IDF_TARGET must be set before project.cmake is included include("${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake") +if(IDF_TARGET STREQUAL "esp32s2") + set(FAMILY_MCUS ESP32S2) +elseif(IDF_TARGET STREQUAL "esp32s3") + set(FAMILY_MCUS ESP32S3) +endif() + # Add example src and bsp directories set(EXTRA_COMPONENT_DIRS "src" "${CMAKE_CURRENT_LIST_DIR}/boards" "${CMAKE_CURRENT_LIST_DIR}/components") diff --git a/tools/build_esp32.py b/tools/build_esp32.py new file mode 100644 index 000000000..00783bf58 --- /dev/null +++ b/tools/build_esp32.py @@ -0,0 +1,98 @@ +import os +import glob +import sys +import subprocess +import time + +import build_utils + +SUCCEEDED = "\033[32msucceeded\033[0m" +FAILED = "\033[31mfailed\033[0m" +SKIPPED = "\033[33mskipped\033[0m" + +success_count = 0 +fail_count = 0 +skip_count = 0 +exit_status = 0 + +total_time = time.monotonic() + +build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |' +build_separator = '-' * 100 + +def filter_with_input(mylist): + if len(sys.argv) > 1: + input_args = list(set(mylist).intersection(sys.argv)) + if len(input_args) > 0: + mylist[:] = input_args + +# Build all examples if not specified +all_examples = [] +for entry in os.scandir("examples/device"): + # Only includes example with CMakeLists.txt for esp32s, and skip board_test to speed up ci + if entry.is_dir() and os.path.exists(entry.path + "/sdkconfig.defaults") and entry.name != 'board_test': + all_examples.append(entry.name) +filter_with_input(all_examples) +all_examples.sort() + +# Build all boards if not specified +all_boards = [] +for entry in os.scandir("hw/bsp/espressif/boards"): + if entry.is_dir(): + all_boards.append(entry.name) +filter_with_input(all_boards) +all_boards.sort() + +def build_board(example, board): + global success_count, fail_count, skip_count, exit_status + start_time = time.monotonic() + flash_size = "-" + sram_size = "-" + + # Check if board is skipped + if build_utils.skip_example(example, board): + success = SKIPPED + skip_count += 1 + print(build_format.format(example, board, success, '-', flash_size, sram_size)) + else: + subprocess.run("make -C examples/device/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + build_result = subprocess.run("make -j -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + + if build_result.returncode == 0: + success = SUCCEEDED + success_count += 1 + (flash_size, sram_size) = build_size(example, board) + else: + exit_status = build_result.returncode + success = FAILED + fail_count += 1 + + build_duration = time.monotonic() - start_time + print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)) + + if build_result.returncode != 0: + print(build_result.stdout.decode("utf-8")) + +def build_size(example, board): + #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board) + elf_file = 'examples/device/{}/_build/{}/*.elf'.format(example, board) + size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8") + size_list = size_output.split('\n')[1].split('\t') + flash_size = int(size_list[0]) + sram_size = int(size_list[1]) + int(size_list[2]) + return (flash_size, sram_size) + +print(build_separator) +print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM')) +print(build_separator) + +for example in all_examples: + for board in all_boards: + build_board(example, board) + +total_time = time.monotonic() - total_time +print(build_separator) +print("Build Summary: {} {}, {} {}, {} {} and took {:.2f}s".format(success_count, SUCCEEDED, fail_count, FAILED, skip_count, SKIPPED, total_time)) +print(build_separator) + +sys.exit(exit_status) diff --git a/tools/build_esp32sx.py b/tools/build_esp32sx.py deleted file mode 100644 index 00783bf58..000000000 --- a/tools/build_esp32sx.py +++ /dev/null @@ -1,98 +0,0 @@ -import os -import glob -import sys -import subprocess -import time - -import build_utils - -SUCCEEDED = "\033[32msucceeded\033[0m" -FAILED = "\033[31mfailed\033[0m" -SKIPPED = "\033[33mskipped\033[0m" - -success_count = 0 -fail_count = 0 -skip_count = 0 -exit_status = 0 - -total_time = time.monotonic() - -build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |' -build_separator = '-' * 100 - -def filter_with_input(mylist): - if len(sys.argv) > 1: - input_args = list(set(mylist).intersection(sys.argv)) - if len(input_args) > 0: - mylist[:] = input_args - -# Build all examples if not specified -all_examples = [] -for entry in os.scandir("examples/device"): - # Only includes example with CMakeLists.txt for esp32s, and skip board_test to speed up ci - if entry.is_dir() and os.path.exists(entry.path + "/sdkconfig.defaults") and entry.name != 'board_test': - all_examples.append(entry.name) -filter_with_input(all_examples) -all_examples.sort() - -# Build all boards if not specified -all_boards = [] -for entry in os.scandir("hw/bsp/espressif/boards"): - if entry.is_dir(): - all_boards.append(entry.name) -filter_with_input(all_boards) -all_boards.sort() - -def build_board(example, board): - global success_count, fail_count, skip_count, exit_status - start_time = time.monotonic() - flash_size = "-" - sram_size = "-" - - # Check if board is skipped - if build_utils.skip_example(example, board): - success = SKIPPED - skip_count += 1 - print(build_format.format(example, board, success, '-', flash_size, sram_size)) - else: - subprocess.run("make -C examples/device/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - build_result = subprocess.run("make -j -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - - if build_result.returncode == 0: - success = SUCCEEDED - success_count += 1 - (flash_size, sram_size) = build_size(example, board) - else: - exit_status = build_result.returncode - success = FAILED - fail_count += 1 - - build_duration = time.monotonic() - start_time - print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)) - - if build_result.returncode != 0: - print(build_result.stdout.decode("utf-8")) - -def build_size(example, board): - #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board) - elf_file = 'examples/device/{}/_build/{}/*.elf'.format(example, board) - size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8") - size_list = size_output.split('\n')[1].split('\t') - flash_size = int(size_list[0]) - sram_size = int(size_list[1]) + int(size_list[2]) - return (flash_size, sram_size) - -print(build_separator) -print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM')) -print(build_separator) - -for example in all_examples: - for board in all_boards: - build_board(example, board) - -total_time = time.monotonic() - total_time -print(build_separator) -print("Build Summary: {} {}, {} {}, {} {} and took {:.2f}s".format(success_count, SUCCEEDED, fail_count, FAILED, skip_count, SKIPPED, total_time)) -print(build_separator) - -sys.exit(exit_status) diff --git a/tools/build_utils.py b/tools/build_utils.py index 905d06a86..ec850e732 100644 --- a/tools/build_utils.py +++ b/tools/build_utils.py @@ -53,6 +53,13 @@ def skip_example(example, board): token = token.strip("\"") _, opt_mcu = token.split("=") mcu = opt_mcu[len("OPT_MCU_"):] + break + if "esp32s2" in token: + mcu = "ESP32S2" + break + if "esp32s3" in token: + mcu = "ESP32S3" + break # Skip all OPT_MCU_NONE these are WIP port if mcu == "NONE": -- cgit v1.3.1 From 26d05d7fc922f3715799f6049556232d5ed5c8e3 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 25 May 2023 16:53:32 +0700 Subject: fix issue with ftdi host driver with status bytes add workflow_dispatch to all ci workflow --- .github/workflows/build_aarch64.yml | 1 + .github/workflows/build_arm.yml | 1 + .github/workflows/build_esp.yml | 1 + .github/workflows/build_iar.yml | 1 + .github/workflows/build_msp430.yml | 1 + .github/workflows/build_renesas.yml | 1 + .github/workflows/build_riscv.yml | 1 + .github/workflows/build_win_mac.yml | 1 + .github/workflows/cifuzz.yml | 1 + src/class/cdc/cdc_host.c | 36 +++++++++++++++++------------------- src/common/tusb_private.h | 17 +++++++++++------ 11 files changed, 37 insertions(+), 25 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index cc8ddb070..77d3778d7 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -1,6 +1,7 @@ name: Build AArch64 on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 917c83d74..1db9586af 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -1,6 +1,7 @@ name: Build ARM on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 0a6815ea2..29585cb36 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -1,6 +1,7 @@ name: Build ESP on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index a5d24892f..8c3b57e10 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -1,6 +1,7 @@ name: Build IAR on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 7cb60dceb..5424a88d6 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -1,6 +1,7 @@ name: Build MSP430 on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index ffdeedb71..3f0a4b694 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -1,6 +1,7 @@ name: Build Renesas on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index 87c7b522e..8682d655a 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -1,6 +1,7 @@ name: Build RISC-V on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/build_win_mac.yml b/.github/workflows/build_win_mac.yml index 4b743a686..45fc62f78 100644 --- a/.github/workflows/build_win_mac.yml +++ b/.github/workflows/build_win_mac.yml @@ -1,6 +1,7 @@ name: Build Windows/MacOS on: + workflow_dispatch: push: paths: - 'src/**' diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index 7314fd9e6..4c4b12a6b 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -1,5 +1,6 @@ name: CIFuzz on: + workflow_dispatch: pull_request: branches: - master diff --git a/src/class/cdc/cdc_host.c b/src/class/cdc/cdc_host.c index 9ff666ed4..ce9f27c33 100644 --- a/src/class/cdc/cdc_host.c +++ b/src/class/cdc/cdc_host.c @@ -550,8 +550,7 @@ void cdch_close(uint8_t daddr) } } -bool cdch_xfer_cb(uint8_t daddr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes) -{ +bool cdch_xfer_cb(uint8_t daddr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes) { // TODO handle stall response, retry failed transfer ... TU_ASSERT(event == XFER_RESULT_SUCCESS); @@ -559,41 +558,40 @@ bool cdch_xfer_cb(uint8_t daddr, uint8_t ep_addr, xfer_result_t event, uint32_t cdch_interface_t * p_cdc = get_itf(idx); TU_ASSERT(p_cdc); - if ( ep_addr == p_cdc->stream.tx.ep_addr ) - { + if ( ep_addr == p_cdc->stream.tx.ep_addr ) { // invoke tx complete callback to possibly refill tx fifo if (tuh_cdc_tx_complete_cb) tuh_cdc_tx_complete_cb(idx); - if ( 0 == tu_edpt_stream_write_xfer(&p_cdc->stream.tx) ) - { + if ( 0 == tu_edpt_stream_write_xfer(&p_cdc->stream.tx) ) { // If there is no data left, a ZLP should be sent if: // - xferred_bytes is multiple of EP Packet size and not zero tu_edpt_stream_write_zlp_if_needed(&p_cdc->stream.tx, xferred_bytes); } } - else if ( ep_addr == p_cdc->stream.rx.ep_addr ) - { - tu_edpt_stream_read_xfer_complete(&p_cdc->stream.rx, xferred_bytes); - + else if ( ep_addr == p_cdc->stream.rx.ep_addr ) { #if CFG_TUH_CDC_FTDI - // FTDI reserve 2 bytes for status if (p_cdc->serial_drid == SERIAL_DRIVER_FTDI) { - uint8_t status[2]; - tu_edpt_stream_read(&p_cdc->stream.rx, status, 2); - (void) status; // TODO handle status - } + // FTDI reserve 2 bytes for status + // FTDI status +// uint8_t status[2] = { +// p_cdc->stream.rx.ep_buf[0], +// p_cdc->stream.rx.ep_buf[1] +// }; + tu_edpt_stream_read_xfer_complete_offset(&p_cdc->stream.rx, xferred_bytes, 2); + }else #endif + { + tu_edpt_stream_read_xfer_complete(&p_cdc->stream.rx, xferred_bytes); + } // invoke receive callback if (tuh_cdc_rx_cb) tuh_cdc_rx_cb(idx); // prepare for next transfer if needed tu_edpt_stream_read_xfer(&p_cdc->stream.rx); - }else if ( ep_addr == p_cdc->ep_notif ) - { + }else if ( ep_addr == p_cdc->ep_notif ) { // TODO handle notification endpoint - }else - { + }else { TU_ASSERT(false); } diff --git a/src/common/tusb_private.h b/src/common/tusb_private.h index d5541856c..db1ba974d 100644 --- a/src/common/tusb_private.h +++ b/src/common/tusb_private.h @@ -148,21 +148,26 @@ uint32_t tu_edpt_stream_read_xfer(tu_edpt_stream_t* s); // Must be called in the transfer complete callback TU_ATTR_ALWAYS_INLINE static inline -void tu_edpt_stream_read_xfer_complete(tu_edpt_stream_t* s, uint32_t xferred_bytes) -{ +void tu_edpt_stream_read_xfer_complete(tu_edpt_stream_t* s, uint32_t xferred_bytes) { tu_fifo_write_n(&s->ff, s->ep_buf, (uint16_t) xferred_bytes); } +// Same as tu_edpt_stream_read_xfer_complete but skip the first n bytes +TU_ATTR_ALWAYS_INLINE static inline +void tu_edpt_stream_read_xfer_complete_offset(tu_edpt_stream_t* s, uint32_t xferred_bytes, uint32_t skip_offset) { + if (skip_offset < xferred_bytes) { + tu_fifo_write_n(&s->ff, s->ep_buf + skip_offset, (uint16_t) (xferred_bytes - skip_offset)); + } +} + // Get the number of bytes available for reading TU_ATTR_ALWAYS_INLINE static inline -uint32_t tu_edpt_stream_read_available(tu_edpt_stream_t* s) -{ +uint32_t tu_edpt_stream_read_available(tu_edpt_stream_t* s) { return (uint32_t) tu_fifo_count(&s->ff); } TU_ATTR_ALWAYS_INLINE static inline -bool tu_edpt_stream_peek(tu_edpt_stream_t* s, uint8_t* ch) -{ +bool tu_edpt_stream_peek(tu_edpt_stream_t* s, uint8_t* ch) { return tu_fifo_peek(&s->ff, ch); } -- cgit v1.3.1 From 8348631bf538e2aa0a433ed6e7df9e42bb39bdd5 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 28 Sep 2023 16:15:31 +0700 Subject: improve esp32 ci, build esp32 with -DDMAX3421_HOST=1 for max3421 testing revert change in hcd.h --- .github/workflows/build_esp.yml | 21 +------- .../espressif/boards/espressif_s3_devkitm/board.h | 8 +++ src/host/hcd.h | 3 -- tools/build_esp32.py | 63 ++++++++++++---------- 4 files changed, 45 insertions(+), 50 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 29585cb36..897616f09 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -29,12 +29,10 @@ jobs: fail-fast: false matrix: board: - # Alphabetical order # ESP32-S2 - - 'espressif_saola_1' + - 'espressif_kaluga_1' # ESP32-S3 - #- 'espressif_s3_devkitm' - # S3 compile error with "dangerous relocation: call8: call target out of range: memcpy" + - 'espressif_s3_devkitm' steps: - name: Setup Python @@ -48,20 +46,5 @@ jobs: - name: Checkout TinyUSB uses: actions/checkout@v3 - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap - - name: Build run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} - - - name: Linker Map - run: | - pip install linkermap/ - # find -quit to only print linkermap of 1 board per example - for ex in `ls -d examples/device/*/` - do - find ${ex} -maxdepth 3 -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' - done diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h index fe33b5c43..4b4151e72 100644 --- a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h +++ b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h @@ -36,6 +36,14 @@ #define BUTTON_PIN 0 #define BUTTON_STATE_ACTIVE 0 +// SPI for USB host shield +#define MAX3421_SPI_HOST SPI2_HOST +#define MAX3421_SCK_PIN 36 +#define MAX3421_MOSI_PIN 35 +#define MAX3421_MISO_PIN 37 +#define MAX3421_CS_PIN 15 +#define MAX3421_INTR_PIN 14 + #ifdef __cplusplus } #endif diff --git a/src/host/hcd.h b/src/host/hcd.h index edffb34cb..2bde289df 100644 --- a/src/host/hcd.h +++ b/src/host/hcd.h @@ -133,9 +133,6 @@ bool hcd_init(uint8_t rhport); // Interrupt Handler void hcd_int_handler(uint8_t rhport, bool in_isr); -// Interrupt Hanndler (extended version) -void hcd_int_handler_ext(uint8_t rhport, bool in_isr); - // Enable USB interrupt void hcd_int_enable (uint8_t rhport); diff --git a/tools/build_esp32.py b/tools/build_esp32.py index 00783bf58..1f73d3b22 100644 --- a/tools/build_esp32.py +++ b/tools/build_esp32.py @@ -17,8 +17,8 @@ exit_status = 0 total_time = time.monotonic() -build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |' -build_separator = '-' * 100 +build_format = '| {:30} | {:30} | {:18} | {:7} | {:6} | {:6} |' +build_separator = '-' * 107 def filter_with_input(mylist): if len(sys.argv) > 1: @@ -26,12 +26,9 @@ def filter_with_input(mylist): if len(input_args) > 0: mylist[:] = input_args + # Build all examples if not specified -all_examples = [] -for entry in os.scandir("examples/device"): - # Only includes example with CMakeLists.txt for esp32s, and skip board_test to speed up ci - if entry.is_dir() and os.path.exists(entry.path + "/sdkconfig.defaults") and entry.name != 'board_test': - all_examples.append(entry.name) +all_examples = [entry.replace('examples/', '') for entry in glob.glob("examples/*/*_freertos")] filter_with_input(all_examples) all_examples.sort() @@ -46,32 +43,41 @@ all_boards.sort() def build_board(example, board): global success_count, fail_count, skip_count, exit_status start_time = time.monotonic() + + # Check if board is skipped + build_dir = f"cmake-build/cmake-build-{board}/{example}" + + # Generate and build + r = subprocess.run(f"cmake examples/{example} -B {build_dir} -G \"Ninja\" -DBOARD={board} -DMAX3421_HOST=1", + shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + if r.returncode == 0: + r = subprocess.run(f"cmake --build {build_dir}", shell=True, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + build_duration = time.monotonic() - start_time flash_size = "-" sram_size = "-" - # Check if board is skipped - if build_utils.skip_example(example, board): - success = SKIPPED - skip_count += 1 - print(build_format.format(example, board, success, '-', flash_size, sram_size)) + if r.returncode == 0: + success = SUCCEEDED + success_count += 1 + #(flash_size, sram_size) = build_size(example, board) else: - subprocess.run("make -C examples/device/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - build_result = subprocess.run("make -j -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - - if build_result.returncode == 0: - success = SUCCEEDED - success_count += 1 - (flash_size, sram_size) = build_size(example, board) - else: - exit_status = build_result.returncode - success = FAILED - fail_count += 1 - - build_duration = time.monotonic() - start_time - print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)) + exit_status = r.returncode + success = FAILED + fail_count += 1 + + title = build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size) + if os.getenv('CI'): + # always print build output if in CI + print(f"::group::{title}") + print(r.stdout.decode("utf-8")) + print(f"::endgroup::") + else: + # print build output if failed + print(title) + if r.returncode != 0: + print(r.stdout.decode("utf-8")) - if build_result.returncode != 0: - print(build_result.stdout.decode("utf-8")) def build_size(example, board): #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board) @@ -82,6 +88,7 @@ def build_size(example, board): sram_size = int(size_list[1]) + int(size_list[2]) return (flash_size, sram_size) + print(build_separator) print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM')) print(build_separator) -- cgit v1.3.1 From 83840041a86d3893dc66e9a39cdace78158da011 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 29 Nov 2023 17:09:52 +0700 Subject: update esp32 to also be supported by hil test test run locally well --- .github/workflows/build_esp.yml | 2 +- examples/device/audio_4_channel_mic/skip.txt | 1 + examples/device/audio_test/skip.txt | 1 + examples/device/audio_test_multi_rate/skip.txt | 1 + examples/device/board_test/src/tusb_config.h | 5 ++ examples/device/cdc_msc/skip.txt | 1 + examples/device/cdc_msc_freertos/src/msc_disk.c | 8 +- examples/device/dfu/skip.txt | 1 + examples/device/dynamic_configuration/skip.txt | 1 + examples/device/msc_dual_lun/skip.txt | 1 + examples/device/net_lwip_webserver/skip.txt | 1 + examples/device/uac2_headset/skip.txt | 1 + examples/device/usbtmc/skip.txt | 1 + examples/device/video_capture/skip.txt | 1 + .../espressif/boards/espressif_s3_devkitc/board.h | 8 ++ hw/bsp/espressif/boards/family.c | 7 ++ test/hil/hil_test.py | 90 +++++++++++++++------- tools/build_esp32.py | 1 + 18 files changed, 99 insertions(+), 33 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 897616f09..4568695c2 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -32,7 +32,7 @@ jobs: # ESP32-S2 - 'espressif_kaluga_1' # ESP32-S3 - - 'espressif_s3_devkitm' + - 'espressif_s3_devkitc' steps: - name: Setup Python diff --git a/examples/device/audio_4_channel_mic/skip.txt b/examples/device/audio_4_channel_mic/skip.txt index 3c42a96d9..157605df1 100644 --- a/examples/device/audio_4_channel_mic/skip.txt +++ b/examples/device/audio_4_channel_mic/skip.txt @@ -2,3 +2,4 @@ mcu:SAMD11 mcu:SAME5X mcu:SAMG family:broadcom_64bit +family:espressif diff --git a/examples/device/audio_test/skip.txt b/examples/device/audio_test/skip.txt index 1ee86a485..65b137814 100644 --- a/examples/device/audio_test/skip.txt +++ b/examples/device/audio_test/skip.txt @@ -1,3 +1,4 @@ mcu:SAMD11 mcu:SAME5X mcu:SAMG +family:espressif diff --git a/examples/device/audio_test_multi_rate/skip.txt b/examples/device/audio_test_multi_rate/skip.txt index 1ee86a485..65b137814 100644 --- a/examples/device/audio_test_multi_rate/skip.txt +++ b/examples/device/audio_test_multi_rate/skip.txt @@ -1,3 +1,4 @@ mcu:SAMD11 mcu:SAME5X mcu:SAMG +family:espressif diff --git a/examples/device/board_test/src/tusb_config.h b/examples/device/board_test/src/tusb_config.h index 2c2eb5280..1a27cc87f 100644 --- a/examples/device/board_test/src/tusb_config.h +++ b/examples/device/board_test/src/tusb_config.h @@ -48,6 +48,11 @@ #define CFG_TUSB_OS OPT_OS_NONE #endif +// Espressif IDF requires "freertos/" prefix in include path +#if TU_CHECK_MCU(OPT_MCU_ESP32S2, OPT_MCU_ESP32S3) +#define CFG_TUSB_OS_INC_PATH freertos/ +#endif + // This example only test LED & GPIO, disable both device and host stack #define CFG_TUD_ENABLED 0 #define CFG_TUH_ENABLED 0 diff --git a/examples/device/cdc_msc/skip.txt b/examples/device/cdc_msc/skip.txt index eadb6e74a..833fd072c 100644 --- a/examples/device/cdc_msc/skip.txt +++ b/examples/device/cdc_msc/skip.txt @@ -1 +1,2 @@ mcu:SAMD11 +family:espressif diff --git a/examples/device/cdc_msc_freertos/src/msc_disk.c b/examples/device/cdc_msc_freertos/src/msc_disk.c index 9520dfec1..c8a04bb74 100644 --- a/examples/device/cdc_msc_freertos/src/msc_disk.c +++ b/examples/device/cdc_msc_freertos/src/msc_disk.c @@ -184,7 +184,7 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff uint8_t const* addr = msc_disk[lba] + offset; memcpy(buffer, addr, bufsize); - return bufsize; + return (int32_t) bufsize; } // Callback invoked when received WRITE10 command. @@ -203,7 +203,7 @@ int32_t tud_msc_write10_cb(uint8_t lun, uint32_t lba, uint32_t offset, uint8_t* (void) lba; (void) offset; (void) buffer; #endif - return bufsize; + return (int32_t) bufsize; } // Callback invoked when received an SCSI command not in built-in list below @@ -237,14 +237,14 @@ int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void* buffer, { if(in_xfer) { - memcpy(buffer, response, resplen); + memcpy(buffer, response, (size_t) resplen); }else { // SCSI output } } - return resplen; + return (int32_t) resplen; } #endif diff --git a/examples/device/dfu/skip.txt b/examples/device/dfu/skip.txt index 9ac346bad..9dde06c30 100644 --- a/examples/device/dfu/skip.txt +++ b/examples/device/dfu/skip.txt @@ -1,2 +1,3 @@ mcu:TM4C123 mcu:BCM2835 +family:espressif diff --git a/examples/device/dynamic_configuration/skip.txt b/examples/device/dynamic_configuration/skip.txt index eadb6e74a..833fd072c 100644 --- a/examples/device/dynamic_configuration/skip.txt +++ b/examples/device/dynamic_configuration/skip.txt @@ -1 +1,2 @@ mcu:SAMD11 +family:espressif diff --git a/examples/device/msc_dual_lun/skip.txt b/examples/device/msc_dual_lun/skip.txt index 47e561cf0..a9e3a99b1 100644 --- a/examples/device/msc_dual_lun/skip.txt +++ b/examples/device/msc_dual_lun/skip.txt @@ -1,2 +1,3 @@ mcu:SAMD11 mcu:MKL25ZXX +family:espressif diff --git a/examples/device/net_lwip_webserver/skip.txt b/examples/device/net_lwip_webserver/skip.txt index e3a726a2b..75aa2ef14 100644 --- a/examples/device/net_lwip_webserver/skip.txt +++ b/examples/device/net_lwip_webserver/skip.txt @@ -9,3 +9,4 @@ family:broadcom_64bit family:broadcom_32bit board:curiosity_nano board:frdm_kl25z +family:espressif diff --git a/examples/device/uac2_headset/skip.txt b/examples/device/uac2_headset/skip.txt index 70d8e8838..a2a76af0e 100644 --- a/examples/device/uac2_headset/skip.txt +++ b/examples/device/uac2_headset/skip.txt @@ -5,3 +5,4 @@ mcu:SAMD11 mcu:SAME5X mcu:SAMG board:stm32l052dap52 +family:espressif diff --git a/examples/device/usbtmc/skip.txt b/examples/device/usbtmc/skip.txt index a43106cf0..ccff857ac 100644 --- a/examples/device/usbtmc/skip.txt +++ b/examples/device/usbtmc/skip.txt @@ -1 +1,2 @@ mcu:BCM2835 +family:espressif diff --git a/examples/device/video_capture/skip.txt b/examples/device/video_capture/skip.txt index 5898664a2..db64cc639 100644 --- a/examples/device/video_capture/skip.txt +++ b/examples/device/video_capture/skip.txt @@ -1,3 +1,4 @@ mcu:MSP430x5xx mcu:NUC121 mcu:SAMD11 +family:espressif diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h index fe33b5c43..a319fbc61 100644 --- a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h +++ b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h @@ -36,6 +36,14 @@ #define BUTTON_PIN 0 #define BUTTON_STATE_ACTIVE 0 +// SPI for USB host shield +#define MAX3421_SPI_HOST SPI2_HOST +#define MAX3421_SCK_PIN 39 +#define MAX3421_MOSI_PIN 42 +#define MAX3421_MISO_PIN 21 +#define MAX3421_CS_PIN 15 +#define MAX3421_INTR_PIN 14 + #ifdef __cplusplus } #endif diff --git a/hw/bsp/espressif/boards/family.c b/hw/bsp/espressif/boards/family.c index 2029295dc..c32ccbc84 100644 --- a/hw/bsp/espressif/boards/family.c +++ b/hw/bsp/espressif/boards/family.c @@ -28,6 +28,7 @@ #include "board.h" #include "esp_rom_gpio.h" +#include "esp_mac.h" #include "hal/gpio_ll.h" #include "hal/usb_hal.h" #include "soc/usb_periph.h" @@ -149,6 +150,12 @@ static void configure_pins(usb_hal_context_t* usb) { // Board porting API //--------------------------------------------------------------------+ +size_t board_get_unique_id(uint8_t id[], size_t max_len) { + // use factory default MAC as serial ID + esp_efuse_mac_get_default(id); + return 6; +} + void board_led_write(bool state) { #ifdef NEOPIXEL_PIN strip->set_pixel(strip, 0, (state ? 0x88 : 0x00), 0x00, 0x00); diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index 5f8425549..c90cf363c 100644 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -31,13 +31,21 @@ import time import serial import subprocess import json +import glob ENUM_TIMEOUT = 10 +# get usb serial by id def get_serial_dev(id, vendor_str, product_str, ifnum): - # get usb serial by id - return f'/dev/serial/by-id/usb-{vendor_str}_{product_str}_{id}-if{ifnum:02d}' + if vendor_str and product_str: + # known vendor and product + return f'/dev/serial/by-id/usb-{vendor_str}_{product_str}_{id}-if{ifnum:02d}' + else: + # just use id: mostly for cp210x/ftdi debugger + pattern = f'/dev/serial/by-id/usb-*_{id}-if{ifnum:02d}*' + port_list = glob.glob(pattern) + return port_list[0] # Currently not used, left as reference @@ -92,23 +100,35 @@ def read_disk_file(id, fname): # ------------------------------------------------------------- # Flash with debugger # ------------------------------------------------------------- -def flash_jlink(sn, dev, firmware): +def flash_jlink(board, firmware): script = ['halt', 'r', f'loadfile {firmware}', 'r', 'go', 'exit'] - f = open('flash.jlink', 'w') - f.writelines(f'{s}\n' for s in script) - f.close() - ret = subprocess.run(f'JLinkExe -USB {sn} -device {dev} -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink', - shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - stdout = ret.stdout.decode() + with open('flash.jlink', 'w') as f: + f.writelines(f'{s}\n' for s in script) + ret = subprocess.run( + f'JLinkExe -USB {board["debugger_sn"]} -device {board["cpu"]} -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink', + shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.remove('flash.jlink') - assert ret.returncode == 0, 'Flash failed\n' + stdout + return ret -def flash_openocd(sn, args, firmware): - ret = subprocess.run(f'openocd {args} -c "program {firmware} reset exit"', - shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - stdout = ret.stdout.decode() - assert ret.returncode == 0, 'Flash failed\n' + stdout +def flash_openocd(board, firmware): + ret = subprocess.run( + f'openocd -c "adapter serial {board["debugger_sn"]}" {board["debugger_args"]} -c "program {firmware} reset exit"', + shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + return ret + + +def flash_esptool(board, firmware): + port = get_serial_dev(board["debugger_sn"], None, None, 0) + dir = os.path.dirname(firmware) + with open(f'{dir}/config.env') as f: + IDF_TARGET = json.load(f)['IDF_TARGET'] + with open(f'{dir}/flash_args') as f: + flash_args = f.read().strip().replace('\n', ' ') + command = (f'esptool.py --chip {IDF_TARGET} -p {port} {board["debugger_args"]} ' + f'--before=default_reset --after=hard_reset write_flash {flash_args}') + ret = subprocess.run(command, shell=True, cwd=dir, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + return ret # ------------------------------------------------------------- @@ -160,12 +180,16 @@ issue at github.com/hathach/tinyusb" assert data == readme, 'MSC wrong data' +def test_cdc_msc_freertos(id): + test_cdc_msc(id) + + def test_dfu(id): # Wait device enum timeout = ENUM_TIMEOUT while timeout: ret = subprocess.run(f'dfu-util -l', - shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) stdout = ret.stdout.decode() if f'serial="{id}"' in stdout and 'Found DFU: [cafe:4000]' in stdout: break @@ -190,10 +214,10 @@ def test_dfu(id): assert ret.returncode == 0, 'Upload failed' with open('dfu0') as f: - assert 'Hello world from TinyUSB DFU! - Partition 0' in f.read(), 'Wrong uploaded data' + assert 'Hello world from TinyUSB DFU! - Partition 0' in f.read(), 'Wrong uploaded data' with open('dfu1') as f: - assert 'Hello world from TinyUSB DFU! - Partition 1' in f.read(), 'Wrong uploaded data' + assert 'Hello world from TinyUSB DFU! - Partition 1' in f.read(), 'Wrong uploaded data' os.remove('dfu0') os.remove('dfu1') @@ -204,7 +228,7 @@ def test_dfu_runtime(id): timeout = ENUM_TIMEOUT while timeout: ret = subprocess.run(f'dfu-util -l', - shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) stdout = ret.stdout.decode() if f'serial="{id}"' in stdout and 'Found Runtime: [cafe:4000]' in stdout: break @@ -229,6 +253,14 @@ def test_hid_boot_interface(id): assert timeout, 'Device not available' +def test_hid_composite_freertos(id): + # TODO implement later + pass + + +# ------------------------------------------------------------- +# Main +# ------------------------------------------------------------- if __name__ == '__main__': if len(sys.argv) != 2: print('Usage:') @@ -238,10 +270,9 @@ if __name__ == '__main__': with open(f'{os.path.dirname(__file__)}/{sys.argv[1]}') as f: config = json.load(f) - # all possible tests, board_test is last to disable board's usb + # all possible tests all_tests = [ 'cdc_dual_ports', 'cdc_msc', 'dfu', 'dfu_runtime', 'hid_boot_interface', - 'board_test' ] for board in config['boards']: @@ -254,6 +285,9 @@ if __name__ == '__main__': else: test_list = all_tests + # board_test is added last to disable board's usb + test_list.append('board_test') + # remove skip_tests if 'tests_skip' in board: for skip in board['tests_skip']: @@ -278,13 +312,13 @@ if __name__ == '__main__': print(f'Cannot find firmware file for {test}') sys.exit(-1) - if debugger == 'jlink': - flash_jlink(board['debugger_sn'], board['cpu'], elf) - elif debugger == 'openocd': - flash_openocd(board['debugger_sn'], board['debugger_args'], elf) - else: - # ToDo - pass print(f' {test} ...', end='') + + # flash firmware + ret = locals()[f'flash_{debugger}'](board, elf) + assert ret.returncode == 0, 'Flash failed\n' + ret.stdout.decode() + + # run test locals()[f'test_{test}'](board['uid']) + print('OK') diff --git a/tools/build_esp32.py b/tools/build_esp32.py index 1f73d3b22..951467c23 100644 --- a/tools/build_esp32.py +++ b/tools/build_esp32.py @@ -30,6 +30,7 @@ def filter_with_input(mylist): # Build all examples if not specified all_examples = [entry.replace('examples/', '') for entry in glob.glob("examples/*/*_freertos")] filter_with_input(all_examples) +all_examples.append('device/board_test') all_examples.sort() # Build all boards if not specified -- cgit v1.3.1 From fd55b96ca1856d692e4055eaeae467b8b848520c Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 11 Dec 2023 11:45:50 +0700 Subject: test changing upload artifacts for hil test --- .github/workflows/build_esp.yml | 13 +++++++++++++ .github/workflows/cmake_arm.yml | 20 ++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 4568695c2..e2bf5e0cb 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -48,3 +48,16 @@ jobs: - name: Build run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} + + - name: test dir + run: tree + + - name: Upload Artifacts for Hardware Testing + if: matrix.board == 'espressif_s3_devkitc' && github.repository_owner == 'hathach' + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.board }} + path: | + cmake-build/cmake-build-${{ matrix.board }}/device/*/*.elf + cmake-build/cmake-build-${{ matrix.board }}/device/*/config.env + cmake-build/cmake-build-${{ matrix.board }}/device/*/flash_args diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index f4b93cec7..818dbeda9 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -87,21 +87,21 @@ jobs: PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk # Upload binaries for hardware test with self-hosted - - name: Prepare rp2040 Artifacts - if: contains(matrix.family, 'rp2040') && github.repository_owner == 'hathach' - working-directory: ${{github.workspace}}/cmake-build/cmake-build-raspberry_pi_pico - run: | - find device/ -name "*.elf" -exec mv {} ../../ \; - # find host/ -name "*.elf" -exec mv {} ../../ \; - # find dual/ -name "*.elf" -exec mv {} ../../ \; - - - name: Upload Artifacts for rp2040 +# - name: Prepare rp2040 Artifacts +# if: contains(matrix.family, 'rp2040') && github.repository_owner == 'hathach' +# working-directory: ${{github.workspace}}/cmake-build/cmake-build-raspberry_pi_pico +# run: | +# find device/ -name "*.elf" -exec mv {} ../../ \; +# # find host/ -name "*.elf" -exec mv {} ../../ \; +# # find dual/ -name "*.elf" -exec mv {} ../../ \; + + - name: Upload Artifacts for Hardware Testing if: contains(matrix.family,'rp2040') && github.repository_owner == 'hathach' uses: actions/upload-artifact@v3 with: name: rp2040 path: | - *.elf + cmake-build/cmake-build-raspberry_pi_pico/device/*/*.elf # --------------------------------------- # Hardware in the loop (HIL) -- cgit v1.3.1 From 0642a6d9e7ece8f12090e3d3cf63379284f90a36 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 11 Dec 2023 11:56:04 +0700 Subject: more artifacts --- .github/workflows/build_esp.yml | 10 +++++---- .github/workflows/cmake_arm.yml | 47 +++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 32 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index e2bf5e0cb..56e649935 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -30,7 +30,7 @@ jobs: matrix: board: # ESP32-S2 - - 'espressif_kaluga_1' +# - 'espressif_kaluga_1' # ESP32-S3 - 'espressif_s3_devkitc' @@ -58,6 +58,8 @@ jobs: with: name: ${{ matrix.board }} path: | - cmake-build/cmake-build-${{ matrix.board }}/device/*/*.elf - cmake-build/cmake-build-${{ matrix.board }}/device/*/config.env - cmake-build/cmake-build-${{ matrix.board }}/device/*/flash_args + cmake-build/cmake-build-${{ matrix.board }}/*/*/bootloader/bootloader.bin + cmake-build/cmake-build-${{ matrix.board }}/*/*/*.bin + cmake-build/cmake-build-${{ matrix.board }}/*/*/partition_table/partition-table.bin + cmake-build/cmake-build-${{ matrix.board }}/*/*/config.env + cmake-build/cmake-build-${{ matrix.board }}/*/*/flash_args diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 818dbeda9..801e2b043 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -33,25 +33,25 @@ jobs: matrix: family: # Alphabetical order - - 'imxrt' - - 'kinetis_kl' - - 'lpc18 lpc40 lpc43' - - 'lpc54 lpc55' - - 'mcx' - - 'nrf' - - 'ra' +# - 'imxrt' +# - 'kinetis_kl' +# - 'lpc18 lpc40 lpc43' +# - 'lpc54 lpc55' +# - 'mcx' +# - 'nrf' +# - 'ra' - 'rp2040' - - 'samd21' - - 'samd51' - - 'stm32f0' - - 'stm32f1' - - 'stm32f4' - - 'stm32f7' - - 'stm32g0' - - 'stm32g4' - - 'stm32h7' - - 'stm32l4' - - 'stm32u5' +# - 'samd21' +# - 'samd51' +# - 'stm32f0' +# - 'stm32f1' +# - 'stm32f4' +# - 'stm32f7' +# - 'stm32g0' +# - 'stm32g4' +# - 'stm32h7' +# - 'stm32l4' +# - 'stm32u5' steps: - name: Setup Python uses: actions/setup-python@v4 @@ -86,22 +86,13 @@ jobs: # for rp2040, there is no harm if defined for other families PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk - # Upload binaries for hardware test with self-hosted -# - name: Prepare rp2040 Artifacts -# if: contains(matrix.family, 'rp2040') && github.repository_owner == 'hathach' -# working-directory: ${{github.workspace}}/cmake-build/cmake-build-raspberry_pi_pico -# run: | -# find device/ -name "*.elf" -exec mv {} ../../ \; -# # find host/ -name "*.elf" -exec mv {} ../../ \; -# # find dual/ -name "*.elf" -exec mv {} ../../ \; - - name: Upload Artifacts for Hardware Testing if: contains(matrix.family,'rp2040') && github.repository_owner == 'hathach' uses: actions/upload-artifact@v3 with: name: rp2040 path: | - cmake-build/cmake-build-raspberry_pi_pico/device/*/*.elf + cmake-build/cmake-build-raspberry_pi_pico/*/*/*.elf # --------------------------------------- # Hardware in the loop (HIL) -- cgit v1.3.1 From 721ae45ebbbf679776d9bdc218a483d77b175462 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 11 Dec 2023 14:29:11 +0700 Subject: update hil test to support s3 --- .github/workflows/build_esp.yml | 36 +++++++++++++++++++++ .github/workflows/cmake_arm.yml | 20 +++++++----- hw/bsp/espressif/boards/family.c | 2 +- test/hil/hil_pi4.json | 10 ++++++ test/hil/hil_test.py | 69 ++++++++++++++++++++++++---------------- 5 files changed, 101 insertions(+), 36 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 56e649935..62bdb266c 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -63,3 +63,39 @@ jobs: cmake-build/cmake-build-${{ matrix.board }}/*/*/partition_table/partition-table.bin cmake-build/cmake-build-${{ matrix.board }}/*/*/config.env cmake-build/cmake-build-${{ matrix.board }}/*/*/flash_args + + # --------------------------------------- + # Hardware in the loop (HIL) + # Current self-hosted instance is running on an RPI4. For attached hardware checkout hil_pi4.json + # --------------------------------------- + hil-test: + # run only with hathach's commit due to limited resource on RPI4 + if: github.repository_owner == 'hathach' + needs: build-esp + runs-on: [self-hosted, esp32s3, hardware-in-the-loop] + strategy: + fail-fast: false + matrix: + board: + - 'espressif_s3_devkitc' + + steps: + - name: Clean workspace + run: | + echo "Cleaning up previous run" + rm -rf "${{ github.workspace }}" + mkdir -p "${{ github.workspace }}" + + - name: Checkout test/hil + uses: actions/checkout@v3 + with: + sparse-checkout: test/hil + + - name: Download Artifacts + uses: actions/download-artifact@v3 + with: + name: ${{ matrix.board }} + + - name: Test on actual hardware + run: | + python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 801e2b043..f917c4582 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -90,20 +90,24 @@ jobs: if: contains(matrix.family,'rp2040') && github.repository_owner == 'hathach' uses: actions/upload-artifact@v3 with: - name: rp2040 + name: raspberry_pi_pico path: | cmake-build/cmake-build-raspberry_pi_pico/*/*/*.elf # --------------------------------------- # Hardware in the loop (HIL) - # Current self-hosted instance is running on an RPI4. - # For attached hardware checkout hil_pi4.json + # Current self-hosted instance is running on an RPI4. For attached hardware checkout hil_pi4.json # --------------------------------------- - hw-rp2040-test: + hil-test: # run only with hathach's commit due to limited resource on RPI4 if: github.repository_owner == 'hathach' needs: build-arm runs-on: [self-hosted, rp2040, hardware-in-the-loop] + strategy: + fail-fast: false + matrix: + board: + - 'raspberry_pi_pico' steps: - name: Clean workspace @@ -117,11 +121,11 @@ jobs: with: sparse-checkout: test/hil - - name: Download rp2040 Artifacts + - name: Download Artifacts uses: actions/download-artifact@v3 with: - name: rp2040 + name: ${{ matrix.board }} - - name: Test on actual hardware (hardware in the loop) + - name: Test on actual hardware run: | - python3 test/hil/hil_test.py hil_pi4.json + python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json diff --git a/hw/bsp/espressif/boards/family.c b/hw/bsp/espressif/boards/family.c index c32ccbc84..325e9ab0f 100644 --- a/hw/bsp/espressif/boards/family.c +++ b/hw/bsp/espressif/boards/family.c @@ -158,7 +158,7 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) { void board_led_write(bool state) { #ifdef NEOPIXEL_PIN - strip->set_pixel(strip, 0, (state ? 0x88 : 0x00), 0x00, 0x00); + strip->set_pixel(strip, 0, state ? 0x08 : 0x00, 0x00, 0x00); strip->refresh(strip, 100); #endif } diff --git a/test/hil/hil_pi4.json b/test/hil/hil_pi4.json index d613f8da8..6ebb6c8f0 100644 --- a/test/hil/hil_pi4.json +++ b/test/hil/hil_pi4.json @@ -6,6 +6,16 @@ "debugger": "openocd", "debugger_sn": "E6614103E72C1D2F", "debugger_args": "-f interface/cmsis-dap.cfg -f target/rp2040.cfg -c \"adapter speed 5000\"" + }, + { + "name": "espressif_s3_devkitc", + "uid": "7CDFA1E073CC", + "tests": [ + "cdc_msc_freertos", "hid_composite_freertos" + ], + "debugger": "esptool", + "debugger_sn": "461cb8d7decdeb119be9b506e93fd3f1", + "debugger_args": "-b 1500000" } ] } diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index b307a45f6..a6932cfcc 100644 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -28,6 +28,7 @@ import os import sys import time +import click import serial import subprocess import json @@ -262,13 +263,15 @@ def test_hid_composite_freertos(id): # ------------------------------------------------------------- # Main # ------------------------------------------------------------- -if __name__ == '__main__': - if len(sys.argv) != 2: - print('Usage:') - print('python hitl_test.py config.json') - sys.exit(-1) - - with open(f'{os.path.dirname(__file__)}/{sys.argv[1]}') as f: +@click.command() +@click.argument('config_file') +@click.option('-b', '--board', multiple=True, default=None, help='Boards to test, all if not specified') +def main(config_file, board): + """ + Hardware test on specified boards + """ + config_file = os.path.join(os.path.dirname(__file__), config_file) + with open(config_file) as f: config = json.load(f) # all possible tests @@ -276,13 +279,18 @@ if __name__ == '__main__': 'cdc_dual_ports', 'cdc_msc', 'dfu', 'dfu_runtime', 'hid_boot_interface', ] - for board in config['boards']: - print(f'Testing board:{board["name"]}') - debugger = board['debugger'].lower() + if len(board) == 0: + config_boards = config['boards'] + else: + config_boards = [e for e in config['boards'] if e['name'] in board] + + for item in config_boards: + print(f'Testing board:{item["name"]}') + debugger = item['debugger'].lower() # default to all tests - if 'tests' in board: - test_list = board['tests'] + if 'tests' in item: + test_list = item['tests'] else: test_list = all_tests @@ -290,36 +298,43 @@ if __name__ == '__main__': test_list.append('board_test') # remove skip_tests - if 'tests_skip' in board: - for skip in board['tests_skip']: + if 'tests_skip' in item: + for skip in item['tests_skip']: if skip in test_list: test_list.remove(skip) for test in test_list: - # cmake, make, download from artifacts - elf_list = [ - f'cmake-build/cmake-build-{board["name"]}/device/{test}/{test}.elf', - f'examples/device/{test}/_build/{board["name"]}/{test}.elf', - f'{test}.elf' + fw_list = [ + # cmake build + f'cmake-build/cmake-build-{item["name"]}/device/{test}/{test}.elf', + # make build + f'examples/device/{test}/_build/{item["name"]}/{test}.elf', + # artifacts: esp32 use bin file + f'device/{test}/{test}.elf' + f'device/{test}/{test}.bin' ] - elf = None - for e in elf_list: - if os.path.isfile(e): - elf = e + fw = None + for f in fw_list: + if os.path.isfile(f): + fw = f break - if elf is None: - print(f'Cannot find firmware file for {test}') + if fw is None: + print(f'Cannot find binary file for {test}') sys.exit(-1) print(f' {test} ...', end='') # flash firmware - ret = locals()[f'flash_{debugger}'](board, elf) + ret = globals()[f'flash_{debugger}'](item, fw) assert ret.returncode == 0, 'Flash failed\n' + ret.stdout.decode() # run test - locals()[f'test_{test}'](board['uid']) + globals()[f'test_{test}'](item['uid']) print('OK') + + +if __name__ == '__main__': + main() -- cgit v1.3.1 From c8291168301b597f586d15510c780a9bdb8d0e69 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 11 Dec 2023 14:43:54 +0700 Subject: extract artifacts to same folder structure as ci build --- .github/workflows/build_esp.yml | 2 +- .github/workflows/cmake_arm.yml | 7 ------- test/hil/hil_test.py | 8 ++------ 3 files changed, 3 insertions(+), 14 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 62bdb266c..c3fd53bf6 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -78,7 +78,6 @@ jobs: matrix: board: - 'espressif_s3_devkitc' - steps: - name: Clean workspace run: | @@ -95,6 +94,7 @@ jobs: uses: actions/download-artifact@v3 with: name: ${{ matrix.board }} + path: cmake-build/cmake-build-${{ matrix.board }} - name: Test on actual hardware run: | diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index c8f8fb99a..1ec90b10a 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -108,7 +108,6 @@ jobs: matrix: board: - 'raspberry_pi_pico' - steps: - name: Clean workspace run: | @@ -127,12 +126,6 @@ jobs: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} - - name: Display structure of downloaded files - run: ls -R - working-directory: cmake-build/cmake-build-${{ matrix.board }} - - - run: tree - - name: Test on actual hardware run: | python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index a6932cfcc..1b1349fb8 100644 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -304,14 +304,10 @@ def main(config_file, board): test_list.remove(skip) for test in test_list: + # cmake, make fw_list = [ - # cmake build f'cmake-build/cmake-build-{item["name"]}/device/{test}/{test}.elf', - # make build - f'examples/device/{test}/_build/{item["name"]}/{test}.elf', - # artifacts: esp32 use bin file - f'device/{test}/{test}.elf' - f'device/{test}/{test}.bin' + f'examples/device/{test}/_build/{item["name"]}/{test}.elf' ] fw = None -- cgit v1.3.1 From e1142d4527aa811d89276abe37060503703011b8 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 11 Dec 2023 14:52:21 +0700 Subject: wrap up s3 hil test --- .github/workflows/build_esp.yml | 6 +----- .github/workflows/cmake_arm.yml | 36 ++++++++++++++++++------------------ test/hil/hil_test.py | 4 +++- 3 files changed, 22 insertions(+), 24 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index c3fd53bf6..fded0e85d 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -30,10 +30,9 @@ jobs: matrix: board: # ESP32-S2 -# - 'espressif_kaluga_1' + - 'espressif_kaluga_1' # ESP32-S3 - 'espressif_s3_devkitc' - steps: - name: Setup Python uses: actions/setup-python@v4 @@ -49,9 +48,6 @@ jobs: - name: Build run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} - - name: test dir - run: tree - - name: Upload Artifacts for Hardware Testing if: matrix.board == 'espressif_s3_devkitc' && github.repository_owner == 'hathach' uses: actions/upload-artifact@v3 diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 1ec90b10a..535244c47 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -33,25 +33,25 @@ jobs: matrix: family: # Alphabetical order -# - 'imxrt' -# - 'kinetis_kl' -# - 'lpc18 lpc40 lpc43' -# - 'lpc54 lpc55' -# - 'mcx' -# - 'nrf' -# - 'ra' + - 'imxrt' + - 'kinetis_kl' + - 'lpc18 lpc40 lpc43' + - 'lpc54 lpc55' + - 'mcx' + - 'nrf' + - 'ra' - 'rp2040' -# - 'samd21' -# - 'samd51' -# - 'stm32f0' -# - 'stm32f1' -# - 'stm32f4' -# - 'stm32f7' -# - 'stm32g0' -# - 'stm32g4' -# - 'stm32h7' -# - 'stm32l4' -# - 'stm32u5' + - 'samd21' + - 'samd51' + - 'stm32f0' + - 'stm32f1' + - 'stm32f4' + - 'stm32f7' + - 'stm32g0' + - 'stm32g4' + - 'stm32h7' + - 'stm32l4' + - 'stm32u5' steps: - name: Setup Python uses: actions/setup-python@v4 diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index 1b1349fb8..fe31a54e8 100644 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -304,9 +304,11 @@ def main(config_file, board): test_list.remove(skip) for test in test_list: - # cmake, make fw_list = [ + # cmake: esp32 use .bin file f'cmake-build/cmake-build-{item["name"]}/device/{test}/{test}.elf', + f'cmake-build/cmake-build-{item["name"]}/device/{test}/{test}.bin', + # make f'examples/device/{test}/_build/{item["name"]}/{test}.elf' ] -- cgit v1.3.1 From f986f1f22df05f1e930f95c456c0a2a9aeddf5c7 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 12 Dec 2023 12:23:07 +0700 Subject: add reset usb bus --- .github/workflows/build_esp.yml | 8 ++++++++ .github/workflows/cmake_arm.yml | 8 ++++++++ hw/bsp/nrf/family.c | 10 +++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index fded0e85d..51df644a5 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -95,3 +95,11 @@ jobs: - name: Test on actual hardware run: | python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json + + - name: Reset USB bus + run: | + for port in $(lspci | grep USB | cut -d' ' -f1); do + echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + sleep 1; + echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + done diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 0df51a3ca..f760ca3ca 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -139,3 +139,11 @@ jobs: - name: Test on actual hardware run: | python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json + + - name: Reset USB bus + run: | + for port in $(lspci | grep USB | cut -d' ' -f1); do + echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + sleep 1; + echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + done diff --git a/hw/bsp/nrf/family.c b/hw/bsp/nrf/family.c index 5b0ddc69f..7a970f52e 100644 --- a/hw/bsp/nrf/family.c +++ b/hw/bsp/nrf/family.c @@ -207,11 +207,15 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) { (void) max_len; #ifdef NRF5340_XXAA - uintptr_t device_id = (uintptr_t) NRF_FICR->INFO.DEVICEID; + uintptr_t did_addr = (uintptr_t) NRF_FICR->INFO.DEVICEID; #else - uintptr_t device_id = (uintptr_t) NRF_FICR->DEVICEID; + uintptr_t did_addr = (uintptr_t) NRF_FICR->DEVICEID; #endif - memcpy(id, (void*) device_id, 8); + + const uint8_t* device_id = (const uint8_t*) did_addr; + for(uint8_t i=0; i<8; i++) { + id[i] = device_id[i]; + } return 8; } -- cgit v1.3.1 From b343ac6d0f687af917ba7c9861c017c000166f0d Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 13 Dec 2023 19:05:44 +0700 Subject: reset usb before running test --- .github/workflows/build_esp.yml | 9 +++++---- .github/workflows/cmake_arm.yml | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 51df644a5..34d1a7d15 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -92,14 +92,15 @@ jobs: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} - - name: Test on actual hardware - run: | - python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json - - name: Reset USB bus run: | for port in $(lspci | grep USB | cut -d' ' -f1); do echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; sleep 1; echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + sleep 1; done + + - name: Test on actual hardware + run: | + python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 46dc7a93b..71b42b103 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -144,14 +144,15 @@ jobs: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} - - name: Test on actual hardware - run: | - python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json - - name: Reset USB bus run: | for port in $(lspci | grep USB | cut -d' ' -f1); do echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; sleep 1; echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + sleep 1; done + + - name: Test on actual hardware + run: | + python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json -- cgit v1.3.1 From 31c33ca8530ed1115a956b39c853dceb56d307db Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 13 Dec 2023 19:18:08 +0700 Subject: tweak usb reset wait time, fix test script with IAR server --- .github/workflows/build_esp.yml | 4 ++-- .github/workflows/cmake_arm.yml | 4 ++-- test/hil/hil_test.py | 9 ++++++--- 3 files changed, 10 insertions(+), 7 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 34d1a7d15..bbbbc72ee 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -96,9 +96,9 @@ jobs: run: | for port in $(lspci | grep USB | cut -d' ' -f1); do echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 1; + sleep 0.5; echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - sleep 1; + sleep 3; done - name: Test on actual hardware diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 71b42b103..ba531e9ea 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -148,9 +148,9 @@ jobs: run: | for port in $(lspci | grep USB | cut -d' ' -f1); do echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 1; + sleep 0.5; echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - sleep 1; + sleep 3; done - name: Test on actual hardware diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index f9611b96e..00751181e 100644 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -34,8 +34,11 @@ import subprocess import json import glob -# for RPI double reset: install sudo apt install python3-gpiozero or sudo pip install gpiozero -from gpiozero import LED +# for RPI double reset +try: + import gpiozero +except ImportError: + pass ENUM_TIMEOUT = 10 @@ -141,7 +144,7 @@ def flash_esptool(board, firmware): def doublereset_with_rpi_gpio(board): # Off = 0 = Reset - led = LED(board["flasher_reset_pin"]) + led = gpiozero.LED(board["flasher_reset_pin"]) led.off() time.sleep(0.1) -- cgit v1.3.1 From 84839fa5f169a29e2b16e7d45a424fe50b17a143 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 14 Dec 2023 16:52:45 +0700 Subject: reset pi4 usb bus before checkout/download, so that we could skip delay --- .github/workflows/build_esp.yml | 18 +++++++++--------- .github/workflows/cmake_arm.yml | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index bbbbc72ee..57cf9a4a6 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -81,6 +81,15 @@ jobs: rm -rf "${{ github.workspace }}" mkdir -p "${{ github.workspace }}" + # USB bus on rpi4 is not stable, reset it before testing + - name: Reset USB bus + run: | + for port in $(lspci | grep USB | cut -d' ' -f1); do + echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + sleep 0.1; + echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + done + - name: Checkout test/hil uses: actions/checkout@v3 with: @@ -92,15 +101,6 @@ jobs: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} - - name: Reset USB bus - run: | - for port in $(lspci | grep USB | cut -d' ' -f1); do - echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 0.5; - echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - sleep 3; - done - - name: Test on actual hardware run: | python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index ba531e9ea..1a99d407f 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -133,6 +133,15 @@ jobs: rm -rf "${{ github.workspace }}" mkdir -p "${{ github.workspace }}" + # USB bus on rpi4 is not stable, reset it before testing + - name: Reset USB bus + run: | + for port in $(lspci | grep USB | cut -d' ' -f1); do + echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + sleep 0.1; + echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + done + - name: Checkout test/hil uses: actions/checkout@v3 with: @@ -144,15 +153,6 @@ jobs: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} - - name: Reset USB bus - run: | - for port in $(lspci | grep USB | cut -d' ' -f1); do - echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 0.5; - echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - sleep 3; - done - - name: Test on actual hardware run: | python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json -- cgit v1.3.1 From c314cb290300ffa2cbd23e1d3dee71bb3f6174f7 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 18 Dec 2023 20:07:17 +0700 Subject: remove usage of linkermap, update checkout to v4 --- .github/workflows/build_aarch64.yml | 16 +--------------- .github/workflows/build_arm.yml | 19 +++---------------- .github/workflows/build_esp.yml | 4 ++-- .github/workflows/build_iar.yml | 4 +++- .github/workflows/build_msp430.yml | 19 +++---------------- .github/workflows/build_renesas.yml | 19 +++---------------- .github/workflows/build_riscv.yml | 19 +++---------------- .github/workflows/build_win_mac.yml | 2 +- .github/workflows/cmake_arm.yml | 8 +++++--- .github/workflows/codeql.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/trigger.yml | 2 +- 12 files changed, 27 insertions(+), 89 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index 8a91ee630..40fc8d63a 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -41,13 +41,7 @@ jobs: python-version: '3.x' - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap + uses: actions/checkout@v4 - name: Set Toolchain URL run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz @@ -74,11 +68,3 @@ jobs: - name: Build run: python3 tools/build_make.py ${{ matrix.family }} - - - name: Linker Map - run: | - pip install linkermap/ - for ex in `ls -d examples/device/*/`; do \ - find ${ex} -name *.map -print -quit | \ - xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'; \ - done diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 402b89e0a..47dea1925 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_arm.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_arm.yml' concurrency: @@ -54,25 +56,10 @@ jobs: release: '11.2-2022.02' - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap + uses: actions/checkout@v4 - name: Get Dependencies run: python3 tools/get_deps.py ${{ matrix.family }} - name: Build run: python3 tools/build_make.py ${{ matrix.family }} - - - name: Linker Map - run: | - pip install linkermap/ - # find -quit to only print linkermap of 1 board per example - for ex in `ls -d examples/*/*/` - do - find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' - done diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 57cf9a4a6..33caa0edb 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -43,7 +43,7 @@ jobs: run: docker pull espressif/idf:latest - name: Checkout TinyUSB - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} @@ -91,7 +91,7 @@ jobs: done - name: Checkout test/hil - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: sparse-checkout: test/hil diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index b4c3052ed..9f2cc0351 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_iar.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_iar.yml' concurrency: @@ -41,7 +43,7 @@ jobs: mkdir -p "${{ github.workspace }}" - name: Checkout TinyUSB - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Dependencies run: python3 tools/get_deps.py ${{ matrix.family }} diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 60c5feef3..296dbb766 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_msp430.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_msp430.yml' concurrency: @@ -39,13 +41,7 @@ jobs: python-version: '3.x' - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap + uses: actions/checkout@v4 - name: Set Toolchain URL run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2 @@ -72,12 +68,3 @@ jobs: - name: Build run: python3 tools/build_make.py ${{ matrix.family }} - - - name: Linker Map - run: | - pip install linkermap/ - # find -quit to only print linkermap of 1 board per example - for ex in `ls -d examples/device/*/` - do - find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' - done diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index 1cc4f8132..017a29eee 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_renesas.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_renesas.yml' concurrency: @@ -38,13 +40,7 @@ jobs: python-version: '3.x' - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap + uses: actions/checkout@v4 - name: Set Toolchain URL run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run @@ -72,12 +68,3 @@ jobs: - name: Build run: python3 tools/build_make.py ${{ matrix.family }} - - - name: Linker Map - run: | - pip install linkermap/ - # find -quit to only print linkermap of 1 board per example - for ex in `ls -d examples/device/*/` - do - find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' - done diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index dfc6b672f..e030bb77f 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_riscv.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/build_riscv.yml' concurrency: @@ -40,13 +42,7 @@ jobs: python-version: '3.x' - name: Checkout TinyUSB - uses: actions/checkout@v3 - - - name: Checkout hathach/linkermap - uses: actions/checkout@v3 - with: - repository: hathach/linkermap - path: linkermap + uses: actions/checkout@v4 - name: Set Toolchain URL run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v10.1.0-1.1/xpack-riscv-none-embed-gcc-10.1.0-1.1-linux-x64.tar.gz @@ -73,12 +69,3 @@ jobs: - name: Build run: python3 tools/build_make.py ${{ matrix.family }} - - - name: Linker Map - run: | - pip install linkermap/ - # find -quit to only print linkermap of 1 board per example - for ex in `ls -d examples/device/*/` - do - find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"' - done diff --git a/.github/workflows/build_win_mac.yml b/.github/workflows/build_win_mac.yml index f6a42cf0a..7fa1a6943 100644 --- a/.github/workflows/build_win_mac.yml +++ b/.github/workflows/build_win_mac.yml @@ -45,7 +45,7 @@ jobs: release: '10.3-2021.10' - name: Checkout TinyUSB - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Dependencies run: python3 tools/get_deps.py stm32f4 diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 44ada917f..13120f96f 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/cmake_arm.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'tools/get_deps.py' - '.github/workflows/cmake_arm.yml' concurrency: @@ -68,11 +70,11 @@ jobs: run: sudo apt install -y ninja-build - name: Checkout TinyUSB - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Checkout pico-sdk for rp2040 if: matrix.family == 'rp2040' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: raspberrypi/pico-sdk ref: develop @@ -144,7 +146,7 @@ jobs: done - name: Checkout test/hil - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: sparse-checkout: test/hil diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dec071753..3d51fc5b7 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -57,7 +57,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install ARM GCC uses: carlosperate/arm-none-eabi-gcc-action@v1 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index f984954d9..2e9ae9264 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -25,7 +25,7 @@ jobs: ruby-version: '3.0' - name: Checkout TinyUSB - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Dependencies run: | diff --git a/.github/workflows/trigger.yml b/.github/workflows/trigger.yml index 33e3db859..cf40ac955 100644 --- a/.github/workflows/trigger.yml +++ b/.github/workflows/trigger.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Push to tinyusb_src run: | -- cgit v1.3.1 From 64f86ef8e744e72e27b529ddb3440420ee4e3cf0 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 24 Jan 2024 11:32:28 +0700 Subject: build workflow with hil-test when test/hil changes --- .github/workflows/build_esp.yml | 2 ++ .github/workflows/build_iar.yml | 2 ++ .github/workflows/cmake_arm.yml | 2 ++ 3 files changed, 6 insertions(+) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 33caa0edb..65ade7b03 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'test/hil/**' - '.github/workflows/build_esp.yml' pull_request: branches: [ master ] @@ -16,6 +17,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'test/hil/**' - '.github/workflows/build_esp.yml' concurrency: diff --git a/.github/workflows/build_iar.yml b/.github/workflows/build_iar.yml index 9f2cc0351..a0a022ecc 100644 --- a/.github/workflows/build_iar.yml +++ b/.github/workflows/build_iar.yml @@ -9,6 +9,7 @@ on: - 'lib/**' - 'hw/**' - 'tools/get_deps.py' + - 'test/hil/**' - '.github/workflows/build_iar.yml' pull_request: branches: [ master ] @@ -18,6 +19,7 @@ on: - 'lib/**' - 'hw/**' - 'tools/get_deps.py' + - 'test/hil/**' - '.github/workflows/build_iar.yml' concurrency: diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 8b87fef21..4ef2de4a6 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -8,6 +8,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'test/hil/**' - 'tools/get_deps.py' - '.github/workflows/cmake_arm.yml' pull_request: @@ -17,6 +18,7 @@ on: - 'examples/**' - 'lib/**' - 'hw/**' + - 'test/hil/**' - 'tools/get_deps.py' - '.github/workflows/cmake_arm.yml' -- cgit v1.3.1 From 14d44171b59fc273adcccc1464da6e6cfb2c1864 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 25 Jan 2024 19:13:11 +0700 Subject: bump up to actions/setup-python@v5 --- .github/workflows/build_aarch64.yml | 2 +- .github/workflows/build_arm.yml | 2 +- .github/workflows/build_esp.yml | 2 +- .github/workflows/build_msp430.yml | 2 +- .github/workflows/build_renesas.yml | 2 +- .github/workflows/build_riscv.yml | 2 +- .github/workflows/build_win_mac.yml | 2 +- .github/workflows/cmake_arm.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index 40fc8d63a..e5dbf9494 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -36,7 +36,7 @@ jobs: - 'broadcom_64bit' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml index 4127db5bf..9f3270c91 100644 --- a/.github/workflows/build_arm.yml +++ b/.github/workflows/build_arm.yml @@ -46,7 +46,7 @@ jobs: - 'tm4c123 xmc4000' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 65ade7b03..315df255e 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -37,7 +37,7 @@ jobs: - 'espressif_s3_devkitc' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 296dbb766..f913df913 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml index 017a29eee..ec06c9426 100644 --- a/.github/workflows/build_renesas.yml +++ b/.github/workflows/build_renesas.yml @@ -35,7 +35,7 @@ jobs: - 'rx' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml index e030bb77f..e891a3a51 100644 --- a/.github/workflows/build_riscv.yml +++ b/.github/workflows/build_riscv.yml @@ -37,7 +37,7 @@ jobs: - 'gd32vf103' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/build_win_mac.yml b/.github/workflows/build_win_mac.yml index 7fa1a6943..b33b5b593 100644 --- a/.github/workflows/build_win_mac.yml +++ b/.github/workflows/build_win_mac.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 4ef2de4a6..f97645ad1 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -59,7 +59,7 @@ jobs: - 'stm32u5' steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 2e9ae9264..e36259daa 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' -- cgit v1.3.1 From d1f77e08ac582194578d9587a47201b7d29e0b29 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 2 Feb 2024 13:08:42 +0700 Subject: build esp32 ci with v5.1 --- .github/workflows/build_esp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 315df255e..8fbdb31ff 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -48,7 +48,7 @@ jobs: uses: actions/checkout@v4 - name: Build - run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }} + run: docker run --rm -v $PWD:/project -w /project espressif/idf:v5.1.1 python3 tools/build_esp32.py ${{ matrix.board }} - name: Upload Artifacts for Hardware Testing if: matrix.board == 'espressif_s3_devkitc' && github.repository_owner == 'hathach' -- cgit v1.3.1 From 54e35dd3cf0db737afcb3af2237a3bed85cab1e6 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 22 Mar 2024 18:52:52 +0700 Subject: bump up upload artifact to v4 --- .github/workflows/build_esp.yml | 2 +- .github/workflows/cifuzz.yml | 2 +- .github/workflows/cmake_arm.yml | 6 +++--- .github/workflows/codeql.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 8fbdb31ff..6106592de 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -52,7 +52,7 @@ jobs: - name: Upload Artifacts for Hardware Testing if: matrix.board == 'espressif_s3_devkitc' && github.repository_owner == 'hathach' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.board }} path: | diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index 4c4b12a6b..5dc0f2764 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -27,7 +27,7 @@ jobs: language: c++ fuzz-seconds: 600 - name: Upload Crash - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() && steps.build.outcome == 'success' with: name: artifacts diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 80ab1ea71..1edd2e121 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -93,7 +93,7 @@ jobs: - name: Upload Artifacts for Hardware Testing (rp2040) if: matrix.family == 'rp2040' && github.repository_owner == 'hathach' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: raspberry_pi_pico path: | @@ -101,7 +101,7 @@ jobs: - name: Upload Artifacts for Hardware Testing (nRF) if: matrix.family == 'nrf' && github.repository_owner == 'hathach' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: feather_nrf52840_express path: | @@ -109,7 +109,7 @@ jobs: - name: Upload Artifacts for Hardware Testing (samd51) if: matrix.family == 'samd51' && github.repository_owner == 'hathach' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: itsybitsy_m4 path: | diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3d51fc5b7..1f7b60b9c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -130,7 +130,7 @@ jobs: category: "/language:${{matrix.language}}" - name: Archive CodeQL results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: codeql-results path: ${{ steps.step1.outputs.sarif-output }} -- cgit v1.3.1 From ad5c449f1e37a92b093263680ee772e448100d9c Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 22 Mar 2024 20:12:25 +0700 Subject: bump up download artifacts to v4 --- .github/workflows/build_esp.yml | 2 +- .github/workflows/cmake_arm.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 6106592de..07cbf3552 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -98,7 +98,7 @@ jobs: sparse-checkout: test/hil - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 1edd2e121..732e9b9df 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -153,7 +153,7 @@ jobs: sparse-checkout: test/hil - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{ matrix.board }} path: cmake-build/cmake-build-${{ matrix.board }} -- cgit v1.3.1 From ecea890fdc7a0dc4b92a365f0455b7b91258d543 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 26 Mar 2024 16:56:13 +0700 Subject: use usbreset to reset built-in usb 2.0 hub VIA Labs before each test --- .github/workflows/build_esp.yml | 16 +++++++++++----- .github/workflows/cmake_arm.yml | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index 07cbf3552..b44da51e6 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -86,11 +86,17 @@ jobs: # USB bus on rpi4 is not stable, reset it before testing - name: Reset USB bus run: | - for port in $(lspci | grep USB | cut -d' ' -f1); do - echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 0.1; - echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - done + lsusb + lsusb -t + # reset VIA Labs 2.0 hub + usbreset 001/002 + + # legacy code + #for port in $(lspci | grep USB | cut -d' ' -f1); do + # echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + # sleep 0.1; + # echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + #done - name: Checkout test/hil uses: actions/checkout@v4 diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index 732e9b9df..c44d3780e 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -141,11 +141,17 @@ jobs: # USB bus on rpi4 is not stable, reset it before testing - name: Reset USB bus run: | - for port in $(lspci | grep USB | cut -d' ' -f1); do - echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; - sleep 0.1; - echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; - done + lsusb + lsusb -t + # reset VIA Labs 2.0 hub + usbreset 001/002 + + # legacy code + #for port in $(lspci | grep USB | cut -d' ' -f1); do + # echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; + # sleep 0.1; + # echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; + #done - name: Checkout test/hil uses: actions/checkout@v4 -- cgit v1.3.1 From 7f1e327be3feca54cef56a3fadf49465fa452c06 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 26 Mar 2024 17:13:02 +0700 Subject: add sudo usbreset --- .github/workflows/build_esp.yml | 2 +- .github/workflows/cmake_arm.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to '.github/workflows/build_esp.yml') diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml index b44da51e6..d283c6535 100644 --- a/.github/workflows/build_esp.yml +++ b/.github/workflows/build_esp.yml @@ -89,7 +89,7 @@ jobs: lsusb lsusb -t # reset VIA Labs 2.0 hub - usbreset 001/002 + sudo usbreset 001/002 # legacy code #for port in $(lspci | grep USB | cut -d' ' -f1); do diff --git a/.github/workflows/cmake_arm.yml b/.github/workflows/cmake_arm.yml index c44d3780e..1e5f61e0e 100644 --- a/.github/workflows/cmake_arm.yml +++ b/.github/workflows/cmake_arm.yml @@ -144,7 +144,7 @@ jobs: lsusb lsusb -t # reset VIA Labs 2.0 hub - usbreset 001/002 + sudo usbreset 001/002 # legacy code #for port in $(lspci | grep USB | cut -d' ' -f1); do -- cgit v1.3.1