diff options
| author | Román Cárdenas Rodríguez <rcardenas.rod@gmail.com> | 2024-03-20 21:06:47 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-20 20:06:47 +0000 |
| commit | 4060c3def88f82d4e4f48de7137ce365167ef265 (patch) | |
| tree | f326f0687092cab2b772952b579d63d12d3d34aa /.github/workflows/build.yml | |
| parent | 22ac33a826dedacde5d3d5c0964ff072555a9b32 (diff) | |
RISC-V support over CLINT (#815)
* Rebase to master
* using interrupt_mod
* bug fixes
* fix other backends
* Add changelog
* forgot about rtic-macros
* backend-specific configuration
* core peripherals optional over macro argument
* pre_init_preprocessing binding
* CI for RISC-V (WIP)
* separation of concerns
* add targets for RISC-V examples
* remove qemu feature
* prepare examples folder
* move examples all together
* move ci out of examples
* minor changes
* add cortex-m
* new xtask: proof of concept
* fix build.yml
* feature typo
* clean rtic examples
* reproduce weird issue
* remove unsafe code in user app
* update dependencies
* allow builds on riscv32imc
* let's fix QEMU
* Update .github/workflows/build.yml
Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
* New build.rs
* removing test features
* adapt ui test to new version of clippy
* add more examples to RISC-V backend
* proper configuration of heapless for riscv32imc
* opt-out examples for riscv32imc
* point to new version of riscv-slic
* adapt new macro bindings
* adapt examples and CI to stable
* fix cortex-m CI
* Review
---------
Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
Diffstat (limited to '.github/workflows/build.yml')
| -rw-r--r-- | .github/workflows/build.yml | 150 |
1 files changed, 113 insertions, 37 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 578ca40..3a4ed8f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,9 +31,9 @@ jobs: - name: cargo xtask fmt run: cargo xtask --verbose fmt -c - # Compilation check - check: - name: check + # Compilation check (lm3s6965) + checklm3s6965: + name: check (lm3s6965) runs-on: ubuntu-22.04 strategy: matrix: @@ -62,11 +62,14 @@ jobs: - name: Cache Dependencies uses: Swatinem/rust-cache@v2 - - run: cargo xtask --deny-warnings --backend ${{ matrix.backend }} check + - run: cargo xtask --deny-warnings --platform lm3s6965 --backend ${{ matrix.backend }} check - # Clippy - clippy: - name: clippy + # Compilation check (hifive1) TODO + # checkhifive1: + + # Clippy (lm3s6965) + clippylm3s6965: + name: clippy (lm3s6965) runs-on: ubuntu-22.04 strategy: matrix: @@ -98,11 +101,14 @@ jobs: - name: Cache Dependencies uses: Swatinem/rust-cache@v2 - - run: cargo xtask --deny-warnings --backend ${{ matrix.backend }} clippy + - run: cargo xtask --deny-warnings --platform lm3s6965 --backend ${{ matrix.backend }} clippy + + # Clippy (hifive1) TODO + # clippyhifive1: - # Verify all examples, checks - checkexamples: - name: check examples + # Platform lm3s6965: verify all examples, checks + checkexampleslm3s6965: + name: check examples (lm3s6965) runs-on: ubuntu-22.04 strategy: matrix: @@ -133,44 +139,46 @@ jobs: - name: Check the examples if: ${{ matrix.backend == 'thumbv8-base' }} - run: cargo xtask --backend ${{ matrix.backend }} --exampleexclude pool example-check + run: cargo xtask --platform lm3s6965 --backend ${{ matrix.backend }} --exampleexclude pool example-check - name: Check the examples if: ${{ matrix.backend != 'thumbv8-base' }} - run: cargo xtask --backend ${{ matrix.backend }} example-check - - # Check that the usage examples build - usageexamples: - name: Build usage examples + run: cargo xtask --platform lm3s6965 --backend ${{ matrix.backend }} example-check + + # Platform hifive1: verify all examples, checks + checkexampleshifive1: + name: check examples (hifive1) runs-on: ubuntu-22.04 strategy: matrix: + backend: + - riscv32-imc-clint + - riscv32-imac-clint toolchain: - stable steps: - name: Checkout uses: actions/checkout@v4 - - name: Install rust ${{ matrix.toolchain }} + - name: Install Rust ${{ matrix.toolchain }} run: | - rustup set profile minimal rustup override set ${{ matrix.toolchain }} - - name: Configure rust target (v6, v7) + - name: Configure Rust target run: | - rustup target add thumbv7em-none-eabihf - rustup target add thumbv7m-none-eabi - rustup target add thumbv6m-none-eabi - rustup component add rust-src + rustup target add riscv32imac-unknown-none-elf + rustup target add riscv32imc-unknown-none-elf - name: Cache Dependencies uses: Swatinem/rust-cache@v2 - - - name: Install flip-link - run: cargo install flip-link + + - name: Check the examples + if: ${{ matrix.backend == 'riscv32-imc-clint' }} + run: cargo xtask --platform hifive1 --backend ${{ matrix.backend }} --exampleexclude static example-check - name: Check the examples - run: cargo xtask usage-example-build + if: ${{ matrix.backend != 'riscv32-imc-clint' }} + run: cargo xtask --platform hifive1 --backend ${{ matrix.backend }} example-check buildqemu: name: Get modern QEMU, build and store @@ -192,7 +200,7 @@ jobs: - name: Install QEMU to get dependencies run: | sudo apt update - sudo apt install -y qemu-system-arm + sudo apt install -y qemu-system-arm qemu-system-riscv32 sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build - if: ${{ steps.cache-qemu.outputs.cache-hit != 'true' }} @@ -226,9 +234,9 @@ jobs: name: qemu path: qemu.tar - # Verify the example output with run-pass tests - testexamples: - name: QEMU run + # Platform lm3s6965: verify the example output with run-pass tests + testexampleslm3s6965: + name: QEMU run (lm3s6965) needs: buildqemu runs-on: ubuntu-22.04 strategy: @@ -283,7 +291,71 @@ jobs: which qemu-system-riscv32 - name: Run-pass tests - run: cargo xtask --deny-warnings --backend ${{ matrix.backend }} qemu + run: cargo xtask --deny-warnings --platform lm3s6965 --backend ${{ matrix.backend }} qemu + + # Platform hifive1: verify the example output with run-pass tests + testexampleshifive1: + name: QEMU run (hifive1) + needs: buildqemu + runs-on: ubuntu-22.04 + strategy: + matrix: + backend: + - riscv32-imc-clint + - riscv32-imac-clint + toolchain: + - stable + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust ${{ matrix.toolchain }} + run: | + rustup set profile minimal + rustup override set ${{ matrix.toolchain }} + + - name: Configure Rust target + run: | + rustup target add riscv32imac-unknown-none-elf + rustup target add riscv32imc-unknown-none-elf + + - name: Add Rust component llvm-tools-preview + run: rustup component add llvm-tools-preview + + # Use precompiled binutils + - name: Install cargo-binutils + uses: taiki-e/install-action@v2 + with: + tool: cargo-binutils + + - name: Cache Dependencies + uses: Swatinem/rust-cache@v2 + + - name: Install QEMU to get dependencies + run: | + sudo apt update + sudo apt install -y qemu-system-riscv32 + + - name: Download built QEMU + uses: actions/download-artifact@v4 + with: + name: qemu + + - name: Extract QEMU into local path + run: tar -xf qemu.tar -C /usr/local/bin + + - name: Check which QEMU is used + run: | + which qemu-system-arm + which qemu-system-riscv32 + + - name: Run-pass tests + if: ${{ matrix.backend == 'riscv32-imc-clint' }} + run: cargo xtask --deny-warnings --platform hifive1 --backend ${{ matrix.backend }} --exampleexclude static qemu + + - name: Run-pass tests + if: ${{ matrix.backend != 'riscv32-imc-clint' }} + run: cargo xtask --deny-warnings --platform hifive1 --backend ${{ matrix.backend }} qemu # Run test suite tests: @@ -719,10 +791,14 @@ jobs: if: github.event_name == 'push' && success() needs: - formatcheck - - check - - clippy - - checkexamples - - testexamples + - checklm3s6965 + # checkhifive1 TODO + - clippylm3s6965 + # clippyhifive1 TODO + - checkexampleslm3s6965 + - checkexampleshifive1 + - testexampleslm3s6965 + - testexampleshifive1 - tests - docs - mdbook |
