# Zephyr

Configuration

  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.

Contents

- Tutorials

- Configuration

- Debugging

- Examples

- Platforms

- Boards

## Tutorials

- Zephyr and Nordic nRF52-DK: debugging, unit testing, project analysis

## Configuration

- Project Structure

- Embedding files at compile time

- Zephyr modules

- Limitations

### Project Structure

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.

### Embedding files at compile time

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.

### Zephyr modules

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.

### Limitations

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

## Debugging

PIO Unified Debugger - “1-click” solution for debugging with a zero configuration.

- Tools & Debug Probes

  - On-Board Debug Tools

  - External Debug Tools

### Tools & Debug Probes

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.

#### On-Board Debug Tools

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
--- | --- | --- | --- | --- | ---
32F412GDISCOVERY | ST STM32 | STM32F412ZGT6 | 100MHz | 1MB | 256KB
32F723EDISCOVERY | ST STM32 | STM32F723IEK6 | 216MHz | 512KB | 192KB
96Boards B96B-F446VE | ST STM32 | STM32F446VET6 | 168MHz | 512KB | 128KB
Arduino Zero (Programming/Debug Port) | Atmel SAM | SAMD21G18A | 48MHz | 256KB | 32KB
Atmel ATSAMR21-XPRO | Atmel SAM | SAMR21G18A | 48MHz | 256KB | 32KB
Atmel SAMD21-XPRO | Atmel SAM | SAMD21J18A | 48MHz | 256KB | 32KB
BBC micro:bit | Nordic nRF51 | NRF51822 | 16MHz | 256KB | 16KB
BL652 Development Kit | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
BL654 Development Kit | Nordic nRF52 | NRF52840 | 64MHz | 1MB | 256KB
EFM32WG-STK3800 Wonder Gecko | Silicon Labs EFM32 | EFM32WG990F256 | 48MHz | 256KB | 32KB
ElectronutLabs Blip | Nordic nRF52 | NRF52840 | 64MHz | 1MB | 256KB
ElectronutLabs Papyr | Nordic nRF52 | NRF52840 | 64MHz | 1MB | 256KB
Freescale Kinetis FRDM-K22F | Freescale Kinetis | MK22FN512VLH12 | 120MHz | 512KB | 128KB
Freescale Kinetis FRDM-K64F | Freescale Kinetis | MK64FN1M0VLL12 | 120MHz | 1MB | 256KB
Freescale Kinetis FRDM-K82F | Freescale Kinetis | MK82FN256VLL15 | 150MHz | 256KB | 256KB
Freescale Kinetis FRDM-KL25Z | Freescale Kinetis | MKL25Z128VLK4 | 48MHz | 128KB | 16KB
Freescale Kinetis FRDM-KW41Z | Freescale Kinetis | MKW41Z512VHT4 | 48MHz | 512KB | 128KB
HiFive1 | SiFive | FE310 | 320MHz | 16MB | 16KB
HiFive1 Rev B | SiFive | FE310 | 320MHz | 16MB | 16KB
Makerdiary nRF52832-MDK | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Makerdiary nRF52840-MDK | Nordic nRF52 | NRF52840 | 64MHz | 1MB | 256KB
NXP LPCXpresso54114 | NXP LPC | LPC54114J256BD64 | 100MHz | 256KB | 192KB
NXP i.MX RT1010 Evaluation Kit | NXP i.MX RT | MIMXRT1011DAE5A | 500MHz | 64KB | 128KB
NXP i.MX RT1015 Evaluation Kit | NXP i.MX RT | MIMXRT1015DAF5A | 500MHz | 96KB | 128KB
NXP i.MX RT1020 Evaluation Kit | NXP i.MX RT | MIMXRT1021DAG5A | 500MHz | 64MB | 256MB
NXP i.MX RT1050 Evaluation Kit | NXP i.MX RT | MIMXRT1052DVL6B | 600MHz | 64MB | 512KB
NXP i.MX RT1060 Evaluation Kit | NXP i.MX RT | MIMXRT1062DVL6A | 600MHz | 64MB | 1MB
NXP i.MX RT1064 Evaluation Kit | NXP i.MX RT | MIMXRT1064DVL6A | 600MHz | 4MB | 1MB
Nordic nRF51 Dongle (PCA10031) | Nordic nRF51 | NRF51822 | 32MHz | 256KB | 32KB
Nordic nRF51X22 Development Kit(PCA1000X) | Nordic nRF51 | NRF51822 | 32MHz | 256KB | 32KB
Nordic nRF52-DK | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Nordic nRF52840-DK | Nordic nRF52 | NRF52840 | 64MHz | 1MB | 256KB
RedBearLab BLE Nano 1.5 | Nordic nRF51 | NRF51822 | 16MHz | 256KB | 32KB
RedBearLab BLE Nano 2 | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
SLSTK3400A USB-enabled Happy Gecko | Silicon Labs EFM32 | EFM32HG322F64 | 25MHz | 64KB | 8KB
ST 32F411EDISCOVERY | ST STM32 | STM32F411VET6 | 100MHz | 512KB | 128KB
ST 32F429IDISCOVERY | ST STM32 | STM32F429ZIT6 | 180MHz | 2MB | 256KB
ST 32F469IDISCOVERY | ST STM32 | STM32F469NIH6 | 180MHz | 1MB | 384KB
ST 32F746GDISCOVERY | ST STM32 | STM32F746NGH6 | 216MHz | 1MB | 320KB
ST 32F769IDISCOVERY | ST STM32 | STM32F769NIH6 | 216MHz | 1MB | 512KB
ST 32L476GDISCOVERY | ST STM32 | STM32L476VGT6 | 80MHz | 1MB | 128KB
ST 32L496GDISCOVERY | ST STM32 | STM32L496AGI6 | 80MHz | 1MB | 320KB
ST B-L475E-IOT01A Discovery kit | ST STM32 | STM32L475VGT6 | 80MHz | 1MB | 128KB
ST DISCO-L072CZ-LRWAN1 | ST STM32 | STM32L072CZ | 32MHz | 192KB | 20KB
ST Discovery F072RB | ST STM32 | STM32F072RBT6 | 48MHz | 128KB | 16KB
ST Nucleo F030R8 | ST STM32 | STM32F030R8T6 | 48MHz | 64KB | 8KB
ST Nucleo F070RB | ST STM32 | STM32F070RBT6 | 48MHz | 128KB | 16KB
ST Nucleo F091RC | ST STM32 | STM32F091RCT6 | 48MHz | 256KB | 32KB
ST Nucleo F103RB | ST STM32 | STM32F103RBT6 | 72MHz | 128KB | 20KB
ST Nucleo F207ZG | ST STM32 | STM32F207ZGT6 | 120MHz | 1MB | 128KB
ST Nucleo F302R8 | ST STM32 | STM32F302R8T6 | 72MHz | 64KB | 16KB
ST Nucleo F334R8 | ST STM32 | STM32F334R8T6 | 72MHz | 64KB | 16KB
ST Nucleo F401RE | ST STM32 | STM32F401RET6 | 84MHz | 512KB | 96KB
ST Nucleo F411RE | ST STM32 | STM32F411RET6 | 100MHz | 512KB | 128KB
ST Nucleo F412ZG | ST STM32 | STM32F412ZGT6 | 100MHz | 1MB | 256KB
ST Nucleo F413ZH | ST STM32 | STM32F413ZHT6 | 100MHz | 512KB | 128KB
ST Nucleo F429ZI | ST STM32 | STM32F429ZIT6 | 180MHz | 2MB | 256KB
ST Nucleo F446RE | ST STM32 | STM32F446RET6 | 180MHz | 512KB | 128KB
ST Nucleo F746ZG | ST STM32 | STM32F746ZGT6 | 216MHz | 1MB | 320KB
ST Nucleo F756ZG | ST STM32 | STM32F756ZG | 216MHz | 1MB | 320KB
ST Nucleo F767ZI | ST STM32 | STM32F767ZIT6 | 216MHz | 2MB | 512KB
ST Nucleo L053R8 | ST STM32 | STM32L053R8T6 | 32MHz | 64KB | 8KB
ST Nucleo L073RZ | ST STM32 | STM32L073RZ | 32MHz | 192KB | 20KB
ST Nucleo L432KC | ST STM32 | STM32L432KCU6 | 80MHz | 256KB | 64KB
ST Nucleo L476RG | ST STM32 | STM32L476RGT6 | 80MHz | 1MB | 128KB
ST Nucleo L496ZG | ST STM32 | STM32L496ZGT6 | 80MHz | 1MB | 128KB
ST Nucleo L4R5ZI | ST STM32 | STM32L4R5ZIT6 | 120MHz | 2MB | 640KB
ST STM32F0DISCOVERY | ST STM32 | STM32F051R8T6 | 48MHz | 64KB | 8KB
ST STM32F3DISCOVERY | ST STM32 | STM32F303VCT6 | 72MHz | 256KB | 48KB
ST STM32F4DISCOVERY | ST STM32 | STM32F407VGT6 | 168MHz | 1MB | 128KB
STM32H747I-DISCO | ST STM32 | STM32H747XIH6 | 400MHz | 2MB | 512KB
SparkFun RED-V RedBoard | SiFive | FE310 | 320MHz | 16MB | 16KB
SparkFun RED-V Thing Plus | SiFive | FE310 | 320MHz | 16MB | 16KB
VNG VBLUNO51 | Nordic nRF51 | NRF51822 | 16MHz | 128KB | 32KB
VNG VBLUno52 | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB

