Просмотр исходного кода

Merge branch 'master' into xmos-jmccarthy-master

hathach 4 лет назад
Родитель
Сommit
dbef50f8ff

+ 2 - 256
.github/workflows/build.yml

@@ -1,9 +1,8 @@
-name: Build
+name: Build ARM
 
 on:
   pull_request:
   push:
-  repository_dispatch:
   release:
     types:
       - created
@@ -94,259 +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_feather_esp32s2'
-        - 'adafruit_magtag_29gray'
-        - 'adafruit_metro_esp32s2'
-        - 'espressif_kaluga_1'
-        - '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 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
-  # ---------------------------------------
-  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
   # ---------------------------------------
@@ -394,4 +140,4 @@ jobs:
       run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
 
     - name: Build
-      run: python3 tools/build_board.py ${{ matrix.example }}
+      run: python3 tools/build_board.py ${{ matrix.example }}

+ 35 - 0
.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 }}

+ 50 - 0
.github/workflows/build_msp430.yml

@@ -0,0 +1,50 @@
+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 }}

+ 51 - 0
.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 }}

+ 50 - 0
.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 }}

+ 5 - 4
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;
 }
 

+ 3 - 1
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)

+ 8 - 1
hw/bsp/nrf/family.c

@@ -55,6 +55,13 @@ 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);
 
+
+// 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);
+}
+
 void board_init(void)
 {
   // stop LF clock just in case we jump from application without reset
@@ -121,7 +128,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();

+ 2 - 0
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;

+ 2 - 0
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);