概述
zephyr项目是基于Cmake构建的。
构建系统以应用程序为中心,要求基于Zephyr的应用程序启动构建内核源树。应用程序构建控制应用程序
和Zephyr本身
的配置和构建过程,将它们汇编成单个二进制文件。
- Zephyr的基本目录包含了Zephyr自己的源代码、内核配置选项及其构建定义。
- 应用程序目录中的文件将Zephyr与应用程序联系起来。此目录包含所有特定于应用程序的文件,如配置选项和源代码。
最简单的应用程序具有以下内容:
CMakeLists.txt
文件:此文件告诉构建系统在哪里可以找到应用程序源文件,并将应用程序目录与Zephyr的CMake构建系统链接。此链接提供了Zephyr构建系统支持的功能,例如:板子特定内核配置文件、在真实或模拟硬件上运行和调试编译二进制文件的能力等。prj.conf
内核配置文件:应用程序通常提供Kconfig配置文件,用于指定一个或多个内核配置选项的应用程序特定值。这些应用程序设置与特定于板的设置合并,以生成内核配置。src目录
包含应用程序源代码文件:应用程序通常提供一个或多个应用程序特定的文件,用C或C++语言编写。定义应用程序之后你可以使用
Cmake
编译应用程序,编译时默认会在当前目录下产生一个build
构建目录。这称为生成目录。应用构建文件总是生成在生成目录
中。
zephyr的源码结构
CMakeLists.txt
文件:CMake构建系统的顶级文件,包含构建Zephyr所需的大量逻辑。Kconfig
文件:顶层Kconfig文件,其中指定配置文件Kconfig.zephyr
也位于顶层目录中。west.yml
文件:west
工具配置文件,列出由west
工具管理的外部存储库。arch
目录:包含特定于架构的文件,例如:ARM
或X86
。soc
目录:SoC相关代码和配置文件。boards
目录:板子相关代码和配置文件。doc
目录:Zephyr技术文档源文件。drivers
目录:设备驱动程序代码。dts
目录:用于描述特定硬件详细信息的设备树源文件。include
目录:包括所有公共API的头文件,但不包含库里的头文件。kernel
目录:架构独立的内核源代码。lib
目录:库代码,包括最低标准C库。misc
目录:不属于任何其他顶级目录的杂项代码。samples
目录:演示使用zephyr功能的示例应用程序。scripts
目录:用于构建和测试Zephyr应用程序的各种脚本文件。cmake
目录:构建Zephyr所需的其他cmake
脚本。subsys
目录:zephyr子系统,包括:- USB设备堆栈代码。
- 网络代码,包括蓝牙协议栈和网络协议栈。
- 文件系统代码。
- 蓝牙主机和控制器代码。
tests
目录:Zephyr功能的测试代码。share
目录:其他架构独立数据。目前包含Zephyr CMake package
。