【Zephyr开发系列-8】Zephyr CMake构建解析
Zephyr CMake构建解析
- 1 概述
- 1.1 配置阶段
- 1.1.1 devicetree
- 1.1.2 Kconfig
- 1.2 构建阶段
- 1.2.1 Pre-build
- 1.2.2 Intermediate binaries
- 1.2.3 Intermediate binary post-processing
- 1.2.4 Final binary 和 Post-processing
- 2 核心要点总结
1 概述
Zephyr构建过程分成配置阶段(由 CMake 驱动)和 构建阶段(由 Make 或 Ninja 驱动)。配置完成后,CMake 拥有这次构建的内部模型,并生成原生的构建脚本;Zephyr支持的生成器是 Ninja 和 Make。整个构建是从应用出发,再把 Zephyr 内核、模块、板级配置一起纳入,最后编成一个完整镜像。
1.1 配置阶段
CMake会从应用目录开始处理CMakeLists.txt,再进入Zephyr顶层和整棵构建树中的其他CMakeLists.txt,其主要输出是一套Makefiles或Ninja files;同时,CMake脚本还会处理devicetree和Kconfig。
1.1.1 devicetree
1)收集目标架构、soc、board、应用目录下的*.dts和*.dtsi;
2)用C预处理器把*.overlay合并进去,并展开*.dts、*.dtsi、*.overlay中的宏,预处理输出写到zephyr.dts.pre;
3)由gen_defines.py解析预处理结果,生成devicetree_generated.h;
4)gen_defines.py还会把最终设备树文本写到
