Skip to content

Commit d0e36f2

Browse files
authored
Merge pull request #22 from loopj/slcp
Drop gecko-sdk-cmake, port to libjoybus and libwavebird
2 parents 7c2c7b4 + 37084d2 commit d0e36f2

74 files changed

Lines changed: 506 additions & 5387 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 111 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,157 @@
11
name: Build and Release
22

33
on:
4-
workflow_dispatch:
54
push:
6-
branches:
7-
- main
8-
paths:
9-
- "bootloader/**"
10-
- "firmware/**"
11-
tags:
12-
- "v*"
13-
14-
env:
15-
REPO_PATH: ${{ github.workspace }}/wavephoenix
16-
BOOTLOADER_PATH: ${{ github.workspace }}/wavephoenix/bootloader
17-
FIRMWARE_PATH: ${{ github.workspace }}/wavephoenix/firmware
18-
GECKO_SDK_PATH: ${{ github.workspace }}/gecko_sdk
19-
SIMPLICITY_COMMANDER_PATH: ${{ github.workspace }}/commander
20-
SLC_CLI_PATH: ${{ github.workspace }}/slc_cli
21-
ARM_TOOLCHAIN_PATH: ${{ github.workspace }}/arm-toolchain
22-
GECKO_SDK_VERSION: v4.4.5
23-
ARM_GNU_TOOLCHAIN_VERSION: 12.2.rel1
5+
branches: [main]
6+
tags: ["v*"]
7+
paths: ["bootloader/**", "firmware/**"]
8+
pull_request:
9+
branches: [main]
10+
workflow_dispatch:
2411

2512
jobs:
2613
build:
2714
runs-on: ubuntu-latest
15+
16+
env:
17+
ARM_GNU_TOOLCHAIN_VERSION: 13.3.rel1
18+
SIMPLICITY_SDK_VERSION: v2025.6.2
19+
2820
strategy:
2921
matrix:
30-
board:
31-
- efr32xg22e
32-
- rf-bm-bg22c3
22+
board: ["efr32xg22e", "rf-bm-bg22c3"]
23+
3324
steps:
25+
# Checkout repository and submodules
26+
- name: Checkout repository
27+
uses: actions/checkout@v6
28+
with:
29+
submodules: true
30+
31+
# Set up dependencies
3432
- name: Install build dependencies
3533
run: |
36-
export DEBIAN_FRONTEND=noninteractive
3734
sudo apt-get update
38-
sudo apt-get -o Dpkg::Options::="--path-exclude=/usr/share/man/*" -o Dpkg::Options::="--path-exclude=/usr/share/doc/*" -o Dpkg::Options::="--path-exclude=/usr/share/locale*" install -y cmake ninja-build
39-
40-
- name: Set up Python
41-
uses: actions/setup-python@v5
42-
with:
43-
python-version: "3.10"
44-
45-
- name: Install Python packages
46-
run: pip install jinja2 pyyaml numpy scipy
35+
sudo apt-get install -y cmake ninja-build unzip wget
4736
4837
- name: Set up Java
4938
uses: actions/setup-java@v4
5039
with:
5140
distribution: "corretto"
5241
java-version: "21"
5342

43+
# Setup ARM GNU Toolchain
5444
- name: Cache ARM GNU Toolchain
5545
id: cache-arm-toolchain
5646
uses: actions/cache@v4
5747
with:
58-
path: ${{ env.ARM_TOOLCHAIN_PATH }}
48+
path: arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi
5949
key: arm-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}
6050

