* esp32c3-hal: Fix operations on EXTMEM peripheral Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com> * esp32c3-hal: Restore MCUboot build after moving to esp-riscv-rt Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com> * esp32c3-hal: Fix location of .data linker output section Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com> * ci: Enable MCUboot build for ESP32-C3 Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com> --------- Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
330 lines
14 KiB
YAML
330 lines
14 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Cancel any currently running workflows from the same PR, branch, or
|
|
# tag when a new workflow is triggered.
|
|
#
|
|
# https://stackoverflow.com/a/66336834
|
|
concurrency:
|
|
cancel-in-progress: true
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
|
|
jobs:
|
|
# --------------------------------------------------------------------------
|
|
# Check
|
|
|
|
esp32-hal:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: esp-rs/xtensa-toolchain@v1.5
|
|
with:
|
|
default: true
|
|
buildtargets: esp32
|
|
ldproxy: false
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
- name: build esp32-hal (no features)
|
|
run: cd esp32-hal/ && cargo build --examples
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32-hal (common features)
|
|
run: cd esp32-hal/ && cargo check --examples --features=eh1,smartled,ufmt
|
|
- name: check esp32-hal (async)
|
|
run: cd esp32-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32-hal (async, gpio)
|
|
run: cd esp32-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async
|
|
- name: check esp32-hal (async, spi)
|
|
run: cd esp32-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async
|
|
|
|
esp32c2-hal:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
target: riscv32imc-unknown-none-elf
|
|
toolchain: nightly
|
|
components: rust-src
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
# We also use this as an opportunity to verify that the examples link
|
|
# for each supported image format.
|
|
- name: build esp32c2-hal (no features)
|
|
run: cd esp32c2-hal/ && cargo build --examples
|
|
- name: build esp32c2-hal (direct-boot)
|
|
run: cd esp32c2-hal/ && cargo build --examples --features=direct-boot
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32c2-hal (common features)
|
|
run: cd esp32c2-hal/ && cargo check --examples --features=eh1,ufmt
|
|
- name: check esp32c2-hal (async, systick)
|
|
run: cd esp32c2-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick
|
|
- name: check esp32c2-hal (async, timg0)
|
|
run: cd esp32c2-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32c2-hal (async, gpio)
|
|
run: cd esp32c2-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-systick,async
|
|
- name: check esp32c2-hal (async, spi)
|
|
run: cd esp32c2-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-systick,async
|
|
|
|
esp32c3-hal:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
target: riscv32imc-unknown-none-elf
|
|
toolchain: nightly
|
|
components: rust-src
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
# We also use this as an opportunity to verify that the examples link
|
|
# for each supported image format.
|
|
- name: build esp32c3-hal (no features)
|
|
run: cd esp32c3-hal/ && cargo build --examples
|
|
- name: build esp32c3-hal (direct-boot)
|
|
run: cd esp32c3-hal/ && cargo build --examples --features=direct-boot
|
|
- name: build esp32c3-hal (mcu-boot)
|
|
run: cd esp32c3-hal/ && cargo build --examples --features=mcu-boot
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32c3-hal (common features)
|
|
run: cd esp32c3-hal/ && cargo check --examples --features=eh1,smartled,ufmt
|
|
- name: check esp32c3-hal (async, systick)
|
|
run: cd esp32c3-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick
|
|
- name: check esp32c3-hal (async, timg0)
|
|
run: cd esp32c3-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32c3-hal (async, gpio)
|
|
run: cd esp32c3-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-systick,async
|
|
- name: check esp32c3-hal (async, spi)
|
|
run: cd esp32c3-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-systick,async
|
|
|
|
esp32c6-hal:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
target: riscv32imac-unknown-none-elf
|
|
toolchain: nightly
|
|
components: rust-src
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
# We also use this as an opportunity to verify that the examples link
|
|
# for each supported image format.
|
|
- name: build esp32c6-hal (no features)
|
|
run: cd esp32c6-hal/ && cargo build --examples
|
|
- name: build esp32c6-hal (direct-boot)
|
|
run: cd esp32c6-hal/ && cargo build --examples --features=direct-boot
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32c6-hal (common features)
|
|
run: cd esp32c6-hal/ && cargo check --examples --features=eh1,smartled,ufmt
|
|
- name: check esp32c6-hal (async, systick)
|
|
run: cd esp32c6-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick
|
|
- name: check esp32c6-hal (async, timg0)
|
|
run: cd esp32c6-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32c6-hal (async, gpio)
|
|
run: cd esp32c6-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-systick,async
|
|
- name: check esp32c6-hal (async, spi)
|
|
run: cd esp32c6-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-systick,async
|
|
|
|
esp32s2-hal:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: esp-rs/xtensa-toolchain@v1.5
|
|
with:
|
|
default: true
|
|
buildtargets: esp32s2
|
|
ldproxy: false
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
- name: check esp32s2-hal (no features)
|
|
run: cd esp32s2-hal/ && cargo build --examples
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32s2-hal (common features)
|
|
run: cd esp32s2-hal/ && cargo check --examples --features=eh1,smartled,ufmt
|
|
# FIXME: `time-systick` feature disabled for now, see 'esp32s2-hal/Cargo.toml'.
|
|
# - name: check esp32s2-hal (async, systick)
|
|
# run: cd esp32s2-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick
|
|
- name: check esp32s2-hal (async, timg0)
|
|
run: cd esp32s2-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32s2-hal (async, gpio)
|
|
run: cd esp32s2-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async
|
|
- name: check esp32s2-hal (async, spi)
|
|
run: cd esp32s2-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async
|
|
|
|
esp32s3-hal:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: esp-rs/xtensa-toolchain@v1.5
|
|
with:
|
|
default: true
|
|
buildtargets: esp32s3
|
|
ldproxy: false
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Perform a full build initially to verify that the examples not only
|
|
# build, but also link successfully.
|
|
# We also use this as an opportunity to verify that the examples link
|
|
# for each supported image format.
|
|
- name: build esp32s3-hal (no features)
|
|
run: cd esp32s3-hal/ && cargo build --examples
|
|
- name: build esp32s3-hal (direct-boot)
|
|
run: cd esp32s3-hal/ && cargo build --examples --features=direct-boot
|
|
# Subsequent steps can just check the examples instead, as we're already
|
|
# confident that they link.
|
|
- name: check esp32s3-hal (common features)
|
|
run: cd esp32s3-hal/ && cargo check --examples --features=eh1,smartled,ufmt
|
|
- name: check esp32s3-hal (async, systick)
|
|
run: cd esp32s3-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick
|
|
- name: check esp32s3-hal (async, timg0)
|
|
run: cd esp32s3-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0
|
|
- name: check esp32s3-hal (async, gpio)
|
|
run: cd esp32s3-hal/ && cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async
|
|
- name: check esp32s3-hal (async, spi)
|
|
run: cd esp32s3-hal/ && cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async
|
|
# --------------------------------------------------------------------------
|
|
# MSRV
|
|
|
|
msrv-riscv:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
target: riscv32imc-unknown-none-elf, riscv32imac-unknown-none-elf
|
|
toolchain: "1.65.0"
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Verify the MSRV for all RISC-V chips.
|
|
- name: msrv (esp32c2-hal)
|
|
run: cd esp32c2-hal/ && cargo check --features=eh1,ufmt
|
|
- name: msrv (esp32c3-hal)
|
|
run: cd esp32c3-hal/ && cargo check --features=eh1,ufmt,smartled
|
|
- name: msrv (esp32c6-hal)
|
|
run: cd esp32c6-hal/ && cargo check --features=eh1,ufmt,smartled
|
|
|
|
msrv-xtensa:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: esp-rs/xtensa-toolchain@v1.5
|
|
with:
|
|
ldproxy: false
|
|
version: "1.65.0"
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Verify the MSRV for all Xtensa chips.
|
|
- name: msrv (esp32-hal)
|
|
run: cd esp32-hal/ && cargo check --features=eh1,ufmt,smartled
|
|
- name: msrv (esp32s2-hal)
|
|
run: cd esp32s2-hal/ && cargo check --features=eh1,ufmt,smartled
|
|
- name: msrv (esp32s3-hal)
|
|
run: cd esp32s3-hal/ && cargo check --features=eh1,ufmt,smartled
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Lint
|
|
|
|
clippy-riscv:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
components: clippy
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Run clippy on all packages targeting RISC-V.
|
|
- name: clippy (esp32c2-hal)
|
|
run: cargo +stable clippy --manifest-path=esp32c2-hal/Cargo.toml -- --no-deps
|
|
- name: clippy (esp32c3-hal)
|
|
run: cargo +stable clippy --manifest-path=esp32c3-hal/Cargo.toml -- --no-deps
|
|
- name: clippy (esp32c6-hal)
|
|
run: cargo +stable clippy --manifest-path=esp32c6-hal/Cargo.toml -- --no-deps
|
|
|
|
clippy-xtensa:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: esp-rs/xtensa-toolchain@v1.5
|
|
with:
|
|
ldproxy: false
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Run clippy on all packages targeting Xtensa.
|
|
#
|
|
# The ESP32-S2 requires some additional information in order for the
|
|
# atomic emulation crate to build.
|
|
- name: clippy (esp32-hal)
|
|
run: cargo +esp clippy --manifest-path=esp32-hal/Cargo.toml -- --no-deps
|
|
- name: clippy (esp32s2-hal)
|
|
run: cargo +esp clippy --manifest-path=esp32s2-hal/Cargo.toml --target=xtensa-esp32s2-none-elf -Zbuild-std=core -- --no-deps
|
|
- name: clippy (esp32s3-hal)
|
|
run: cargo +esp clippy --manifest-path=esp32s3-hal/Cargo.toml -- --no-deps
|
|
|
|
rustfmt:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
# Some of the items in 'rustfmt.toml' require the nightly release
|
|
# channel, so we must use this channel for the formatting checks
|
|
# to succeed.
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
components: rustfmt
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
# Check the formatting of all packages.
|
|
- name: rustfmt (esp-hal-common)
|
|
run: cargo fmt --all --manifest-path=esp-hal-common/Cargo.toml -- --check
|
|
- name: rustfmt (esp-hal-procmacros)
|
|
run: cargo fmt --all --manifest-path=esp-hal-procmacros/Cargo.toml -- --check
|
|
- name: rustfmt (esp32-hal)
|
|
run: cargo fmt --all --manifest-path=esp32-hal/Cargo.toml -- --check
|
|
- name: rustfmt (esp32c2-hal)
|
|
run: cargo fmt --all --manifest-path=esp32c2-hal/Cargo.toml -- --check
|
|
- name: rustfmt (esp32c3-hal)
|
|
run: cargo fmt --all --manifest-path=esp32c3-hal/Cargo.toml -- --check
|
|
- name: rustfmt (esp32c6-hal)
|
|
run: cargo fmt --all --manifest-path=esp32c6-hal/Cargo.toml -- --check
|
|
- name: rustfmt (esp32s2-hal)
|
|
run: cargo fmt --all --manifest-path=esp32s2-hal/Cargo.toml -- --check
|
|
- name: rustfmt (esp32s3-hal)
|
|
run: cargo fmt --all --manifest-path=esp32s3-hal/Cargo.toml -- --check |