#### External Debug Tools

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
--- | --- | --- | --- | --- | ---
96Boards Argonkey (STEVAL-MKI187V1) | ST STM32 | STM32F412CG | 100MHz | 1MB | 256KB
96Boards Neonkey | ST STM32 | STM32F411CE | 100MHz | 512KB | 128KB
96Boards Nitrogen | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Adafruit Bluefruit nRF52832 Feather | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Adafruit Feather M0 | Atmel SAM | SAMD21G18A | 48MHz | 256KB | 32KB
Adafruit Trinket M0 | Atmel SAM | SAMD21E18A | 48MHz | 256KB | 32KB
Arduino Due (Programming Port) | Atmel SAM | AT91SAM3X8E | 84MHz | 512KB | 96KB
BlackPill F103C8 | ST STM32 | STM32F103C8T6 | 72MHz | 64KB | 20KB
BlackPill F103C8 (128k) | ST STM32 | STM32F103C8T6 | 72MHz | 128KB | 20KB
BluePill F103C8 | ST STM32 | STM32F103C8T6 | 72MHz | 64KB | 20KB
BluePill F103C8 (128k) | ST STM32 | STM32F103C8T6 | 72MHz | 128KB | 20KB
Freescale Kinetis FRDM-KW24D512 | Freescale Kinetis | MKW24D512 | 50MHz | 512KB | 64KB
Hexiwear | Freescale Kinetis | MK64FN1M0VDC12 | 120MHz | 1MB | 256KB
Holyiot YJ-16019 | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Nordic Thingy:52 (nRF52-PCA20020) | Nordic nRF52 | NRF52832 | 64MHz | 512KB | 64KB
Nucleo G071RB | ST STM32 | STM32G071RBT6 | 64MHz | 128KB | 36KB
Nucleo G431RB | ST STM32 | STM32G431RBT6 | 170MHz | 128KB | 32KB
Nucleo G474RE | ST STM32 | STM32G474RET6 | 170MHz | 512KB | 128KB
OLIMEXINO-STM32 | ST STM32 | STM32F103RBT6 | 72MHz | 128KB | 20KB
Olimex STM32-P405 | ST STM32 | STM32F405RGT6 | 168MHz | 1MB | 192KB
Particle Argon | Nordic nRF52 | NRF52840 | 64MHz | 796KB | 243KB
Particle Boron | Nordic nRF52 | NRF52840 | 64MHz | 796KB | 243KB
Particle Xenon | Nordic nRF52 | NRF52840 | 64MHz | 796KB | 243KB
STEVAL-FCU001V1 Flight controller unit evaluation board | ST STM32 | STM32F401CCU6 | 84MHz | 256KB | 64KB
STM32-E407 | ST STM32 | STM32F407ZGT6 | 168MHz | 1MB | 128KB
STM32-H407 | ST STM32 | STM32F407ZGT6 | 168MHz | 1MB | 128KB
STM3210C-EVAL | ST STM32 | STM32F107VCT6 | 72MHz | 256KB | 64KB
STM32373C-EVAL | ST STM32 | STM32F373VCT6 | 72MHz | 256KB | 32KB
STM32F072-EVAL | ST STM32 | STM32F072VBT6 | 48MHz | 128KB | 16KB
Waveshare BLE400 | Nordic nRF51 | NRF51822 | 32MHz | 256KB | 32KB

