Skip to content

Add support for esp32 network driver scanning for access points #4305

Add support for esp32 network driver scanning for access points

Add support for esp32 network driver scanning for access points #4305

Workflow file for this run

#
# Copyright 2022 Paul Guyot <pguyot@kallisys.net>
#
# SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
#
name: STM32 Build
on:
push:
paths:
- '.github/workflows/stm32-build.yaml'
- 'CMakeLists.txt'
- 'CMakeModules/**'
- 'src/platforms/stm32/**'
- 'src/libAtomVM/**'
- 'libs/**'
pull_request:
paths:
- '.github/workflows/stm32-build.yaml'
- 'CMakeLists.txt'
- 'CMakeModules/**'
- 'src/platforms/stm32/**'
- 'src/libAtomVM/**'
- 'libs/**'
concurrency:
group: ${{ github.workflow }}-${{ github.ref != 'refs/heads/main' && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
stm32:
runs-on: ubuntu-24.04
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
device:
- stm32f407vgt6
- stm32f411ceu6
- stm32f429zit6
- stm32h743vit6
- stm32h743zit6
- stm32u585ait6q
- stm32wb55rg
- stm32h562rgt6
- stm32f746zgt6
- stm32g474ret6
- stm32l476rgt6
- stm32l562qei6
- stm32f207zgt6
- stm32u375rgt6
- stm32g0b1ret6
include:
- device: stm32f407vgt6
max_size: 524288
renode_platform: stm32f4.repl
avm_address: "0x08080000"
- device: stm32f411ceu6
max_size: 393216
renode_platform: stm32f4.repl
avm_address: "0x08060000"
- device: stm32f429zit6
max_size: 524288
- device: stm32h743vit6
max_size: 524288
renode_platform: stm32h743.repl
avm_address: "0x08080000"
- device: stm32h743zit6
max_size: 524288
- device: stm32u585ait6q
max_size: 524288
- device: stm32wb55rg
max_size: 524288
- device: stm32h562rgt6
max_size: 524288
- device: stm32f746zgt6
max_size: 524288
renode_platform: stm32f746.repl
avm_address: "0x08080000"
- device: stm32g474ret6
max_size: 393216
- device: stm32l476rgt6
max_size: 524288
- device: stm32l562qei6
max_size: 393216
renode_platform: stm32l562.repl
avm_address: "0x08060000"
- device: stm32f207zgt6
max_size: 524288
- device: stm32u375rgt6
max_size: 524288
- device: stm32g0b1ret6
max_size: 393216
renode_platform: stm32g0b1.repl
avm_address: "0x08060000"
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "28"
rebar3-version: "3.25.1"
hexpm-mirrors: |
https://builds.hex.pm
https://repo.hex.pm
https://cdn.jsdelivr.net/hex
- name: "apt update"
run: sudo apt update
- name: "Install deps"
run: sudo apt install -y cmake ninja-build gperf python3-pip && pip3 install meson
- name: "Install ARM GNU Toolchain"
run: |
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz
tar xJf arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz -C /opt
echo "/opt/arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi/bin" >> $GITHUB_PATH
- name: Checkout repo
uses: actions/checkout@v4
- name: "Build for ${{ matrix.device }}"
shell: bash
working-directory: ./src/platforms/stm32/
run: |
set -euo pipefail
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/arm-toolchain.cmake -DDEVICE=${{ matrix.device }}
cmake --build .
- name: "Check firmware size for ${{ matrix.device }}"
shell: bash
working-directory: ./src/platforms/stm32/build
run: |
set -euo pipefail
ELF="AtomVM-${{ matrix.device }}.elf"
SIZES=$(arm-none-eabi-size "$ELF" | tail -1)
TEXT=$(echo "$SIZES" | awk '{print $1}')
DATA=$(echo "$SIZES" | awk '{print $2}')
FLASH_USED=$((TEXT + DATA))
MAX=${{ matrix.max_size }}
echo "Firmware flash usage: ${FLASH_USED} bytes ($(( FLASH_USED / 1024 )) KB)"
echo "Flash limit: ${MAX} bytes ($(( MAX / 1024 )) KB)"
if [ "$FLASH_USED" -gt "$MAX" ]; then
echo "::error::Firmware too large: ${FLASH_USED} bytes exceeds ${MAX} byte limit for ${{ matrix.device }}"
exit 1
fi
echo "OK: ${FLASH_USED} / ${MAX} bytes ($(( FLASH_USED * 100 / MAX ))% used)"
- name: Build host AtomVM and test AVMs
if: matrix.renode_platform
run: |
set -euo pipefail
mkdir build-host
cd build-host
cmake .. -G Ninja
cmake --build . -t stm32_boot_test stm32_gpio_test
- name: Install Renode
if: matrix.renode_platform
run: |
set -euo pipefail
mkdir -p renode-portable
wget -qO- https://builds.renode.io/renode-latest.linux-portable.tar.gz \
| tar -xzf - -C renode-portable --strip-components=1
echo "$PWD/renode-portable" >> $GITHUB_PATH
pip install -r renode-portable/tests/requirements.txt
- name: Run Renode boot test
if: matrix.renode_platform
run: |
LOCAL_REPL="src/platforms/stm32/tests/renode/${{ matrix.renode_platform }}"
if [ -f "$LOCAL_REPL" ]; then
PLATFORM="@$PWD/$LOCAL_REPL"
else
PLATFORM="@platforms/cpus/${{ matrix.renode_platform }}"
fi
renode-test src/platforms/stm32/tests/renode/stm32_boot_test.robot \
--variable ELF:@$PWD/src/platforms/stm32/build/AtomVM-${{ matrix.device }}.elf \
--variable AVM:@$PWD/build-host/src/platforms/stm32/tests/test_erl_sources/stm32_boot_test.avm \
--variable AVM_ADDRESS:${{ matrix.avm_address }} \
--variable PLATFORM:$PLATFORM
- name: Run Renode GPIO test
if: matrix.renode_platform
run: |
LOCAL_REPL="src/platforms/stm32/tests/renode/${{ matrix.renode_platform }}"
if [ -f "$LOCAL_REPL" ]; then
PLATFORM="@$PWD/$LOCAL_REPL"
else
PLATFORM="@platforms/cpus/${{ matrix.renode_platform }}"
fi
renode-test src/platforms/stm32/tests/renode/stm32_gpio_test.robot \
--variable ELF:@$PWD/src/platforms/stm32/build/AtomVM-${{ matrix.device }}.elf \
--variable AVM:@$PWD/build-host/src/platforms/stm32/tests/test_erl_sources/stm32_gpio_test.avm \
--variable AVM_ADDRESS:${{ matrix.avm_address }} \
--variable PLATFORM:$PLATFORM