6151
- name: Install ARM GNU Toolchain
6252
if: steps.cache-arm-toolchain.outputs.cache-hit != 'true'
6353
run: |
64-
mkdir -p ${{ env.ARM_TOOLCHAIN_PATH }}
65-
curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/${{ env.ARM_GNU_TOOLCHAIN_VERSION }}/binrel/arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz" | tar -xJ -C "${{ env.ARM_TOOLCHAIN_PATH }}" --strip-components=1
54+
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/${{ env.ARM_GNU_TOOLCHAIN_VERSION }}/binrel/arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz
55+
tar xf arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz
6656
6757
- name: Add ARM GNU Toolchain to PATH
68-
run: echo "${{ env.ARM_TOOLCHAIN_PATH }}/bin" >> $GITHUB_PATH
58+
run: |
59+
echo "$PWD/arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi/bin" >> $GITHUB_PATH
6960
70-
- name: Checkout repository
71-
uses: actions/checkout@v4
61+
# Setup Simplicity SDK
62+
- name: Cache Simplicity SDK
63+
id: cache-simplicity-sdk
64+
uses: actions/cache@v4
7265
with:
73-
path: ${{ env.REPO_PATH }}
66+
path: simplicity_sdk
67+
key: simplicity-sdk-${{ env.SIMPLICITY_SDK_VERSION }}
68+
69+
- name: Install Simplicity SDK
70+
if: steps.cache-simplicity-sdk.outputs.cache-hit != 'true'
71+
run: |
72+
wget -q https://github.com/SiliconLabs/simplicity_sdk/releases/download/${{ env.SIMPLICITY_SDK_VERSION }}/simplicity-sdk.zip
73+
unzip -q simplicity-sdk.zip -d simplicity_sdk
7474
75-
- name: Cache Gecko SDK
76-
id: cache-gecko-sdk
75+
# Setup SLC-CLI
76+
- name: Cache SLC-CLI
77+
id: cache-slc-cli
7778
uses: actions/cache@v4
7879
with:
79-
path: ${{ env.GECKO_SDK_PATH }}
80-
key: gecko-sdk-${{ env.GECKO_SDK_VERSION }}
80+
path: slc_cli
81+
key: slc-cli-${{ runner.os }}
82+
83+
- name: Install SLC-CLI
84+
if: steps.cache-slc-cli.outputs.cache-hit != 'true'
85+
run: |
86+
wget -q https://www.silabs.com/documents/login/software/slc_cli_linux.zip
87+
unzip -q slc_cli_linux.zip
88+
chmod +x slc_cli/slc
89+
90+
- name: Add SLC-CLI to PATH
91+
run: |
92+
echo "$PWD/slc_cli" >> $GITHUB_PATH
8193
82-
- name: Download Gecko SDK
83-
if: steps.cache-gecko-sdk.outputs.cache-hit != 'true'
94+
- name: Configure SLC-CLI
8495
run: |
85-
wget -nv https://github.com/SiliconLabs/gecko_sdk/releases/download/${{ env.GECKO_SDK_VERSION }}/gecko-sdk.zip
86-
unzip -q gecko-sdk.zip -d ${{ env.GECKO_SDK_PATH }}
96+
slc configuration --sdk simplicity_sdk
97+
slc configuration --gcc-toolchain arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi
98+
slc signature trust --sdk simplicity_sdk
99+
100+
# Setup Simplicity Commander
101+
- name: Cache Simplicity Commander
102+
id: cache-simplicity-commander
103+
uses: actions/cache@v4
104+
with:
105+
path: commander
106+
key: simplicity-commander-${{ runner.os }}
87107