## Examples

- Zephyr for Atmel SAM

- Zephyr for Freescale Kinetis

- Zephyr for Nordic nRF51

- Zephyr for Nordic nRF52

- Zephyr for NXP i.MX RT

- Zephyr for NXP LPC

- Zephyr for SiFive

- Zephyr for Silicon Labs EFM32

- Zephyr for ST STM32

## Platforms

Name | Description
--- | ---
Atmel SAM | 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 | 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.
Nordic nRF51 | 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.
Nordic nRF52 | 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.
NXP i.MX RT | The i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price.

NXP LPC

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 | 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

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.

ST STM32 | 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.

## Boards

Note

- You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer

- For more detailed `board` information please scroll the tables below by horizontally.

### 96Boards

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
96Boards Argonkey (STEVAL-MKI187V1) | ST STM32 | External | STM32F412CG | 100MHz | 1MB | 256KB
96Boards B96B-F446VE | ST STM32 | On-board | STM32F446VET6 | 168MHz | 512KB | 128KB
96Boards Neonkey | ST STM32 | External | STM32F411CE | 100MHz | 512KB | 128KB
96Boards Nitrogen | Nordic nRF52 | External | NRF52832 | 64MHz | 512KB | 64KB

### Adafruit

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Adafruit Bluefruit nRF52832 Feather | Nordic nRF52 | External | NRF52832 | 64MHz | 512KB | 64KB
Adafruit Feather M0 | Atmel SAM | External | SAMD21G18A | 48MHz | 256KB | 32KB
Adafruit Trinket M0 | Atmel SAM | External | SAMD21E18A | 48MHz | 256KB | 32KB

