framework = zephyr
The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.
For more detailed information please visit vendor site.
Warning
Zephyr framework currently requires Python 3.4 or later.
Zephyr framework requires an unusual project structure because most of the framework
configuration is performed by the native for Zephyr build system called CMake
.
Note
Since PlatformIO is able to generate CMake-based projects for certain IDEs, Zephyr-related
files are moved to a separate folder in order to avoid conflicts between project files.
That requires users to specify relative paths to source files in CMakeLists.txt
.
A typical PlatformIO project for Zephyr framework must have the following structure:
project_dir
├── include
├── src
│ └── main.c
├── zephyr
│ ├── prj.conf
│ └── CMakeLists.txt
└── platformio.ini
Besides files related to PlatformIO project, there is an additional folder zephyr
that contains Zephyr-specific files CMakeLists.txt
and prj.conf
:
CMakeLists.txt
file enables features supported by Zephyr’s build system, e.g.
board-specific kernel configuration files. A typical CMakeLists.txt
file has the
following content:
# Boilerplate code, which pulls in the Zephyr build system.
cmake_minimum_required(VERSION 3.13.1)
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(my_zephyr_app)
# Add your source file to the "app" target. This must come after the boilerplate
# code, which defines the target. Note relative path to source file
target_sources(app PRIVATE ../src/main.c)
The files specified in target_sources
are used ONLY for generating build
configurations, but it’s highly recommended to specify all application source files in
order to keep the project compatible with the usual Zephyr workflow.
Due to the current limitations of CMake file-based API, there is no way to generate build
configuration for source files written in various programming languages if they are not
specified in target_sources
command. If your project contains libraries written
in languages that differ from the language used for the main application you need to
create an empty file with desired extension (e.g. *.cpp
for C++
) in order to
force CMake generate build configuration for this language.
Note
Build configuration generated for source files specified in target_sources
is
also used as the base build environment for project sources (including libraries).
prj.conf
file sets application-specific values for one or more kernel configuration
options. These application settings are merged with board-specific settings to produce a
kernel configuration.
In case your CMakeLists.txt
relies on using generate_inc_*
functions that are
used for generating and compressing individual files (for example certificates for secure
connections) you need to configure your PlatformIO project accordingly using the
following structure:
[env:myenv]
platform = ...
board = ...
framework = zephyr
board_build.embed_files =
# files to be embedded
src/apps-cert.der
src/apps-key.der
Where apps-cert.der
and apps-key.der
are the files you want to embed to your
project at the compile time.
Note
PlatformIO automatically installs several default modules used with Zephyr framework including modules that implement silicon vendor Hardware Abstraction Layers (HALs).
Zephyr modules are externally maintained packages that allow using well-established and mature code created by third party developers.
These modules contain either a single module.yml
file or CMakeLists.txt
and
Kconfig
files that describe how to build and configure them. You can specify paths
to additional directories with source code, Kconfig, etc. using ZEPHYR_EXTRA_MODULES
at the top of your project’s CMakeLists.txt
file, for example:
# Additional modules
set(ZEPHYR_EXTRA_MODULES "path/to-zephyr-custom-module" [...])
# Boilerplate code, which pulls in the Zephyr build system.
cmake_minimum_required(VERSION 3.13.1)
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(my_zephyr_app)
# Add your source file to the "app" target. This must come after
# the boilerplate code, which defines the target.
target_sources(app PRIVATE ../src/main.c)
Since the build may not work correctly if the full path to sources is greater than 250
characters (see CMAKE_OBJECT_PATH_MAX
) it might be a good idea to keep modules close
to the project configuration files (e.g. in zephyr
folder) in form of a git submodule.
Warning
Make sure the ZEPHYR_EXTRA_MODULES
variable is set before including the boilerplate
file, as shown above.
At the moment several limitations are present:
The minimum supported version of Python is 3.4
No whitespace characters allowed in project paths.
OpenThread module is not supported
PIO Unified Debugger - “1-click” solution for debugging with a zero configuration.
Supported debugging tools are listed in “Debug” column. For more detailed information, please scroll table by horizontal. You can switch between debugging Tools & Debug Probes using debug_tool option in “platformio.ini” (Project Configuration File).
Warning
You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.
Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe.
Name |
Platform |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|
STM32F412ZGT6 |
100MHz |
1MB |
256KB |
||
STM32F723IEK6 |
216MHz |
512KB |
192KB |
||
STM32F446VET6 |
168MHz |
512KB |
128KB |
||
SAMD21G18A |
48MHz |
256KB |
32KB |
||
NRF51822 |
16MHz |
256KB |
16KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
NRF52840 |
64MHz |
1MB |
256KB |
||
EFM32WG990F256 |
48MHz |
256KB |
32KB |
||
NRF52840 |
64MHz |
1MB |
256KB |
||
NRF52840 |
64MHz |
1MB |
256KB |
||
MK64FN1M0VLL12 |
120MHz |
1MB |
256KB |
||
MKL25Z128VLK4 |
48MHz |
128KB |
16KB |
||
MKW41Z512VHT4 |
48MHz |
512KB |
128KB |
||
FE310 |
320MHz |
16MB |
16KB |
||
FE310 |
320MHz |
16MB |
16KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
NRF52840 |
64MHz |
1MB |
256KB |
||
LPC54114J256BD64 |
100MHz |
256KB |
192KB |
||
NRF51822 |
32MHz |
256KB |
32KB |
||
NRF51822 |
32MHz |
256KB |
32KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
NRF52840 |
64MHz |
1MB |
256KB |
||
NRF51822 |
16MHz |
256KB |
32KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
EFM32HG322F64 |
25MHz |
64KB |
8KB |
||
STM32F411VET6 |
100MHz |
512KB |
128KB |
||
STM32F429ZIT6 |
180MHz |
2MB |
256KB |
||
STM32F469NIH6 |
180MHz |
1MB |
384KB |
||
STM32F746NGH6 |
216MHz |
1MB |
320KB |
||
STM32F769NIH6 |
216MHz |
1MB |
512KB |
||
STM32L476VGT6 |
80MHz |
1MB |
128KB |
||
STM32L496AGI6 |
80MHz |
1MB |
320KB |
||
STM32L072CZ |
32MHz |
192KB |
20KB |
||
STM32L475VGT6 |
80MHz |
1MB |
128KB |
||
STM32F072RBT6 |
48MHz |
128KB |
16KB |
||
STM32F030R8T6 |
48MHz |
64KB |
8KB |
||
STM32F070RBT6 |
48MHz |
128KB |
16KB |
||
STM32F091RCT6 |
48MHz |
256KB |
32KB |
||
STM32F103RBT6 |
72MHz |
128KB |
20KB |
||
STM32F207ZGT6 |
120MHz |
1MB |
128KB |
||
STM32F302R8T6 |
72MHz |
64KB |
16KB |
||
STM32F334R8T6 |
72MHz |
64KB |
16KB |
||
STM32F401RET6 |
84MHz |
512KB |
96KB |
||
STM32F411RET6 |
100MHz |
512KB |
128KB |
||
STM32F412ZGT6 |
100MHz |
1MB |
256KB |
||
STM32F413ZHT6 |
100MHz |
512KB |
128KB |
||
STM32F429ZIT6 |
180MHz |
2MB |
256KB |
||
STM32F746ZGT6 |
216MHz |
1MB |
320KB |
||
STM32F756ZG |
216MHz |
1MB |
320KB |
||
STM32L053R8T6 |
32MHz |
64KB |
8KB |
||
STM32L073RZ |
32MHz |
192KB |
20KB |
||
STM32L432KCU6 |
80MHz |
256KB |
64KB |
||
STM32L476RGT6 |
80MHz |
1MB |
128KB |
||
STM32L4R5ZIT6 |
120MHz |
2MB |
640KB |
||
STM32F051R8T6 |
48MHz |
64KB |
8KB |
||
STM32F303VCT6 |
72MHz |
256KB |
48KB |
||
STM32F407VGT6 |
168MHz |
1MB |
128KB |
||
STM32H747XIH6 |
400MHz |
2MB |
512KB |
||
FE310 |
320MHz |
16MB |
16KB |
||
FE310 |
320MHz |
16MB |
16KB |
||
NRF51822 |
16MHz |
128KB |
32KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
Boards listed below are compatible with PIO Unified Debugger but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.
Name |
Platform |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|
NRF52832 |
64MHz |
512KB |
64KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
SAMD21G18A |
48MHz |
256KB |
32KB |
||
SAMD21E18A |
48MHz |
256KB |
32KB |
||
AT91SAM3X8E |
84MHz |
512KB |
96KB |
||
STM32F103C8T6 |
72MHz |
64KB |
20KB |
||
STM32F103C8T6 |
72MHz |
128KB |
20KB |
||
STM32F103C8T6 |
72MHz |
64KB |
20KB |
||
STM32F103C8T6 |
72MHz |
128KB |
20KB |
||
MKW24D512 |
50MHz |
512KB |
64KB |
||
MK64FN1M0VDC12 |
120MHz |
1MB |
256KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
NRF52832 |
64MHz |
512KB |
64KB |
||
STM32G071RBT6 |
64MHz |
128KB |
36KB |
||
STM32F103RBT6 |
72MHz |
128KB |
20KB |
||
STM32F405RGT6 |
168MHz |
1MB |
192KB |
||
NRF52840 |
64MHz |
796KB |
243KB |
||
NRF52840 |
64MHz |
796KB |
243KB |
||
NRF52840 |
64MHz |
796KB |
243KB |
||
STM32F407ZGT6 |
168MHz |
1MB |
128KB |
||
STM32F407ZGT6 |
168MHz |
1MB |
128KB |
||
STM32F107VCT6 |
72MHz |
256KB |
64KB |
||
STM32F373VCT6 |
72MHz |
256KB |
32KB |
||
STM32F072VBT6 |
48MHz |
128KB |
16KB |
||
NRF51822 |
32MHz |
256KB |
32KB |
Name |
Description |
---|---|
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. |
|
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. |
|
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. |
|
The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. |
|
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. |
|
SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. |
|
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. |
|
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. |
Note
You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer
For more detailed board
information please scroll tables below by horizontal.
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
STM32F446VET6 |
168MHz |
512KB |
128KB |
||
External |
NRF52832 |
64MHz |
512KB |
64KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
NRF52832 |
64MHz |
512KB |
64KB |
||
External |
SAMD21G18A |
48MHz |
256KB |
32KB |
||
External |
SAMD21E18A |
48MHz |
256KB |
32KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
AT91SAM3X8E |
84MHz |
512KB |
96KB |
||
On-board |
SAMD21G18A |
48MHz |
256KB |
32KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF51822 |
16MHz |
256KB |
16KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF52840 |
64MHz |
1MB |
256KB |
||
On-board |
NRF52840 |
64MHz |
1MB |
256KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
MK64FN1M0VLL12 |
120MHz |
1MB |
256KB |
||
On-board |
MKL25Z128VLK4 |
48MHz |
128KB |
16KB |
||
External |
MKW24D512 |
50MHz |
512KB |
64KB |
||
On-board |
MKW41Z512VHT4 |
48MHz |
512KB |
128KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
STM32F103C8T6 |
72MHz |
64KB |
20KB |
||
External |
STM32F103C8T6 |
72MHz |
128KB |
20KB |
||
External |
STM32F103C8T6 |
72MHz |
64KB |
20KB |
||
External |
STM32F103C8T6 |
72MHz |
128KB |
20KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
NRF52832 |
64MHz |
512KB |
64KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF52832 |
64MHz |
512KB |
64KB |
||
On-board |
NRF52840 |
64MHz |
1MB |
256KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF52832 |
64MHz |
512KB |
64KB |
||
On-board |
NRF52840 |
64MHz |
1MB |
256KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
MK64FN1M0VDC12 |
120MHz |
1MB |
256KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
LPC54114J256BD64 |
100MHz |
256KB |
192KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
NRF52832 |
64MHz |
512KB |
64KB |
||
On-board |
NRF51822 |
32MHz |
256KB |
32KB |
||
On-board |
NRF51822 |
32MHz |
256KB |
32KB |
||
On-board |
NRF52832 |
64MHz |
512KB |
64KB |
||
On-board |
NRF52840 |
64MHz |
1MB |
256KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
STM32F103RBT6 |
72MHz |
128KB |
20KB |
||
External |
STM32F405RGT6 |
168MHz |
1MB |
192KB |
||
External |
STM32F407ZGT6 |
168MHz |
1MB |
128KB |
||
External |
STM32F407ZGT6 |
168MHz |
1MB |
128KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
External |
NRF52840 |
64MHz |
796KB |
243KB |
||
External |
NRF52840 |
64MHz |
796KB |
243KB |
||
External |
NRF52840 |
64MHz |
796KB |
243KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF51822 |
16MHz |
256KB |
32KB |
||
On-board |
NRF52832 |
64MHz |
512KB |
64KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
STM32F412ZGT6 |
100MHz |
1MB |
256KB |
||
On-board |
STM32F723IEK6 |
216MHz |
512KB |
192KB |
||
External |
STM32G071RBT6 |
64MHz |
128KB |
36KB |
||
On-board |
STM32F411VET6 |
100MHz |
512KB |
128KB |
||
On-board |
STM32F429ZIT6 |
180MHz |
2MB |
256KB |
||
On-board |
STM32F469NIH6 |
180MHz |
1MB |
384KB |
||
On-board |
STM32F746NGH6 |
216MHz |
1MB |
320KB |
||
On-board |
STM32F769NIH6 |
216MHz |
1MB |
512KB |
||
On-board |
STM32L476VGT6 |
80MHz |
1MB |
128KB |
||
On-board |
STM32L496AGI6 |
80MHz |
1MB |
320KB |
||
On-board |
STM32L072CZ |
32MHz |
192KB |
20KB |
||
On-board |
STM32L475VGT6 |
80MHz |
1MB |
128KB |
||
On-board |
STM32F072RBT6 |
48MHz |
128KB |
16KB |
||
On-board |
STM32F030R8T6 |
48MHz |
64KB |
8KB |
||
On-board |
STM32F070RBT6 |
48MHz |
128KB |
16KB |
||
On-board |
STM32F091RCT6 |
48MHz |
256KB |
32KB |
||
On-board |
STM32F103RBT6 |
72MHz |
128KB |
20KB |
||
On-board |
STM32F207ZGT6 |
120MHz |
1MB |
128KB |
||
On-board |
STM32F302R8T6 |
72MHz |
64KB |
16KB |
||
On-board |
STM32F334R8T6 |
72MHz |
64KB |
16KB |
||
On-board |
STM32F401RET6 |
84MHz |
512KB |
96KB |
||
On-board |
STM32F411RET6 |
100MHz |
512KB |
128KB |
||
On-board |
STM32F412ZGT6 |
100MHz |
1MB |
256KB |
||
On-board |
STM32F413ZHT6 |
100MHz |
512KB |
128KB |
||
On-board |
STM32F429ZIT6 |
180MHz |
2MB |
256KB |
||
On-board |
STM32F746ZGT6 |
216MHz |
1MB |
320KB |
||
On-board |
STM32F756ZG |
216MHz |
1MB |
320KB |
||
On-board |
STM32L053R8T6 |
32MHz |
64KB |
8KB |
||
On-board |
STM32L073RZ |
32MHz |
192KB |
20KB |
||
On-board |
STM32L432KCU6 |
80MHz |
256KB |
64KB |
||
On-board |
STM32L476RGT6 |
80MHz |
1MB |
128KB |
||
On-board |
STM32L4R5ZIT6 |
120MHz |
2MB |
640KB |
||
On-board |
STM32F051R8T6 |
48MHz |
64KB |
8KB |
||
On-board |
STM32F303VCT6 |
72MHz |
256KB |
48KB |
||
On-board |
STM32F407VGT6 |
168MHz |
1MB |
128KB |
||
External |
STM32F107VCT6 |
72MHz |
256KB |
64KB |
||
External |
STM32F373VCT6 |
72MHz |
256KB |
32KB |
||
External |
STM32F072VBT6 |
48MHz |
128KB |
16KB |
||
On-board |
STM32H747XIH6 |
400MHz |
2MB |
512KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
FE310 |
320MHz |
16MB |
16KB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
EFM32WG990F256 |
48MHz |
256KB |
32KB |
||
On-board |
EFM32HG322F64 |
25MHz |
64KB |
8KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
FE310 |
320MHz |
16MB |
16KB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
NRF51822 |
16MHz |
128KB |
32KB |
||
On-board |
NRF52832 |
64MHz |
512KB |
64KB |