فهرست منبع

move fomu to its own family, update ci with build risv

hathach 5 سال پیش
والد
کامیت
b066fdc2c6
5فایلهای تغییر یافته به همراه153 افزوده شده و 51 حذف شده
  1. 106 44
      .github/workflows/build.yml
  2. 3 1
      examples/make.mk
  3. 40 0
      hw/bsp/fomu/boards/fomu/board.h
  4. 1 0
      hw/bsp/fomu/boards/fomu/board.mk
  5. 3 6
      hw/bsp/fomu/family.mk

+ 106 - 44
.github/workflows/build.yml

@@ -28,8 +28,10 @@ jobs:
         cd test
         ceedling test:all
 
-  # build all example for each family
-  build-family:
+  # ---------------------------------------
+  # Build ARM family
+  # ---------------------------------------
+  build-arm:
     runs-on: ubuntu-latest
     strategy:
       fail-fast: false
@@ -90,32 +92,17 @@ jobs:
         asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
         asset_content_type: application/zip
 
-  # Build all no-family (opharned) boards
-  build-board:
+  # ---------------------------------------
+  # Build RISC-V family
+  # ---------------------------------------
+  build-riscv:
     runs-on: ubuntu-latest
     strategy:
       fail-fast: false
       matrix:
-        example:
+        family:
         # Alphabetical order
-        - 'device/audio_test'
-        - 'device/board_test'
-        - 'device/cdc_dual_ports'
-        - 'device/cdc_msc'
-        - 'device/cdc_msc_freertos'
-        - 'device/dfu_runtime'
-        - 'device/hid_composite'
-        - 'device/hid_composite_freertos'
-        - 'device/hid_generic_inout'
-        - 'device/hid_multiple_interface'
-        - 'device/midi_test'
-        - 'device/msc_dual_lun'
-        - 'device/net_lwip_webserver'
-        - 'device/uac2_headset'
-        - 'device/usbtmc'
-        - 'device/webusb_serial'
-        - 'host/cdc_msc_hid'
-
+        - 'fomu'    
     steps:
     - name: Setup Python
       uses: actions/setup-python@v2
@@ -125,22 +112,76 @@ jobs:
 
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
-      with:
-        submodules: 'true'
 
-    - name: Install Toolchains
+    - name: Checkout Submodules in lib
+      run: git submodule update --init lib
+
+    - name: Install Toolchain
       run: |
-        # ARM & RISC-V GCC from xpack
+        # RISC-V GCC from xpack
         npm install --global xpm
-        xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
         xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@latest
-        echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH
         echo `echo $HOME/.local/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/*/.content/bin` >> $GITHUB_PATH
 
     - name: Build
-      run: python3 tools/build_board.py ${{ matrix.example }}
+      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 ESP32S2 family
+  # ---------------------------------------
+  build-esp32s2:
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        board:
+        # Alphabetical order
+        - 'adafruit_feather_esp32s2'
+        - 'adafruit_magtag_29gray'
+        - 'adafruit_metro_esp32s2'
+        - 'espressif_kaluga_1'
+        - 'espressif_saola_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
+      with:
+        submodules: 'false'
+
+    - name: Build
+      run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32s2.py ${{ matrix.board }}
 
-  # build all example for each family
+  # ---------------------------------------
+  # Build msp430 family
+  # ---------------------------------------
   build-msp430:
     runs-on: ubuntu-latest
     steps:
@@ -199,32 +240,53 @@ jobs:
         asset_path: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
         asset_name: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
         asset_content_type: application/zip
-        
-  # Build ESP32S2
-  build-esp32s2:
+
+  # ---------------------------------------
+  # Build all no-family (opharned) boards
+  # ---------------------------------------
+  build-board:
     runs-on: ubuntu-latest
     strategy:
       fail-fast: false
       matrix:
-        board:
+        example:
         # Alphabetical order
-        - 'adafruit_feather_esp32s2'
-        - 'adafruit_magtag_29gray'
-        - 'adafruit_metro_esp32s2'
-        - 'espressif_kaluga_1'
-        - 'espressif_saola_1'
+        - 'device/audio_test'
+        - 'device/board_test'
+        - 'device/cdc_dual_ports'
+        - 'device/cdc_msc'
+        - 'device/cdc_msc_freertos'
+        - 'device/dfu_runtime'
+        - 'device/hid_composite'
+        - 'device/hid_composite_freertos'
+        - 'device/hid_generic_inout'
+        - 'device/hid_multiple_interface'
+        - 'device/midi_test'
+        - 'device/msc_dual_lun'
+        - 'device/net_lwip_webserver'
+        - 'device/uac2_headset'
+        - 'device/usbtmc'
+        - 'device/webusb_serial'
+        - 'host/cdc_msc_hid'
 
     steps:
     - name: Setup Python
       uses: actions/setup-python@v2
 
-    - name: Pull ESP-IDF docker
-      run: docker pull espressif/idf:latest
+    - name: Setup Node.js
+      uses: actions/setup-node@v1
 
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
       with:
-        submodules: 'false'
+        submodules: 'true'
+
+    - name: Install Toolchains
+      run: |
+        # ARM GCC from xpack
+        npm install --global xpm
+        xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
+        echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH
 
     - name: Build
-      run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32s2.py ${{ matrix.board }}
+      run: python3 tools/build_board.py ${{ matrix.example }}

+ 3 - 1
examples/make.mk

@@ -19,8 +19,10 @@ __check_defined = \
 #-------------- Select the board to build for. ------------
 
 # Board without family
-BOARD_PATH := $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/$(BOARD)))
+ifneq ($(wildcard $(TOP)/hw/bsp/$(BOARD)/board.mk),)
+BOARD_PATH := hw/bsp/$(BOARD)
 FAMILY :=
+endif
 
 # Board within family
 ifeq ($(BOARD_PATH),)

+ 40 - 0
hw/bsp/fomu/boards/fomu/board.h

@@ -0,0 +1,40 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2021, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+// Place holder only
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif

+ 1 - 0
hw/bsp/fomu/boards/fomu/board.mk

@@ -0,0 +1 @@
+# place holder

+ 3 - 6
hw/bsp/fomu/board.mk → hw/bsp/fomu/family.mk

@@ -8,16 +8,13 @@ CFLAGS += \
 # Cross Compiler for RISC-V
 CROSS_COMPILE = riscv-none-embed-
 
-MCU_DIR = hw/mcu/fomu
-BSP_DIR = hw/bsp/fomu
-
 # All source paths should be relative to the top level.
-LD_FILE = hw/bsp/$(BOARD)/fomu.ld
+LD_FILE = $(FAMILY_PATH)/fomu.ld
 
-SRC_S += hw/bsp/$(BOARD)/crt0-vexriscv.S
+SRC_S += $(FAMILY_PATH)/crt0-vexriscv.S
 
 INC += \
-	$(TOP)/$(BSP_DIR)/include
+	$(TOP)/$(FAMILY_PATH)/include
 
 # For TinyUSB port source
 VENDOR = valentyusb