88-
- name: "Download Simplicity Commander"
108+
- name: Install Simplicity Commander
109+
if: steps.cache-simplicity-commander.outputs.cache-hit != 'true'
89110
run: |
90-
wget -nv https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip
111+
wget -q https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip
91112
unzip -q SimplicityCommander-Linux.zip
92113
tar -xf SimplicityCommander-Linux/Commander_linux_x86_64_*.tar.bz
93114
94-
- name: Download SLC-CLI
115+
- name: Add Simplicity Commander to PATH
95116
run: |
96-
wget -nv https://www.silabs.com/documents/login/software/slc_cli_linux.zip
97-
unzip -q slc_cli_linux.zip
117+
echo "$PWD/commander" >> $GITHUB_PATH
98118
99-
- name: Build bootloader
119+
# Build bootloader
120+
- name: Generate bootloader project files
121+
working-directory: bootloader
100122
run: |
101-
export ARM_GCC_DIR="${{ env.ARM_TOOLCHAIN_PATH }}"
102-
103-
cd ${{ env.BOOTLOADER_PATH }}
104-
${{ env.SLC_CLI_PATH }}/slc signature trust --sdk ${{ env.GECKO_SDK_PATH }}
105-
${{ env.SLC_CLI_PATH }}/slc generate -s ${{ env.GECKO_SDK_PATH }} -p bootloader-${{ matrix.board }}.slcp -d bootloader_project -o cmake
123+
slc generate bootloader-${{ matrix.board }}.slcp \
124+
-o cmake \
125+
-d target/${{ matrix.board }}
106126
107-
cd bootloader_project/bootloader_cmake
127+
- name: Build bootloader
128+
working-directory: bootloader/target/${{ matrix.board }}/bootloader_cmake
129+
run: |
108130
cmake --workflow --preset project
109-
cmake --preset project && cmake --build --preset default_config
131+
132+
# Build firmware
133+
- name: Generate firmware project files
134+
working-directory: firmware
135+
run: |
136+
slc generate wavephoenix.slcp \
137+
--with "${{ matrix.board }};wavephoenix" \
138+
--sdk-extensions=.,libjoybus,libwavebird \
139+
-o cmake \
140+
-d target/${{ matrix.board }}
110141
111142
- name: Build firmware
143+
working-directory: firmware/target/${{ matrix.board }}/wavephoenix_cmake
112144
run: |
113-
cd ${{ env.FIRMWARE_PATH }}
114-
cmake --preset ${{ matrix.board }} && cmake --build --preset ${{ matrix.board }}
145+
cmake --workflow --preset project
115146
116-
- name: Update trunk tag
117-
if: github.ref == 'refs/heads/main'
147+
- name: Generate firmware .gbl
148+
working-directory: firmware/target/${{ matrix.board }}/wavephoenix_cmake/build/default_config
118149
run: |
119-
cd ${{ env.REPO_PATH }}
120-
git tag -f trunk
121-
git push -f origin trunk
122-
env:
123-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
150+
commander gbl create \
151+
--app wavephoenix.s37 \
152+
wavephoenix.gbl
124153
154+
# Upload artifacts
125155
- name: Rename artifacts
126156
run: |
127157
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
@@ -130,9 +160,18 @@ jobs:
130160
VERSION="trunk"
131161
fi
132162
133-
mv ${{ env.BOOTLOADER_PATH }}/bootloader_project/bootloader_cmake/build/default_config/bootloader.hex "wavephoenix-bootloader-${VERSION}-${{ matrix.board }}.hex"
134-
mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.hex "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.hex"
135-
mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.gbl "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.gbl"
163+
mv bootloader/target/${{ matrix.board }}/bootloader_cmake/build/default_config/bootloader.hex "wavephoenix-bootloader-${VERSION}-${{ matrix.board }}.hex"
164+
mv firmware/target/${{ matrix.board }}/wavephoenix_cmake/build/default_config/wavephoenix.hex "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.hex"
165+
mv firmware/target/${{ matrix.board }}/wavephoenix_cmake/build/default_config/wavephoenix.gbl "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.gbl"
166+
167+
- name: Update trunk tag
168+
if: github.ref == 'refs/heads/main'
169+
run: |
170+
cd ${{ env.REPO_PATH }}
171+
git tag -f trunk
172+
git push -f origin trunk
173+
env:
174+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136175

137176
- name: Upload artifacts to trunk release
138177
if: github.ref == 'refs/heads/main'

.github/workflows/test.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "firmware/libwavebird"]
2+
path = firmware/libwavebird
3+
url = https://github.com/loopj/libwavebird.git
4+
[submodule "firmware/libjoybus"]
5+
path = firmware/libjoybus
6+
url = https://github.com/loopj/libjoybus.git

0 commit comments

Comments
 (0)