### Arduino

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Arduino Due (Programming Port) | Atmel SAM | External | AT91SAM3X8E | 84MHz | 512KB | 96KB
Arduino Zero (Programming/Debug Port) | Atmel SAM | On-board | SAMD21G18A | 48MHz | 256KB | 32KB

### Atmel

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Atmel ATSAMR21-XPRO | Atmel SAM | On-board | SAMR21G18A | 48MHz | 256KB | 32KB
Atmel SAMD21-XPRO | Atmel SAM | On-board | SAMD21J18A | 48MHz | 256KB | 32KB

### BBC

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
BBC micro:bit | Nordic nRF51 | On-board | NRF51822 | 16MHz | 256KB | 16KB

### ElectronutLabs

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ElectronutLabs Blip | Nordic nRF52 | On-board | NRF52840 | 64MHz | 1MB | 256KB
ElectronutLabs Papyr | Nordic nRF52 | On-board | NRF52840 | 64MHz | 1MB | 256KB

### Freescale

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Freescale Kinetis FRDM-K22F | Freescale Kinetis | On-board | MK22FN512VLH12 | 120MHz | 512KB | 128KB
Freescale Kinetis FRDM-K64F | Freescale Kinetis | On-board | MK64FN1M0VLL12 | 120MHz | 1MB | 256KB
Freescale Kinetis FRDM-K82F | Freescale Kinetis | On-board | MK82FN256VLL15 | 150MHz | 256KB | 256KB
Freescale Kinetis FRDM-KL25Z | Freescale Kinetis | On-board | MKL25Z128VLK4 | 48MHz | 128KB | 16KB
Freescale Kinetis FRDM-KW24D512 | Freescale Kinetis | External | MKW24D512 | 50MHz | 512KB | 64KB
Freescale Kinetis FRDM-KW41Z | Freescale Kinetis | On-board | MKW41Z512VHT4 | 48MHz | 512KB | 128KB

