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.
- :file:`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
- :file:`boards`
- Board related code and configuration files.
- :file:`doc`
- Zephyr technical documentation source files and tools used to generate the http://zephyrproject.org/doc web content.
- :file:`drivers`
- Device driver code.
- :file:`dts`
- Device tree source (.dts) files used to describe non-discoverable board-specific hardware details previously hard coded in the OS source code.
- :file:`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.
- :file:`include`
- Include files for all public APIs, except those defined under :file:`lib`.
- :file:`kernel`
- Architecture-independent kernel code.
- :file:`lib`
- Library code, including the minimal standard C library.
- :file:`misc`
- Miscellaneous code that doesn't belong to any of the other top-level directories.
- :file:`samples`
- Sample applications that demonstrate the use of Zephyr features.
- :file:`scripts`
- Various programs and other files used to build and test Zephyr applications.
- :file:`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
- :file:`tests`
- Test code and benchmarks for Zephyr features.