Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 36 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@ jobs:
build-arm-nucleo:
name: Build ST Nucleo-F401RE (ARM Cortex-M4)
runs-on: ubuntu-24.04

env:
# Pinned deliberately, as the runner image is: a toolchain upgrade should
# be a reviewable commit rather than something that changes underneath the
# targets. Kept in step with eclipse-threadx/threadx ci_cortex_m.yml, which
# pins the same release for the Cortex-M ports.
# Releases: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
GCC_VERSION: 14.3.rel1
GCC_TARGET: arm-none-eabi

steps:
- name: Checkout Repository
uses: actions/checkout@v4
Expand All @@ -116,13 +126,33 @@ jobs:
sudo apt-get update
sudo apt-get install -y cmake ninja-build

- name: Install Pinned Arm GNU Toolchain 14.2.Rel1
- name: Cache the Arm GNU toolchain
id: cache-arm-gcc
uses: actions/cache@v4
with:
path: toolchain
key: arm-gnu-toolchain-${{ env.GCC_VERSION }}-x86_64-${{ env.GCC_TARGET }}

- name: Install the Arm GNU toolchain
if: steps.cache-arm-gcc.outputs.cache-hit != 'true'
run: |
set -eu
base="https://developer.arm.com/-/media/Files/downloads/gnu/${GCC_VERSION}/binrel"
archive="arm-gnu-toolchain-${GCC_VERSION}-x86_64-${GCC_TARGET}.tar.xz"
mkdir -p toolchain && cd toolchain
curl -fsSLO "$base/$archive"
curl -fsSLO "$base/$archive.sha256asc"
sha256sum -c "$archive.sha256asc"
tar xf "$archive"
rm -f "$archive"

- name: Put the toolchain on PATH
run: |
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz
mkdir -p $HOME/arm-gcc
tar -xJf arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz -C $HOME/arm-gcc --strip-components=1
rm arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz
echo "$HOME/arm-gcc/bin" >> $GITHUB_PATH
set -eu
echo "$GITHUB_WORKSPACE/toolchain/arm-gnu-toolchain-${GCC_VERSION}-x86_64-${GCC_TARGET}/bin" >> "$GITHUB_PATH"

- name: Report the toolchain version
run: ${{ env.GCC_TARGET }}-gcc --version

- name: Build NUCLEO-F401RE Demo
run: |
Expand Down
4 changes: 2 additions & 2 deletions targets/STMicroelectronics/NUCLEO_F401RE/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,8 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 14.2.Rel1 (GCC 14.2.1), the version pinned by CI
- **Static ROM usage**: 22068 Bytes (4.21% of 512 KB Flash), including the startup self-tests
- **Toolchain**: Arm GNU Toolchain 14.3.Rel1 (GCC 14.3.1), the version pinned by CI and by the ThreadX Cortex-M ports
- **Static ROM usage**: 22064 Bytes (4.21% of 512 KB Flash), including the startup self-tests
- **Static RAM usage**: 6000 Bytes (6.10% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE
Expand Down
Loading