Source Tree Structure

Understanding the Zephyr source tree can be helpful in locating the code associated with a particular Zephyr feature.

The Zephyr source tree provides the following top-level directories, each of which may have one or more additional levels of subdirectories which are not described here.

arch

Architecture-specific kernel and system-on-chip (SoC) code. Each supported architecture (for example, x86 and ARM) has its own subdirectory, which contains additional subdirectories for the following areas:

  • architecture-specific kernel source files
  • architecture-specific kernel include files for private APIs
  • SoC-specific code
boards
Board related code and configuration files.
doc
Zephyr technical documentation source files and tools used to generate the http://zephyrproject.org/doc web content.
drivers
Device driver code.
dts
Device tree source (.dts) files used to describe non-discoverable board-specific hardware details previously hard coded in the OS source code.
ext
Externally created code that has been integrated into Zephyr from other sources, such as hardware interface code supplied by manufacturers and cryptographic library code.
include
Include files for all public APIs, except those defined under lib.
kernel
Architecture-independent kernel code.
lib
Library code, including the minimal standard C library.
misc
Miscellaneous code that doesn’t belong to any of the other top-level directories.
samples
Sample applications that demonstrate the use of Zephyr features.
scripts
Various programs and other files used to build and test Zephyr applications.
cmake
Additional build scripts needed to build Zephyr.
subsys

Subsystems of Zephyr, including:

  • USB device stack code.
  • Networking code, including the Bluetooth stack and networking stacks.
  • File system code.
  • Bluetooth host and controller
tests
Test code and benchmarks for Zephyr features.