Architecture Features
These indicate architecture features, such as word size of the CPU, supported instruction sets and so on. All architecture features provided by a given board will always be used, e.g. an 8-bit CPU cannot just stop being an 8-bit CPU on request.
Word size
Word size of the CPU
Feature | Description |
arch_8bit | CPU has a 8-bits architecture |
arch_16bit | CPU has a 16-bits architecture |
arch_32bit | CPU has a 32-bits architecture |
arch_64bit | CPU has a 64-bits architecture |
Architecture grouping
Instruction set of the CPU
Feature | Description |
arch_arm | CPU architecture is classic ARM or Cortex M |
arch_arm7 | CPU architecture is classic ARM (ARM7) |
arch_avr8 | CPU architecture is AVR-8 |
arch_efm32 | FIXME. This is not an architecture. Use cpu_efm32 for this |
arch_esp | CPU architecture is an ESP. (Fixme: This is not an architecture) |
arch_esp_xtensa | CPU architecture is Xtensa |
arch_esp_riscv | CPU architecture is RISC-V (ESP flavor) |
arch_esp32 | CPU architecture is an ESP32. (Fixme: This is not an architecture) |
arch_esp32_xtensa | CPU architecture is Xtensa (ESP32 flavor) |
arch_esp8266 | CPU architecture is Xtensa (ESP8266 flavor) |
arch_msp430 | CPU architecture is MSP430 |
arch_native | CPU architecture is native |
arch_riscv | CPU architecture is RISC-V |
arch_nuclei | The CPU is based on a Nuclei System Technology design. Hence, RIOT is using the Nuclei Microcontroller Software Interface Standard (NMSIS) vendor independent hardware abstraction layer. |
CPU Features
These features are related to CPU capabilities or just used to indicated which CPU family is used.
CPU Capabilities
These correspond to features/capabilities provided by certain CPUs
Cortex M Specific Features
These features are only available on (some) ARM Cortex M MCUs
Feature | Description |
cpu_check_address | The cpu_check_address can be used to check if accessing a given address would cause a bus fault. |
cortexm_stack_limit | ARM Cortex-M PSPLIM/MSPLIM registers are available. |
cortexm_svc | ARM Cortex-M Supervisor Calls are available. |
cortexm_fpu | A hardware floating point unit is available. |
cortexm_mpu | A memory protection unit (MPU) is available. |
nRF Capabilities
These features are only available on (some) nordic nRF MCUs
Feature | Description |
vdd_lc_filter_reg1 | An LC filter for use with the internal DC/DC converter is present. If this is the case, the DC/DC converter is used over the LDO regulator for improved power efficiency. |
vdd_lc_filter_reg0 | The MCU supports a high voltage supply via an two-stage regulator and the board has an LC filter required for using the two-stage DC/DC converter. This enables the two-stage DC/DC converter. |
AVR-8 Specific Features
ATmega Specific Features
These features are only available on (some) ATmega MCUs.
Feature | Description |
atmega_pcint0 | Required pin-mapping for pin change interrupt on bank 0 is available. See section on pin change interrupts in Atmel ATmega CPU: common files |
atmega_pcint1 | Required pin-mapping for pin change interrupt on bank 1 is available. See section on pin change interrupts in Atmel ATmega CPU: common files |
atmega_pcint2 | Required pin-mapping for pin change interrupt on bank 2 is available. See section on pin change interrupts in Atmel ATmega CPU: common files |
atmega_pcint3 | Required pin-mapping for pin change interrupt on bank 3 is available. See section on pin change interrupts in Atmel ATmega CPU: common files |
ATxmega Specific Features
These features are only available on (some) ATxmega MCUs.
Feature | Description |
atxmega_ebi | MCU supports the external bus interface (EBI) to either extend RAM with external RAM or attach memory mapped peripherals such as (some) displays. |
EFM32 Specific Features
Feature | Description |
efm32_coretemp | Y R U not using periph_temperature for this? |
gecko_sdk_librail_nonfpu | The CPU offers librail support if the FPU is disabled. Librail is shipped as pre-compiled blobs. Thus, we have to adapt to their choice how to process floats. |
gecko_sdk_librail_fpu | The CPU offers librail support if the FPU is enabled. Librail is shipped as pre-compiled blobs. Thus, we have to adapt to their choice how to process floats. |
ESP Specific Features
These features are only available on (some) ESP MCUs.
Feature | Description |
esp_jtag | The MCU supports JTAG for programming and debugging. Enable this feature to expose the interface at the cost of having fewer pins as GPIOs available. |
esp_now | An ESP NOW-compatible radio is present. |
esp_spiffs | A Serial Peripheral Interface Flash File System can be used. |
esp_wifi | An ESP WiFi radio is present. |
esp_wifi_ap | ESP WiFi SoftAP support is present. |
esp_wifi_enterprise | The ESP WiFi interface supports WPA2 enterprise mode. |
esp_ble_esp32 | The ESP32x SoC uses the SDK Bluetooth LE library for the ESP32 variant. |
esp_ble_esp32c3 | The ESP32x SoC uses the SDK Bluetooth LE library for the ESP32-C3 or ESP32-S3 variant. |
esp_hw_counter | The used ESP32x SoC supports HW counters that can be used as timers. |
esp_rmt | The ESP32x SoC has an RMT (Remote Control Transceiver) peripheral. |
esp_rtc_timer_32k | An external 32.768 kHz crystal is connected to the ESP32x Soc on the board. |
esp_spi_ram | An external RAM is connected via the SPI interface to the ESP32x SoC on the board. |
esp_spi_oct | Octal SPI mode is used for Flash and SPI RAM. In this case additional GPIOs are used for the SPI interface and cannot be used for other purposes. |
esp_ble | An ESP32 Bluetooth LE transceiver is present. |
nordic nRF Specific Features
Feature | Description |
radio_nrf802154 | An nRF MCU with a peripheral radio that supports IEEE 802.15.4 is present. |
radio_nrfble | An nRF MCU with a peripheral radio that supports Bluetooth LE is present. |
radio_nrfmin | An nRF MCU with a peripheral radio that supports nordics proprietary link layer protocol is present. |
CPU Grouping
These are not actually features/capabilities, but just indicate to which CPU family a certain CPU belongs
Feature | Description |
cpu_native | The board is simulated by a native program running on the host |
Atmel / Microchip AVR-8 Grouping
ATmega Grouping
Feature | Description |
cpu_core_atmega | The MCU has an ATmega CPU |
cpu_atmega8 | The MCU is an ATmega8 |
cpu_atmega32u4 | The MCU is an ATmega32U4 |
cpu_atmega128rfa1 | The MCU is an ATmega128RFA1 |
cpu_atmega256rfr2 | The MCU is an ATmega256RFR2 |
cpu_atmega328p | The MCU is an ATmega328P |
cpu_atmega1281 | The MCU is an ATmega1281 |
cpu_atmega1284p | The MCU is an ATmega1284P |
cpu_atmega2560 | The MCU is an ATmega2560 |
ATxmega Grouping
Feature | Description |
cpu_core_atxmega | The MCU has an ATxmega CPU |
cpu_atxmega | The MCU is an ATxmega XYZ CPU |
ARM Cortex-M and Classic ARM Grouping
Feature | Description |
cpu_core_cortexm | The MCU has an ARM Cortex-M CPU (any family) |
cpu_stm32 | The MCU has an STM32 MCU |
Atmel / Microchip SAM Grouping
SAM0 Grouping
Feature | Description |
cpu_samd21 | The MCU has an Atmel/Microchip SAM D10/D11/D20/D21 CPU |
cpu_samd5x | The MCU has an Atmel/Microchip SAM D5x CPU |
cpu_saml1x | The MCU has an Atmel/Microchip SAM L1x CPU |
cpu_saml21 | The MCU has an Atmel/Microchip SAM L2x / L3x CPU |
SAM3 Grouping
Feature | Description |
cpu_sam3 | The MCU has an Atmel/Microchip SAM 3 CPU |
GigaDevice Semiconductor Inc Grouping
Feature | Description |
cpu_gd32v | The MCU is part of the GigaDevice GD32V family |
nordic nRF Grouping
Feature | Description |
cpu_nrf51 | The MCU has an nordic nRF51 CPU |
cpu_nrf52 | The MCU has an nordic nRF52 CPU |
cpu_nrf53 | The MCU has an nordic nRF53 CPU |
cpu_nrf9160 | The MCU has an nordic nRF9160 CPU |
NXP Grouping
Feature | Description |
cpu_kinetis | The MCU is part of the NXP Kinetis family |
cpu_lpc1768 | The MCU is an NXP LPC1768 |
cpu_lpc23xx | The MCU is part of the NXP LPC23xx classic ARM family |
cpu_qn908x | The MCU is part of the NXP QN908x family |
Nintendo Grouping
Feature | Description |
cpu_arm7tdmi_gba | The MCU of the Game Boy Advance. |
Raspberry Pi Grouping
Feature | Description |
cpu_rpx0xx | The MCU is part of the Raspberry PI RPx0xx family. |
Silicon Laboratories EFM32 Grouping
Feature | Description |
cpu_efm32 | The MCU is part of the Silicon Labs EFM32 family |
SiFive, Inc. Grouping
Feature | Description |
cpu_fe310 | The MCU is in SiFive Freedom E310 |
STMicroelectronics STM32 Grouping
Feature | Description |
cpu_stm32c0 | The MCU has an STM32 C0 MCU |
cpu_stm32f0 | The MCU has an STM32 F0 MCU |
cpu_stm32f1 | The MCU has an STM32 F1 MCU |
cpu_stm32f2 | The MCU has an STM32 F2 MCU |
cpu_stm32f3 | The MCU has an STM32 F3 MCU |
cpu_stm32f4 | The MCU has an STM32 F4 MCU |
cpu_stm32f7 | The MCU has an STM32 F7 MCU |
cpu_stm32g0 | The MCU has an STM32 G0 MCU |
cpu_stm32g4 | The MCU has an STM32 G4 MCU |
cpu_stm32l0 | The MCU has an STM32 L0 MCU |
cpu_stm32l1 | The MCU has an STM32 L1 MCU |
cpu_stm32l4 | The MCU has an STM32 L4 MCU |
cpu_stm32l5 | The MCU has an STM32 L5 MCU |
cpu_stm32mp1 | The MCU has an STM32 MP1 MCU |
cpu_stm32u5 | The MCU has an STM32 U5 MCU |
cpu_stm32wb | The MCU has an STM32 WB MCU |
cpu_stm32wl | The MCU has an STM32 WL MCU |
Texas Instruments ARM MCU Grouping
Feature | Description |
cpu_cc26x2_cc13x2 | The CPU in an TI CC26x2 or an TI CC13x2 |
cpu_cc26x0_cc13x0 | The CPU in an TI CC26x0 or an TI CC13x0 |
cpu_cc2538 | The CPU in an TI CC2538 |
cpu_lm4f120 | The CPU is an TI LM4F120 |
Expressif ESP Grouping
Feature | Description |
cpu_esp32 | The MCU is part of the ESP32 family |
cpu_esp8266 | The MCU is an ESP8266 |
Texas Instruments MSP430 MCU Grouping
Feature | Description |
cpu_msp430 | The MCU is member of the MSP430 family. |
cpu_msp430_x1xx | The MCU is member of the MSP430 x1xx family. |
cpu_msp430_f2xx_g2xx | The MCU is member of the MSP430 F2xx/G2xx family. |
Arduino Features
These features indicate that an Arduino style I/O mapping is available, in which common descriptors refer to a GPIO pin / I²C bus / SPI bus / PWM output / ADC input / etc. at a well-known location on a well-known board form factor.
Arduino I/O Mapping Features
These features indicate presence of I/O mappings (e.g. well-known preprocessor macro names such as ARDUINO_PIN_0
for a GPIO pin that is routed to pin D0
on the board.
Feature | Description |
arduino_analog | Indicates that Arduino analog pins mappings are provided. |
arduino_dac | Indicates that Arduino DAC pins mappings are provided. |
arduino_i2c | Indicates that Arduino I²C bus mappings are provided. |
arduino_pins | Indicates that Arduino digital pins mappings are provided. |
arduino_pwm | Indicates that Arduino digital pin to PWM mappings are provided. |
arduino_spi | Indicates that Arduino SPI bus mappings are provided. |
arduino_uart | Indicates that Arduino UART device mappings are provided. |
Arduino Form Factor Features
These features indicate compatibility with a specific form factor, e.g. Arduino UNO or Adafruit Feather
Feature | Description |
arduino_shield_isp | Indicates that the board is mechanically and electrically compatible with shields that mate with the ISP header for SPI connectivity. |
arduino_shield_mega | Indicates that the board is mechanically and electrically compatible with shields developed for the Arduino Mega 2560. (Note: Except the ISP header, that requires arduino_shield_isp in addition.) |
arduino_shield_nano | Indicates that the board is mechanically and electrically compatible with shields developed for the Arduino Nano. (Note: Except the ISP header, that requires arduino_shield_isp in addition.) |
arduino_shield_uno | Indicates that the board is mechanically and electrically compatible with shields developed for the Arduino Nano. (Note: Except the ISP header, that requires arduino_shield_isp in addition.) |
RAM Related Features
These features indicate presence of special RAM regions or features
Feature | Description |
backup_ram | A special portion of RAM is retained during deep sleep. Variables can be placed there by annotating them with the BACKUP_RAM attribute. |
periph_rtc_mem | The RTC peripheral provides storage memory for deep sleep. Unlike backup_ram , this memory is not mapped in the address space and requires calls to rtc_mem_read and rtc_mem_write to access. |
puf_sram | The SRAM PUF module can be used to harvest entropy from uninitialized SRAM on cold boot to seed PRNGs. |
Bluetooth Low Energy Features
The capabilities of the integrated (peripheral) BLE transceiver are modules using these features.
Feature | Description |
ble_adv_ext | Support for Bluetooth LE 5 Advertising Extension |
ble_nimble | Support for the NimBLE stack |
ble_nimble_netif | NimBLE supports the netif API, so that network stacks such as GNRC can be used on top. See GNRC netif Implementation for details. |
ble_phy_2mbit | The BLE radio supports the 2Mbit PHY mode |
ble_phy_coded | The BLE radio supports the CODED PHY mode |
Toolchain Features
These features are used to indicate which toolchains are supported, which languages they support, which libraries (e.g. picolibc, newlibc, libstdc++, etc.) are supported. Unless using BUILD_IN_DOCKER=1
, those toolchains/libraries need to be installed on the system for the given platform to actually be usable, though.
Feature | Description |
cpp | The C++ programming language is supported. Note that libstdc++ support is not implied and indicated by a separate feature. |
libstdcpp | When using C++, a libstdc++ is available. |
picolibc | The picolibc C library is available for the platform. |
newlib | The newlib C library is available for the platform. |
rust_target | The Rust target definition ("triple") is known. This is a mandatory requirement to build Rust code. |
emulator_renode | The platform is compatible with the Renode emulator. |
Peripheral Features
These features indicate presence of peripheral IP block, presence of a corresponding driver in RIOT, and any required board specific configuration needed.
Feature | Description |
periph_cpuid | The CPU has identification information available. In the best case this is a globally unique ID, in the worst case it is some calibration parameters to compensate production variance that may or may not allow telling the CPU apart from any given other. |
periph_pwm | A Pulse-Width Modulation (PWM) peripheral is present. |
periph_qdec | A Quadrature Decoder (QDEC) peripheral is present. |
periph_temperature | The MCU has a built-in temperature sensor. |
periph_vbat | Backup battery monitoring is supported |
periph_freqm | A Frequency Meter peripheral is present. |
periph_dma | A DMA peripheral is present. Enabling this feature affects the implementation of other peripheral drivers. E.g. SPI/I²C/UART/... transfers may use the DMA (possible only when transfers are longer than a certain cut-off). The main benefit is that other threads can run while the thread issuing the, say SPI transfer, is blocked until the transfer is completed. It often also speeds up longer transfers. |
periph_pm | The MCU supports power management (PM) and RIOT can make use of that. |
periph_ltdc | An LCD/TFT Display Controller (LTDC) peripheral is present. (Currently only provided by some STM32 MCUs.) |
periph_pio | A Programmable IO (PIO) is present. (Currently only RP2040) |
General-Purpose Input/Output (GPIO)
Feature | Description |
periph_gpio_fast_read | This feature is currently available on Microchip SAM0 based MCUs only. Enabling this feature reduces read latency for an increase in power consumption. It affects both the classic GPIO API driver and the GPIO LL driver. |
Pin Level Peripheral GPIO API
This is a pin-level API that caters most use cases. Most code should be using this API over GPIO LL.
Feature | Description |
periph_gpio | The classic GPIO API is implemented |
periph_gpio_irq | The classic GPIO driver supports external interrupts. |
periph_gpio_tamper_wake | This features is currently available on Microchip SAMD5x MCUs only. Enabling this features allows GPIO IRQs to wake the CPU even in deep sleep. The SAMD5x is not the only MCU that can be woken from lower power modes via GPIO, but it is currently the only MCU were this feature is configurable. |
GPIO LL API
This is a lower level GPIO API that allows port based access. It exposes a number of advanced features and lower latency GPIO access at the cost of a more complex and more frequently changing API. You should only use this if the Pin Level Peripheral GPIO API is not catering your use case well enough.
Feature | Description |
periph_gpio_ll | The GPIO LL driver is implemented for the MCU's GPIO peripheral. |
periph_gpio_ll_irq | The GPIO LL driver has IRQ support. |
periph_gpio_ll_irq_level_triggered_high | Level triggered IRQs are supported for level high. |
periph_gpio_ll_irq_level_triggered_low | Level triggered IRQs are supported for level low. |
periph_gpio_ll_irq_edge_triggered_both | Edge triggered IRQs are supported with both falling and rising edges as trigger |
periph_gpio_ll_irq_unmask | The GPIO LL driver supports unmasking interrupts without clearing pending IRQs that came in while masked. |
periph_gpio_ll_disconnect | Some or all GPIO pins can be electrically disconnected from the MCU (high impedance state) with the GPIO LL API. |
periph_gpio_ll_input_pull_down | Some or all GPIO pins can enable an internal pull down resistor when the GPIO is configured in input mode. |
periph_gpio_ll_input_pull_keep | Some or all GPIO pins can enable internal pull resistors that pull towards the current bus level (pull down when bus is low, pull up when bus is high). |
periph_gpio_ll_input_pull_up | Some or all GPIO pins can enable an internal pull up resistor when the GPIO is configured in input mode. |
periph_gpio_ll_open_drain | Some or all pins can be configured in open drain mode. |
periph_gpio_ll_open_drain_pull_up | Some or all GPIO pins can enable an internal pull up resistor when the GPIO is configured in open drain mode. |
periph_gpio_ll_open_source | Some or all pins can be configured in open source mode. |
periph_gpio_ll_open_source_pull_down | Some or all GPIO pins can enable an internal pull down resistor when the GPIO is configured in open source mode. |
periph_gpio_ll_switch_dir | The GPIO LL driver allows switching the direction between input and (push-pull) output in an efficient manner. The main use case is bit-banging bidirectional protocols when open-drain / open-source mode is not supported. Another use case is controlling GPIOs at high speed with three output states (high, low, high impedance), as e.g. needed for Charlieplexing |
Serial Interfaces
Features related to serial interfaces
UART Features
Features related to the Universal Asynchronous Receiver-Transmitter peripheral
Feature | Description |
periph_uart | An UART peripheral is present. |
periph_lpuart | A low-power UART peripheral is present. |
periph_uart_collision | The UART peripheral supports hardware collision detection. |
periph_uart_hw_fc | The UART peripheral supports hardware flow control. |
periph_uart_modecfg | The UART peripheral allows configuration to non-default modes. |
periph_uart_tx_ondemand | Indicates that the UART peripheral can enable / disable the TX line using uart_enable_tx / uart_disable_tx |
periph_uart_nonblocking | The UART peripheral allows non-blocking operations. |
periph_uart_reconfigure | The UART pins can be made available as regular GPIOS using uart_deinit_pins and be attached back to the UART peripheral using uart_init_pins |
periph_uart_rxstart_irq | The UART can issue an interrupt when the start condition detected. Use uart_rxstart_irq_configure to associate a callback with the ISR of a given UART peripheral. |
SPI Features
Features related to the Serial Peripheral Interface peripheral
Feature | Description |
periph_spi | An SPI peripheral is present. |
periph_spi_on_qspi | The QSPI peripheral can be used in SPI mode. |
periph_spi_reconfigure | The SPI pins can be made available as regular GPIOs using spi_deinit_pins and re-attached to the SPI peripheral using spi_init_pins |
periph_spi_gpio_mode | The SPI peripheral supports specifying the GPIO mode of each SPI pin upon initialization of the peripheral. |
I²C Features
Features related to the Inter-Integrated Circuit peripheral
Feature | Description |
periph_i2c | An I²C peripheral is present. |
pio_i2c | An I²C bus can be provided via the PIO peripheral. |
periph_i2c_reconfigure | The I²C pins can be made available as regular GPIOs using i2c_deinit_pins and re-attached to the I²C peripheral using i2c_init_pins |
USB Features
Features related to the Universal Serial Bus
Feature | Description |
periph_usbdev | An USB peripheral is present. |
periph_usbdev_hs | The USB peripheral supports High-Speed. |
periph_usbdev_hs_utmi | An USB high-speed peripheral with internal UTMI+ HS PHY is present. |
periph_usbdev_hs_ulpi | An USB high-speed peripheral with ULPI HS PHY is present. |
Analog Features
Features related to ADCs/DACs
Feature | Description |
periph_adc | An ADC peripheral is present. |
periph_adc_continuous | The ADC peripheral can be left on between measurements. |
periph_dac | A DAC peripheral is present. |
Integrated Connectivity
Peripheral network and communication interfaces.
Feature | Description |
periph_can | A CAN peripheral is present. |
can_rx_mailbox | CAN controller RX mailbox is supported |
periph_eth | An Ethernet peripheral is present. |
SD / MMC Card Features
Feature | Description |
periph_sdmmc | An SDIO/SD/MMC peripheral is present and used by the board. This feature shall be provided by the board configuration, if available. |
periph_sdmmc_8bit | The SDIO/SD/MMC peripheral supports the 8-bit bus width and at least one component of the board is connected with 8 data lines. This feature shall be provided by the board configuration, if available. |
periph_sdmmc_auto_clk | The SDIO/SD/MMC peripheral supports the Auto-CLK feature, i.e. the automatic activation and deactivation of the SD CLK signal when required. This feature shall be provided by the MCU if supported. |
periph_sdmmc_auto_cmd12 | The SDIO/SD/MMC peripheral supports the Auto-CMD12 feature, i.e. CMD12 is sent automatically to stop the transmission in multiple block operations. This feature shall be provided by the MCU if supported. |
periph_sdmmc_clk | The SDIO/SD/MMC peripheral has special clock functionality used by the peripheral driver. |
periph_sdmmc_hs | The SDIO/SD/MMC peripheral supports the high speed access, that is 50 MHz for SD and 52 MHz for MMC. This feature shall be provided by the MCU. |
periph_sdmmc_mmc | The SDIO/SD/MMC peripheral supports MMC/eMMCs. This feature shall be provided by the MCU. |
periph_sdmmc_sdhc | The SDIO/SD/MMC peripheral is compliant with the SD Host Controller Specification. This feature shall be provided by the MCU. |
Flash Features
Feature | Description |
periph_flashpage | A Flashpage peripheral is present. |
periph_flashpage_in_address_space | Static memory sections can fundamentally be turned into flash pages. |
periph_flashpage_pagewise | The Flashpage peripheral supports pagewise writing. |
periph_flashpage_rwee | The Flashpage peripheral is of the Read While Write. |
periph_flashpage_aux | It is possible to partition off a part of the internal flash for an auxiliary slot. |
Other Peripheral Storage Features
Feature | Description |
periph_eeprom | An EEPROM peripheral is present. |
periph_fmc | An Flexible Memory Controller (FMC) or an Flexible Static Memory Controller (FSMC) is present. It can be used to extend memory or drive display controllers. |
periph_fmc_16bit | The FMC/FSMC peripheral supports a 16-bit data bus |
periph_fmc_32bit | The FMC/FSMC peripheral supports a 32-bit data bus |
periph_fmc_sdram | A board configuration is provided to attach map the board's SDRAM into the address space using the FMC/FSMC. |
periph_fmc_nor_sram | A board configuration is provided to attach map the board's NOR flash or (P)SRAM into the address space using the FMC/FSMC. |
periph_nvm | A non-volatile memory peripheral is present. This is currently only provided by ATxmega MCUs to read the production signature which then is used as CPU ID. |
Timer Features
Features related to timers
Feature | Description |
periph_rtc | An Real Time Clock (RTC) peripheral is present. This timer works with time broken down into year, month, day, hour, minute, second. |
periph_rtc_ms | The RTC peripheral can provide sub-second timestamps. |
periph_rtt | An Real Time Timer (RTT) (a.k.a. Real Time Counter) peripheral is present. This timer is similar to periph_timer , except for using a different API (for no reason), being low power, slower ticking, and typically less affected by clock drift. |
periph_rtt_set_counter | The RTT peripheral implements rtt_set_counter |
periph_rtt_overflow | The RTT provides an overflow callback. |
periph_wdt | A Watchdog Timer (WDT) peripheral is present. |
periph_wdt_cb | The WDT peripheral allows setting a callback function to be called before the reboot is actually triggered. |
periph_wdt_warning_period | By setting CONFIG_WDT_WARNING_PERIOD the time when the WDT callback is triggered can be set. It specifies how many milliseconds before the reboot the callback should be executed. |
High Frequency Timers
Features related to high frequency timers, a.k.a. periph_timer
Feature | Description |
periph_timer | A high frequency timer peripheral is present. |
periph_timer_periodic | The Timer peripheral allows setting periodic timeouts in addition to the mandatory one-shot timeouts. |
periph_timer_poll | The Timer peripheral allows polling if a one-shot timer channel has already been expired using timer_poll_channel to allow high accuracy busy waiting. |
periph_timer_query_freqs | The timer driver supports querying supported frequencies. |
PTP Timers
These features are related to the hardware requirements to implement the Precision Time Protocol.
Feature | Description |
periph_ptp | A PTP clock is present. The clock must have nanoseconds as unit and be at least 64 bit wide. |
periph_ptp_speed_adjustment | The PTP clock speed can be adjusted. This can be used for clock drift correction and synchronization without "jumping" to the new network time, but rather pace faster/slow for some time until the clocks are back in sync. |
periph_ptp_timer | The PTP clock can be used as timer (so that (absolute) timeouts can be set on the clock). |
periph_ptp_txrx_timestamps | The PTP clock can provide exact time stamps of the reception and transmission of frames (typically received at the peripheral Ethernet interface). |
Platform Specific
Things specific to a single MCU family / MCU vendor
Feature | Description |
board_bat_voltage | Measures battery voltage based on ADC sampling. |
periph_ics | An NXP Kinetis Internal Clock Source Controller (ICS peripheral) is present. |
periph_mcg | An Kinetis Multipurpose Clock Generator (MCG peripheral) is present. |
periph_mcg_lite | An Kinetis Multipurpose Clock Generator (MCG peripheral) is present in the lite version. |
periph_coretimer | A RISC-V CLINT timer is available and usable via the High Speed timer API. The CLINT only supports running at the RTC clock, typically 32.678 kHz, though. |
periph_pmp | A RISC-V physical memory protection (PMP) peripheral is present. (Similar to ARM's MPU) |
periph_clic | A RISC-V Core-local Interrupt Controller (CLIC) peripheral is present. |
periph_plic | A RISC-V Platform-local Interrupt Controller (PLIC) peripheral is present. |
Cryptographic Features
Hardware acceleration for cryptographic primitives, hardware random number generators, and other features useful for cryptography. Please keep in mind that some of the cryptographic primitives provided by the hardware have not aged well in terms of security. They may still be nifty for use cases other than security, though.
Feature | Description |
periph_cryptocell_310 | A cryptocell peripheral is present. |
periph_hash_md5 | MD5 hardware acceleration present. |
periph_hash_sha_1 | SHA-1 hardware acceleration present. |
periph_hash_sha_224 | SHA-224 hardware acceleration present. |
periph_hash_sha_256 | SHA-256 hardware acceleration present. |
periph_hash_sha_384 | SHA-384 hardware acceleration present. |
periph_hash_sha_512 | SHA-512 hardware acceleration present. |
periph_hash_sha_512_224 | SHA-512/224 hardware acceleration present. |
periph_hash_sha_512_256 | SHA-512/256 hardware acceleration present. |
periph_hash_sha3_256 | SHA-3/256 hardware acceleration present. |
periph_hash_sha3_384 | SHA-3/384 hardware acceleration present. |
periph_hash_sha3_512 | SHA-3/512 hardware acceleration present. |
periph_hmac_sha_256 | HMAC SHA-256 hardware acceleration present. |
periph_hwrng | A Hardware Random Number Generator (HWRNG) peripheral is present. |
periph_cipher_aes_128_cbc | AES 128 CBC hardware acceleration present |
periph_cipher_chacha20 | ChaCha20 hardware acceleration present |
periph_ecc_p192r1 | ECC P192R1 hardware acceleration peripheral present. |
periph_ecc_p256r1 | ECC P256R1 hardware acceleration peripheral present. |
periph_ecc_ed25519 | ECC Edwards25519 hardware acceleration peripheral present. |
Other Features
Features that did not fit in any category
Feature | Description |
dbgpin | The platform provides the necessary initialization hooks for the dbgpin module. |
no_idle_thread | The MCU can idle without an idle thread |
riotboot | The riotboot bootloader is supported. |
ssp | Stack Smashing Protection is supported. |
tinyusb_device | The TinyUSB network stack is supported and can be selected with USEPKG += tinyusb . |
bootloader_stm32 | The MCU has a STM32 bootloader in ROM that can be used for flashing. |
Board Features
These features indicate features of the board
Feature | Description |
netif | The board has a network interface |
netif_ethernet | The board has an Ethernet network interface |
netif_openwsn | The board has a network interface suitable for OpenWSN |
highlevel_stdio | A high-level stdio method (such as CDC ACM) is used. This requires a running thread and set-up and will not print during a crash. |
motor_driver | A motor_driver configuration is present. |
sdcard_spi | An SD-Card SPI configuration is provided. |
STM32L496G Discovery Board Features
Features available and selectable on the stm32l496-disco
board only
Feature | Description |
periph_spi_stmod | By default, solder bridges SB6, SB7, SB8 are closed and USART1 is connected to the Pmod/STMmod+ connector. If these solder bridges are open and solder bridges SB4, SB5 and SB6 are closed instead, SPI2 is connected to the STMmod+/Pmod connector. Request this feature to use SPI2 with this board configuration. |