From 954056da0ca4633d27f022858600164721963104 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 25 May 2021 21:02:40 +0700 Subject: [PATCH 1/5] fix warnings cast function type for nrf, fix pico osal warning add TODO for overflow in tusb_fifo.c --- examples/make.mk | 4 +++- hw/bsp/nrf/family.c | 7 ++++++- src/common/tusb_fifo.c | 2 ++ src/osal/osal_pico.h | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/examples/make.mk b/examples/make.mk index 6366d6ce..df8bfd61 100644 --- a/examples/make.mk +++ b/examples/make.mk @@ -88,6 +88,7 @@ CFLAGS += \ -fno-strict-aliasing \ -Wdouble-promotion \ -Wstrict-prototypes \ + -Wstrict-overflow \ -Wall \ -Wextra \ -Werror \ @@ -100,7 +101,8 @@ CFLAGS += \ -Wsign-compare \ -Wmissing-format-attribute \ -Wunreachable-code \ - -Wcast-align + -Wcast-align \ + -Wcast-function-type # Debugging/Optimization ifeq ($(DEBUG), 1) diff --git a/hw/bsp/nrf/family.c b/hw/bsp/nrf/family.c index fc5e805d..f117fbe3 100644 --- a/hw/bsp/nrf/family.c +++ b/hw/bsp/nrf/family.c @@ -55,6 +55,11 @@ static nrfx_uarte_t _uart_id = NRFX_UARTE_INSTANCE(0); // We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled. extern void tusb_hal_nrf_power_event(uint32_t event); +static void power_event_handler(nrfx_power_usb_evt_t event) +{ + tusb_hal_nrf_power_event((uint32_t) event); +} + void board_init(void) { // stop LF clock just in case we jump from application without reset @@ -121,7 +126,7 @@ void board_init(void) // Register tusb function as USB power handler // cause cast-function-type warning - const nrfx_power_usbevt_config_t config = { .handler = ((nrfx_power_usb_event_handler_t) tusb_hal_nrf_power_event) }; + const nrfx_power_usbevt_config_t config = { .handler = power_event_handler }; nrfx_power_usbevt_init(&config); nrfx_power_usbevt_enable(); diff --git a/src/common/tusb_fifo.c b/src/common/tusb_fifo.c index 81e11eb0..5f7b6a26 100644 --- a/src/common/tusb_fifo.c +++ b/src/common/tusb_fifo.c @@ -325,6 +325,8 @@ static uint16_t advance_pointer(tu_fifo_t* f, uint16_t p, uint16_t offset) // We limit the index space of p such that a correct wrap around happens // Check for a wrap around or if we are in unused index space - This has to be checked first!! // We are exploiting the wrap around to the correct index + + // TODO warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow] if ((p > p + offset) || (p + offset > f->max_pointer_idx)) { p = (p + offset) + f->non_used_index_space; diff --git a/src/osal/osal_pico.h b/src/osal/osal_pico.h index bae1217e..1c3366e0 100644 --- a/src/osal/osal_pico.h +++ b/src/osal/osal_pico.h @@ -57,6 +57,7 @@ static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semde static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) { + (void) in_isr; sem_release(sem_hdl); return true; } @@ -158,6 +159,7 @@ static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in // however osal_queue_recieve may be. therefore my assumption is that // the fifo mutex is not populated for queues used from an IRQ context //assert(!qhdl->ff.mutex); + (void) in_isr; _osal_q_lock(qhdl); bool success = tu_fifo_write(&qhdl->ff, data); From aca2320075e6cad95e7c53a68c7633585d8db7e4 Mon Sep 17 00:00:00 2001 From: noodlefighter Date: Wed, 26 May 2021 11:45:45 +0800 Subject: [PATCH 2/5] fix uac2_headset example tud_audio_rx_done_cb() is departed, replace with tud_audio_rx_done_pre_read_cb() --- examples/device/uac2_headset/src/main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/device/uac2_headset/src/main.c b/examples/device/uac2_headset/src/main.c index 57abafe6..1b6a770a 100644 --- a/examples/device/uac2_headset/src/main.c +++ b/examples/device/uac2_headset/src/main.c @@ -332,13 +332,14 @@ bool tud_audio_set_itf_cb(uint8_t rhport, tusb_control_request_t const * p_reque return true; } -bool tud_audio_rx_done_cb(uint8_t rhport, uint8_t *buffer, uint16_t buf_size) +bool tud_audio_rx_done_pre_read_cb(uint8_t rhport, uint16_t n_bytes_received, uint8_t func_id, uint8_t ep_out, uint8_t cur_alt_setting) { (void)rhport; + (void)func_id; + (void)ep_out; + (void)cur_alt_setting; - spk_data_size = buf_size; - memcpy(spk_buf, buffer, buf_size); - + spk_data_size = tud_audio_read(spk_buf, n_bytes_received); return true; } From 689d74a595f3620e60297a121f678e0e523e517e Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 26 May 2021 16:41:17 +0700 Subject: [PATCH 3/5] fix board test example build with nrf --- hw/bsp/nrf/family.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/bsp/nrf/family.c b/hw/bsp/nrf/family.c index f117fbe3..ed742daa 100644 --- a/hw/bsp/nrf/family.c +++ b/hw/bsp/nrf/family.c @@ -55,7 +55,9 @@ static nrfx_uarte_t _uart_id = NRFX_UARTE_INSTANCE(0); // We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled. extern void tusb_hal_nrf_power_event(uint32_t event); -static void power_event_handler(nrfx_power_usb_evt_t event) + +// nrf power callback, could be unused if SD is enabled or usb is disabled (board_test example) +TU_ATTR_UNUSED static void power_event_handler(nrfx_power_usb_evt_t event) { tusb_hal_nrf_power_event((uint32_t) event); } From 9fa9b678959bcf73ab87c500171f418b331e4fbf Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 26 May 2021 16:52:28 +0700 Subject: [PATCH 4/5] test separate ci workflow for msp430 --- .github/workflows/build.yml | 70 ----------------------------- .github/workflows/build_msp430.yml | 72 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/build_msp430.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 01b280fc..03ec5b3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,6 @@ name: Build on: pull_request: push: - repository_dispatch: release: types: - created @@ -193,10 +192,7 @@ jobs: board: # Alphabetical order # ESP32-S2 - - 'adafruit_feather_esp32s2' - - 'adafruit_magtag_29gray' - 'adafruit_metro_esp32s2' - - 'espressif_kaluga_1' - 'espressif_saola_1' # ESP32-S3 - 'espressif_addax_1' @@ -214,72 +210,6 @@ jobs: - name: Build run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }} - # --------------------------------------- - # Build msp430 family - # --------------------------------------- - build-msp430: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - family: - # Alphabetical order - - 'msp430' - steps: - - name: Setup Python - uses: actions/setup-python@v2 - - - name: Checkout TinyUSB - uses: actions/checkout@v2 - - - name: Checkout common submodules in lib - run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip - - - 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 - - - name: Cache Toolchain - uses: actions/cache@v2 - id: cache-toolchain - with: - path: ~/cache/ - key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }} - - - name: Install Toolchain - if: steps.cache-toolchain.outputs.cache-hit != 'true' - run: | - mkdir -p ~/cache/toolchain - wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2 - tar -C ~/cache/toolchain -xaf toolchain.tar.bz2 - - - name: Set Toolchain Path - run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` - - - name: Build - run: python3 tools/build_family.py ${{ matrix.family }} - - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.family }}-tinyusb-examples - path: _bin/ - - - name: Create Release Asset - if: ${{ github.event_name == 'release' }} - run: | - cd _bin/ - zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ github.event_name == 'release' }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_content_type: application/zip - # --------------------------------------- # Build Renesas family # --------------------------------------- diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml new file mode 100644 index 00000000..4ae18c4b --- /dev/null +++ b/.github/workflows/build_msp430.yml @@ -0,0 +1,72 @@ +name: Build MSP430 + +on: + pull_request: + push: + release: + types: + - created + +jobs: + build-msp430: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + family: + # Alphabetical order + - 'msp430' + steps: + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Checkout TinyUSB + uses: actions/checkout@v2 + + - name: Checkout common submodules in lib + run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip + + - 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 + + - name: Cache Toolchain + uses: actions/cache@v2 + id: cache-toolchain + with: + path: ~/cache/ + key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }} + + - name: Install Toolchain + if: steps.cache-toolchain.outputs.cache-hit != 'true' + run: | + mkdir -p ~/cache/toolchain + wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2 + tar -C ~/cache/toolchain -xaf toolchain.tar.bz2 + + - name: Set Toolchain Path + run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` + + - name: Build + run: python3 tools/build_family.py ${{ matrix.family }} + + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.family }}-tinyusb-examples + path: _bin/ + + - name: Create Release Asset + if: ${{ github.event_name == 'release' }} + run: | + cd _bin/ + zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * + + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ github.event_name == 'release' }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip + asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip + asset_content_type: application/zip From f8e9c6ddbb29292c1aef93a3797752e3815c8b88 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 26 May 2021 17:12:26 +0700 Subject: [PATCH 5/5] separate ci workflow, remove artifact & release upload --- .github/workflows/build.yml | 188 +--------------------------- .github/workflows/build_esp.yml | 35 ++++++ .github/workflows/build_msp430.yml | 22 ---- .github/workflows/build_renesas.yml | 51 ++++++++ .github/workflows/build_riscv.yml | 50 ++++++++ 5 files changed, 138 insertions(+), 208 deletions(-) create mode 100644 .github/workflows/build_esp.yml create mode 100644 .github/workflows/build_renesas.yml create mode 100644 .github/workflows/build_riscv.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 03ec5b3d..0ed20b85 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build +name: Build ARM on: pull_request: @@ -93,190 +93,6 @@ jobs: - name: Build run: python3 tools/build_family.py ${{ matrix.family }} - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.family }}-tinyusb-examples - path: _bin/ - - - name: Create Release Asset - if: ${{ github.event_name == 'release' }} - run: | - cd _bin/ - zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ github.event_name == 'release' }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_content_type: application/zip - - # --------------------------------------- - # Build RISC-V family - # --------------------------------------- - build-riscv: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - family: - # Alphabetical order - - 'fomu' - steps: - - name: Setup Python - uses: actions/setup-python@v2 - - - name: Checkout TinyUSB - uses: actions/checkout@v2 - - - name: Checkout common submodules in lib - run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip - - - 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 - - - name: Cache Toolchain - uses: actions/cache@v2 - id: cache-toolchain - with: - path: ~/cache/ - key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }} - - - name: Install Toolchain - if: steps.cache-toolchain.outputs.cache-hit != 'true' - run: | - mkdir -p ~/cache/toolchain - wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz - tar -C ~/cache/toolchain -xaf toolchain.tar.gz - - - name: Set Toolchain Path - run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` - - - name: Build - run: python3 tools/build_family.py ${{ matrix.family }} - - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.family }}-tinyusb-examples - path: _bin/ - - - name: Create Release Asset - if: ${{ github.event_name == 'release' }} - run: | - cd _bin/ - zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ github.event_name == 'release' }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_content_type: application/zip - - # --------------------------------------- - # Build ESP32SX family - # --------------------------------------- - build-esp32sx: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - board: - # Alphabetical order - # ESP32-S2 - - 'adafruit_metro_esp32s2' - - 'espressif_saola_1' - # ESP32-S3 - - 'espressif_addax_1' - - steps: - - name: Setup Python - uses: actions/setup-python@v2 - - - name: Pull ESP-IDF docker - run: docker pull espressif/idf:latest - - - name: Checkout TinyUSB - uses: actions/checkout@v2 - - - name: Build - run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }} - - # --------------------------------------- - # Build Renesas family - # --------------------------------------- - build-renesas: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - family: - # Alphabetical order - - 'rx63n' - steps: - - name: Setup Python - uses: actions/setup-python@v2 - - - name: Checkout TinyUSB - uses: actions/checkout@v2 - - - name: Checkout common submodules in lib - run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip - - - 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 - - - name: Cache Toolchain - uses: actions/cache@v2 - id: cache-toolchain - with: - path: ~/cache/ - key: ${{ runner.os }}-21-03-30-${{ env.TOOLCHAIN_URL }} - - - name: Install Toolchain - if: steps.cache-toolchain.outputs.cache-hit != 'true' - run: | - mkdir -p ~/cache/toolchain/gnurx - wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.run - chmod +x toolchain.run - ./toolchain.run -p ~/cache/toolchain/gnurx -y - - - name: Set Toolchain Path - run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` - - - name: Build - run: python3 tools/build_family.py ${{ matrix.family }} - - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.family }}-tinyusb-examples - path: _bin/ - - - name: Create Release Asset - if: ${{ github.event_name == 'release' }} - run: | - cd _bin/ - zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ github.event_name == 'release' }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_content_type: application/zip - # --------------------------------------- # Build all no-family (opharned) boards # --------------------------------------- @@ -324,4 +140,4 @@ jobs: run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` - name: Build - run: python3 tools/build_board.py ${{ matrix.example }} \ No newline at end of file + run: python3 tools/build_board.py ${{ matrix.example }} diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml new file mode 100644 index 00000000..08bb4f5d --- /dev/null +++ b/.github/workflows/build_esp.yml @@ -0,0 +1,35 @@ +name: Build ESP + +on: + pull_request: + push: + release: + types: + - created + +jobs: + build-esp: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + board: + # Alphabetical order + # ESP32-S2 + - 'adafruit_metro_esp32s2' + - 'espressif_saola_1' + # ESP32-S3 + - 'espressif_addax_1' + + steps: + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Pull ESP-IDF docker + run: docker pull espressif/idf:latest + + - name: Checkout TinyUSB + uses: actions/checkout@v2 + + - name: Build + run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }} diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml index 4ae18c4b..ff2ce72c 100644 --- a/.github/workflows/build_msp430.yml +++ b/.github/workflows/build_msp430.yml @@ -48,25 +48,3 @@ jobs: - name: Build run: python3 tools/build_family.py ${{ matrix.family }} - - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.family }}-tinyusb-examples - path: _bin/ - - - name: Create Release Asset - if: ${{ github.event_name == 'release' }} - run: | - cd _bin/ - zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ github.event_name == 'release' }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip - asset_content_type: application/zip diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml new file mode 100644 index 00000000..45e0c5fd --- /dev/null +++ b/.github/workflows/build_renesas.yml @@ -0,0 +1,51 @@ +name: Build Renesas + +on: + pull_request: + push: + release: + types: + - created + +jobs: + build-rx: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + family: + # Alphabetical order + - 'rx63n' + steps: + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Checkout TinyUSB + uses: actions/checkout@v2 + + - name: Checkout common submodules in lib + run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip + + - 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 + + - name: Cache Toolchain + uses: actions/cache@v2 + id: cache-toolchain + with: + path: ~/cache/ + key: ${{ runner.os }}-21-03-30-${{ env.TOOLCHAIN_URL }} + + - name: Install Toolchain + if: steps.cache-toolchain.outputs.cache-hit != 'true' + run: | + mkdir -p ~/cache/toolchain/gnurx + wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.run + chmod +x toolchain.run + ./toolchain.run -p ~/cache/toolchain/gnurx -y + + - name: Set Toolchain Path + run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` + + - name: Build + run: python3 tools/build_family.py ${{ matrix.family }} diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml new file mode 100644 index 00000000..1e3046d2 --- /dev/null +++ b/.github/workflows/build_riscv.yml @@ -0,0 +1,50 @@ +name: Build RISC-V + +on: + pull_request: + push: + release: + types: + - created + +jobs: + build-riscv: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + family: + # Alphabetical order + - 'fomu' + steps: + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Checkout TinyUSB + uses: actions/checkout@v2 + + - name: Checkout common submodules in lib + run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip + + - 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 + + - name: Cache Toolchain + uses: actions/cache@v2 + id: cache-toolchain + with: + path: ~/cache/ + key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }} + + - name: Install Toolchain + if: steps.cache-toolchain.outputs.cache-hit != 'true' + run: | + mkdir -p ~/cache/toolchain + wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz + tar -C ~/cache/toolchain -xaf toolchain.tar.gz + + - name: Set Toolchain Path + run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` + + - name: Build + run: python3 tools/build_family.py ${{ matrix.family }}