This repo can be used as a template and a playground for experimenting with a standalone Zephyr application.
# Create a directory for zephyr projects and switch to it
$ mkdir zephyr-projects
$ cd zephyr-projects
# Create python virtual environment there
$ python3 -m venv zephyr-venv
# Activate it
$ source zephyr-venv/bin/activate
# Install west
(zephyr-venv) $ pip install west
# Initialize workspace for the app (main branch)
(zephyr-venv) $ west init -m https://github.com/kaizoku-oh/zephyr-app-workspace --mr main app-workspace
(zephyr-venv) $ cd app-workspace
# Update Zephyr modules
(zephyr-venv) $ west update
# Install python dependencies for zephyr and mcuboot
(zephyr-venv) $ python -m pip install -r deps/zephyr/scripts/requirements.txt
(zephyr-venv) $ python -m pip install -r deps/bootloader/mcuboot/scripts/requirements.txt
# Build the bootloader (mcuboot)
(zephyr-venv) $ west build deps/bootloader/mcuboot/boot/zephyr -d deps/bootloader/mcuboot/boot/zephyr/build -b nucleo_f767zi
# Flash the bootloader (mcuboot)
(zephyr-venv) $ west flash -d deps/bootloader/mcuboot/boot/zephyr/build
# Build the app
(zephyr-venv) $ west build app -d app/build -b nucleo_f767zi
# Flash the app
(zephyr-venv) $ west flash -d app/build
# Copy vscode workspace file from the app to the outer workspace directory
(zephyr-venv) $ cp app/linux.code-workspace .
# Open vscode workspace
(zephyr-venv) $ code linux.code-workspace
Once vscode is open you can run your workspace tasks.
Memory region | Used Size | Region Size | %age Used |
---|---|---|---|
FLASH | 186206 B | 768 KB | 23.68% |
RAM | 57120 B | 384 KB | 14.53% |
QSPI | 0 GB | 256 MB | 0.00% |
DTCM | 12544 B | 128 KB | 9.57% |
IDT_LIST | 0 GB | 2 KB | 0.00% |
Memory region | Used Size | Region Size | %age Used |
---|---|---|---|
FLASH | 32706 B | 64 KB | 49.91% |
RAM | 24320 B | 384 KB | 6.18% |
QSPI | 0 GB | 256 MB | 0.00% |
DTCM | 0 B | 128 KB | 0.00% |
IDT_LIST | 0 GB | 2 KB | 0.00% |
-
Blink board LED
-
Shell over UART
-
Fix vscode launch with cortex-debug
-
Add multithreading code
-
Add die temp sensor class
-
Add Github CI workflow
-
Add GitHub badges to readme
-
Enable C++20
-
Add lambda callback to Serial class
-
Add a simple Network manager class
-
Add NVS Storage class
-
Add HTTP client class
-
Add an IoT app that reads die temperature, store it in NVS, retrieve it, format it then send it
-
Add vscode dev container environment
-
Build project with MCUBoot
-
Run app in Renode
-
Add configurable vscode tasks
-
Integrate Renode + robot in the CI workflow
-
Solve the Shared Callback Registration problem in the Network class
-
Add native simulator to vscode build task
-
Add a script to download and setup the project (intellisense, structure, venv...)
-
Add static code analysis with CodeChecker
-
Add coverage testing with gcov
-
Add unit tests using Ztest and run them using Twister
-
Add integration tests
-
Add HIL tests using GitHub local runner
-
Add application events manager using zbus
-
Automate updating the README.md Build footprint table automatically by running a post build
-
Add debouncing mechanism to Button class
-
Add OTA update example
-
Add lambda callback to Button class
-
Use the active object design pattern
-
Use an event driven state machine using the SMF OS service and the message queue kernel object
-
Add Local class for managing local time and geo-location
-
Add MQTT client class
-
Add TCP class
-
Add an out-of-tree driver
This project is generated from the zephyr-vscode-example template by Jonathan Beri.
It is following the Golioth recommended way to structure a zephyr app using manifest files, more on this in this blog post.