### Generic

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
BlackPill F103C8 | ST STM32 | External | STM32F103C8T6 | 72MHz | 64KB | 20KB
BlackPill F103C8 (128k) | ST STM32 | External | STM32F103C8T6 | 72MHz | 128KB | 20KB
BluePill F103C8 | ST STM32 | External | STM32F103C8T6 | 72MHz | 64KB | 20KB
BluePill F103C8 (128k) | ST STM32 | External | STM32F103C8T6 | 72MHz | 128KB | 20KB

### Holyiot

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Holyiot YJ-16019 | Nordic nRF52 | External | NRF52832 | 64MHz | 512KB | 64KB

### Laird Connectivity

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
BL652 Development Kit | Nordic nRF52 | On-board | NRF52832 | 64MHz | 512KB | 64KB
BL654 Development Kit | Nordic nRF52 | On-board | NRF52840 | 64MHz | 1MB | 256KB

### Makerdiary

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Makerdiary nRF52832-MDK | Nordic nRF52 | On-board | NRF52832 | 64MHz | 512KB | 64KB
Makerdiary nRF52840-MDK | Nordic nRF52 | On-board | NRF52840 | 64MHz | 1MB | 256KB

### MikroElektronika

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Hexiwear | Freescale Kinetis | External | MK64FN1M0VDC12 | 120MHz | 1MB | 256KB

### NXP

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
NXP LPCXpresso54114 | NXP LPC | On-board | LPC54114J256BD64 | 100MHz | 256KB | 192KB
NXP i.MX RT1010 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1011DAE5A | 500MHz | 64KB | 128KB
NXP i.MX RT1015 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1015DAF5A | 500MHz | 96KB | 128KB
NXP i.MX RT1020 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1021DAG5A | 500MHz | 64MB | 256MB
NXP i.MX RT1050 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1052DVL6B | 600MHz | 64MB | 512KB
NXP i.MX RT1060 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1062DVL6A | 600MHz | 64MB | 1MB
NXP i.MX RT1064 Evaluation Kit | NXP i.MX RT | On-board | MIMXRT1064DVL6A | 600MHz | 4MB | 1MB

### Nordic

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Nordic Thingy:52 (nRF52-PCA20020) | Nordic nRF52 | External | NRF52832 | 64MHz | 512KB | 64KB
Nordic nRF51 Dongle (PCA10031) | Nordic nRF51 | On-board | NRF51822 | 32MHz | 256KB | 32KB
Nordic nRF51X22 Development Kit(PCA1000X) | Nordic nRF51 | On-board | NRF51822 | 32MHz | 256KB | 32KB
Nordic nRF52-DK | Nordic nRF52 | On-board | NRF52832 | 64MHz | 512KB | 64KB
Nordic nRF52840-DK | Nordic nRF52 | On-board | NRF52840 | 64MHz | 1MB | 256KB

### Olimex

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
OLIMEXINO-STM32 | ST STM32 | External | STM32F103RBT6 | 72MHz | 128KB | 20KB
Olimex STM32-P405 | ST STM32 | External | STM32F405RGT6 | 168MHz | 1MB | 192KB
STM32-E407 | ST STM32 | External | STM32F407ZGT6 | 168MHz | 1MB | 128KB
STM32-H407 | ST STM32 | External | STM32F407ZGT6 | 168MHz | 1MB | 128KB

