Subsystems
These samples demonstrate how to use various subsystems supported by Zephyr.
- Arm SiP Services on Intel Agilex SoC FPGAUse the SiP SVC subsystem to interact with the Secure Device Manager on Intel Agilex SoC FPGA.
- CMSIS-DAPImplement a custom CMSIS-DAP controller using SWDP interface driver.
- Demand pagingLeverage demand paging to deal with code bigger than available RAM.
- EDAC shellTest error detection and correction (EDAC) using shell commands.
- Non-Volatile Storage (NVS)Store and retrieve data from flash using the NVS API.
- Settings APILoad and save configuration values using the settings API.
- Task watchdogMonitor a thread using a task watchdog.
- TracingSend tracing formatted packet to the host with supported backends.
Binary Descriptor
- Binary descriptors "Hello World"Set and access binary descriptors for a basic Zephyr application.
- Binary descriptors readDefine some binary descriptors and read them.
Controller Area Network (CAN) Bus
- ISO-TP libraryUse ISO-TP library to exchange messages between two boards.
Console
- Console echoEcho an input character back to the output using the Console API.
- console_getchar()Use console_getchar() to read an input character from the console.
- console_getline()Use console_getline() to read an input line from the console.
Debug
- Debug MonitorConfigure the Debug Monitor feature on a Cortex-M processor.
- FuzzingIntegrate fuzz testing with Zephyr apps.
Display
- Character frame bufferDisplay character strings using the Character Frame Buffer (CFB).
- Character Framebuffer shell moduleUse the CFB shell module to interact with a monochrome display.
- Custom fontsGenerate and use a custom font.
- LVGL basic sampleDisplay a "Hello World" and react to user input using LVGL.
File Systems
- File system manipulationUse file system API with various filesystems and storage devices.
- Format filesystemFormat different storage devices for different file systems.
- LittleFS filesystemUse file system API over LittleFS.
- Zephyr Memory Storage (ZMS)Store and retrieve data from storage using the ZMS API.
Input
- Draw touch eventsVisualize touch events on a display.
- Input dumpPrint all input events.
Inter-Processor Communication (IPC)
- IPC service: icmsg backendSend messages between two cores using the IPC service and icmsg backend.
- IPC service: Multi-endpointUse the IPC Service with multiple endpoints.
- IPC service: static vrings backendSend messages between two cores using the IPC service and static vrings backend.
- OpenAMPSend messages between two cores using OpenAMP.
- OpenAMP using resource tableSend messages between two cores using OpenAMP and a resource table.
- RPMsg serviceSend messages between cores using RPMsg service.
Linkable Loadable Extensions (LLEXT)
- Linkable loadable extensions "module" sampleCall a function in a loadable extension module, either built-in or loaded at runtime.
- Linkable loadable extensions EDKEnable linkable loadable extension development outside the Zephyr tree using LLEXT EDK (Extension Development Kit).
- Linkable loadable extensions shell moduleManage loadable extensions using shell commands.
Logging
- BLE logging backendSend log messages over BLE using the BLE logging backend.
- Dictionary-based loggingOutput binary log data using the dictionary-based logging API.
- LoggingOutput log messages to the console using the logging subsystem.
LoRaWAN
- LoRaWAN class A deviceJoin a LoRaWAN network and send a message periodically.
- LoRaWAN FUOTAPerform a LoRaWAN firmware-upgrade over the air (FUOTA) operation.
Management
- Eclipse hawkBit Direct Device Integration APIUpdate a device using Eclipse hawkBit DDI API.
- SMP serverImplement a Simple Management Protocol (SMP) server.
- UpdateHub embedded Firmware Over-The-Air (FOTA) updatePerform Firmware Over-The-Air (FOTA) updates using UpdateHub.
Modbus
- Modbus RTU clientCommunicate with a Modbus RTU server.
- Modbus RTU serverImplement a Modbus RTU server exposing Modbus commands to control LEDs.
- Modbus TCP serverImplement a Modbus TCP server exposing Modbus commands to control LEDs.
- Modbus TCP-to-serial gatewayImplement a gateway between an Ethernet TCP-IP network and a Modbus serial line.
Portability
- Dining Philosophers (CMSIS RTOS V1 APIs)Implement a solution to the Dining Philosophers problem using CMSIS RTOS V1.
- Dining Philosophers (CMSIS RTOS V2 APIs)Implement a solution to the Dining Philosophers problem using CMSIS RTOS V2.
- Synchronization using CMSIS RTOS V1 APIsUse timers and message queues from CMSIS RTOS v1 API to synchronize threads.
- Synchronization using CMSIS RTOS V2 APIsUse timers and message queues from CMSIS RTOS v2 API to synchronize threads.
Profiling
- Perf toolSend perf samples to the host with console support
Sensing
- Sensing subsystemGet high-level sensor data in defined intervals.
Shell
- Custom Shell moduleRegister shell commands using the Shell API
- File system shellAccess a LittleFS file system partition in flash using the file system shell.
State Machine Framework
- Hierarchical State Machine Demo based on example from PSiCC2Implement an event-driven hierarchical state machine using State Machine Framework (SMF).
- SMF CalculatorCreate a simple desk calculator using the State Machine Framework.
Test suites
- Pytest shell application testingExecute pytest tests against the Zephyr shell.
USB device support
- Console over USB CDC ACMOutput "Hello World!" to the console over USB CDC ACM.
- USB Audio asynchronous explicit feedback sampleUSB Audio 2 explicit feedback sample playing audio on I2S.
- USB Audio asynchronous implicit feedback sampleUSB Audio 2 implicit feedback sample playing stereo and recording mono audio on I2S interface.
- USB Audio headsetImplement a USB Audio headset device with audio IN/OUT loopback.
- USB Audio microphone & headphonesImplement a USB Audio microphone + headphones device with audio IN/OUT loopback.
- USB CDC-ACMUse USB CDC-ACM driver to implement a serial port echo.
- USB DFU (Device Firmware Upgrade)Implement device firmware upgrade using the USB DFU class driver.
- USB HID keyboardImplement a basic HID keyboard device.
- USB HID mouseImplement a basic HID mouse device.
- USB Mass StorageExpose board's RAM or FLASH as a USB disk using USB Mass Storage driver.
- USB shellUse shell commands to interact with USB device stack.
- USB testing applicationTest USB device drivers using a loopback function.
- WebUSBReceive and echo data from a web page using WebUSB API.
- WebUSB-nextReceive and echo data from a web page using WebUSB API.
USB-C device support
- Basic USB-C SinkImplement a USB-C Power Delivery application in the form of a USB-C Sink.
- Basic USB-C SourceImplement a USB-C Power Delivery application in the form of a USB-C Source.
zbus
- BenchmarkingMeasure the time for sending 256KB from a producer to N consumers.
- Confirmed channelUse confirmed zbus channels to ensure all subscribers consume a message.
- Dynamic channelUse zbus channels with dynamically allocated messages.
- Message subscriberUse zbus message subscribers to listen to messages published to channels.
- Remote mock samplePublish to a zbus instance using UART as a bridge.
- Runtime observer registrationUse zbus' runtime observer registration to filter data generated by a producer.
- UART bridgeRedirect channel events to the host over UART.
- Work queueUse a work queue to process zbus messages in various ways.
- zbus Hello WorldMake three threads talk to each other using zbus.
- zbus Priority BoostIllustrates zbus priority boost feature with a priority inversion scenario.