### Particle

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Particle Argon | Nordic nRF52 | External | NRF52840 | 64MHz | 796KB | 243KB
Particle Boron | Nordic nRF52 | External | NRF52840 | 64MHz | 796KB | 243KB
Particle Xenon | Nordic nRF52 | External | NRF52840 | 64MHz | 796KB | 243KB

### RedBearLab

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
RedBearLab BLE Nano 1.5 | Nordic nRF51 | On-board | NRF51822 | 16MHz | 256KB | 32KB
RedBearLab BLE Nano 2 | Nordic nRF52 | On-board | NRF52832 | 64MHz | 512KB | 64KB

### ST

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
32F412GDISCOVERY | ST STM32 | On-board | STM32F412ZGT6 | 100MHz | 1MB | 256KB
32F723EDISCOVERY | ST STM32 | On-board | STM32F723IEK6 | 216MHz | 512KB | 192KB
Nucleo G071RB | ST STM32 | External | STM32G071RBT6 | 64MHz | 128KB | 36KB
Nucleo G431RB | ST STM32 | External | STM32G431RBT6 | 170MHz | 128KB | 32KB
Nucleo G474RE | ST STM32 | External | STM32G474RET6 | 170MHz | 512KB | 128KB
ST 32F411EDISCOVERY | ST STM32 | On-board | STM32F411VET6 | 100MHz | 512KB | 128KB
ST 32F429IDISCOVERY | ST STM32 | On-board | STM32F429ZIT6 | 180MHz | 2MB | 256KB
ST 32F469IDISCOVERY | ST STM32 | On-board | STM32F469NIH6 | 180MHz | 1MB | 384KB
ST 32F746GDISCOVERY | ST STM32 | On-board | STM32F746NGH6 | 216MHz | 1MB | 320KB
ST 32F769IDISCOVERY | ST STM32 | On-board | STM32F769NIH6 | 216MHz | 1MB | 512KB
ST 32L476GDISCOVERY | ST STM32 | On-board | STM32L476VGT6 | 80MHz | 1MB | 128KB
ST 32L496GDISCOVERY | ST STM32 | On-board | STM32L496AGI6 | 80MHz | 1MB | 320KB
ST B-L475E-IOT01A Discovery kit | ST STM32 | On-board | STM32L475VGT6 | 80MHz | 1MB | 128KB
ST DISCO-L072CZ-LRWAN1 | ST STM32 | On-board | STM32L072CZ | 32MHz | 192KB | 20KB
ST Discovery F072RB | ST STM32 | On-board | STM32F072RBT6 | 48MHz | 128KB | 16KB
ST Nucleo F030R8 | ST STM32 | On-board | STM32F030R8T6 | 48MHz | 64KB | 8KB
ST Nucleo F070RB | ST STM32 | On-board | STM32F070RBT6 | 48MHz | 128KB | 16KB
ST Nucleo F091RC | ST STM32 | On-board | STM32F091RCT6 | 48MHz | 256KB | 32KB
ST Nucleo F103RB | ST STM32 | On-board | STM32F103RBT6 | 72MHz | 128KB | 20KB
ST Nucleo F207ZG | ST STM32 | On-board | STM32F207ZGT6 | 120MHz | 1MB | 128KB
ST Nucleo F302R8 | ST STM32 | On-board | STM32F302R8T6 | 72MHz | 64KB | 16KB
ST Nucleo F334R8 | ST STM32 | On-board | STM32F334R8T6 | 72MHz | 64KB | 16KB
ST Nucleo F401RE | ST STM32 | On-board | STM32F401RET6 | 84MHz | 512KB | 96KB
ST Nucleo F411RE | ST STM32 | On-board | STM32F411RET6 | 100MHz | 512KB | 128KB
ST Nucleo F412ZG | ST STM32 | On-board | STM32F412ZGT6 | 100MHz | 1MB | 256KB
ST Nucleo F413ZH | ST STM32 | On-board | STM32F413ZHT6 | 100MHz | 512KB | 128KB
ST Nucleo F429ZI | ST STM32 | On-board | STM32F429ZIT6 | 180MHz | 2MB | 256KB
ST Nucleo F446RE | ST STM32 | On-board | STM32F446RET6 | 180MHz | 512KB | 128KB
ST Nucleo F746ZG | ST STM32 | On-board | STM32F746ZGT6 | 216MHz | 1MB | 320KB
ST Nucleo F756ZG | ST STM32 | On-board | STM32F756ZG | 216MHz | 1MB | 320KB
ST Nucleo F767ZI | ST STM32 | On-board | STM32F767ZIT6 | 216MHz | 2MB | 512KB
ST Nucleo L053R8 | ST STM32 | On-board | STM32L053R8T6 | 32MHz | 64KB | 8KB
ST Nucleo L073RZ | ST STM32 | On-board | STM32L073RZ | 32MHz | 192KB | 20KB
ST Nucleo L432KC | ST STM32 | On-board | STM32L432KCU6 | 80MHz | 256KB | 64KB
ST Nucleo L476RG | ST STM32 | On-board | STM32L476RGT6 | 80MHz | 1MB | 128KB
ST Nucleo L496ZG | ST STM32 | On-board | STM32L496ZGT6 | 80MHz | 1MB | 128KB
ST Nucleo L4R5ZI | ST STM32 | On-board | STM32L4R5ZIT6 | 120MHz | 2MB | 640KB
ST STM32F0DISCOVERY | ST STM32 | On-board | STM32F051R8T6 | 48MHz | 64KB | 8KB
ST STM32F3DISCOVERY | ST STM32 | On-board | STM32F303VCT6 | 72MHz | 256KB | 48KB
ST STM32F4DISCOVERY | ST STM32 | On-board | STM32F407VGT6 | 168MHz | 1MB | 128KB
STEVAL-FCU001V1 Flight controller unit evaluation board | ST STM32 | External | STM32F401CCU6 | 84MHz | 256KB | 64KB
STM3210C-EVAL | ST STM32 | External | STM32F107VCT6 | 72MHz | 256KB | 64KB
STM32373C-EVAL | ST STM32 | External | STM32F373VCT6 | 72MHz | 256KB | 32KB
STM32F072-EVAL | ST STM32 | External | STM32F072VBT6 | 48MHz | 128KB | 16KB
STM32H747I-DISCO | ST STM32 | On-board | STM32H747XIH6 | 400MHz | 2MB | 512KB

### SiFive

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
HiFive1 | SiFive | On-board | FE310 | 320MHz | 16MB | 16KB
HiFive1 Rev B | SiFive | On-board | FE310 | 320MHz | 16MB | 16KB

### Silicon Labs

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
EFM32WG-STK3800 Wonder Gecko | Silicon Labs EFM32 | On-board | EFM32WG990F256 | 48MHz | 256KB | 32KB
SLSTK3400A USB-enabled Happy Gecko | Silicon Labs EFM32 | On-board | EFM32HG322F64 | 25MHz | 64KB | 8KB

### SparkFun

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
SparkFun RED-V RedBoard | SiFive | On-board | FE310 | 320MHz | 16MB | 16KB
SparkFun RED-V Thing Plus | SiFive | On-board | FE310 | 320MHz | 16MB | 16KB

### VNG

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
VNG VBLUNO51 | Nordic nRF51 | On-board | NRF51822 | 16MHz | 128KB | 32KB
VNG VBLUno52 | Nordic nRF52 | On-board | NRF52832 | 64MHz | 512KB | 64KB

### Waveshare

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Waveshare BLE400 | Nordic nRF51 | External | NRF51822 | 32MHz | 256KB | 32KB