硬件平台:正点原子阿波罗STM32F429IGT6
zephyr版本:Zephyr version 4.2.0
开发环境:wsl ubuntu 24.4
前景提要:https://blog.csdn.net/godmial/article/details/142655494
上一篇文章说的是创建好我们自己的board之后,使用zephyr仓库里的MPU6050示例来做实验,缺点就是必须要改官仓里边的代码,这是不太好的,而且,如果想要使用zephyr做项目,就必须学会搭建使用自己的工程
一.为什么必须创建自己的 Zephyr App
在使用 Zephyr RTOS 进行开发时,官方强烈推荐你在工作区中创建属于你自己的应用(app)目录,而不是直接在 Zephyr 内核代码中进行开发。这样做有多个好处:
✅ 原因一:隔离用户代码和 Zephyr 内核代码
- Zephyr 包含大量核心组件(内核、驱动、中间件等),直接修改其源码可能导致后续升级困难。
- 将用户应用代码放在独立目录下,可避免和 Zephyr 内核耦合,提高项目结构清晰度。
✅ 原因二:更好地版本控制
- 自己的 app 目录可以单独使用 Git 进行版本管理。
- 可避免 Zephyr 更新时误修改或覆盖应用代码。
✅ 原因三:支持多种板子和配置
- 独立 app 可为不同开发板设置不同的配置文件和目录结构(如
boards/、prj.conf)。 - 构建系统(west + CMake)支持灵活指定目标板和参数。
✅ 原因四:遵循官方推荐工作流
-
官方推荐 workspace 结构:
zephyrproject/ ├── zephyr/ ← Zephyr RTOS 源码 ├── modules/ ← 外部模块(可选) └── app/ ← 用户自己的应用程序 -
有助于代码管理、模块扩展和多人协作。
✅ 原因五:方便复用和迁移
- app 与 Zephyr 解耦,便于在不同项目、版本、工作区之间迁移。
- 可快速移植到其他芯片或平台,仅需调整配置而无需重写逻辑。
✅ 总结一句话:
创建自己的 app 能让 Zephyr 开发更清晰、灵活、可维护,是官方推荐的最佳实践方式。
二.创建应用
1.创建项目文件夹
cd ~/zephyrproject/
mkdir app
cd app
这里假设你的应用目录名为 app,你可按需命名。
2. 添加代码
mkdir src
cd src
touch main.c
vim main.c
main.c 示例内容:
#include <stdio.h>
#include <zephyr/kernel.h>
int main(void)
{
printk("hello world.\r\n");
return 0;
}
3.添加配置文件
返回 app/ 并创建文件:
cd ..
touch CMakeLists.txt
vim CMakeLists.txt
-
CMakeLists.txt中添加代码
cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(app LANGUAGES C) target_sources(app PRIVATE src/main.c)
touch prj.conf
touch app.overlay
-
prj.conf(可空文件,后续填写 Kconfig 设置)
-
app.overlay(可空文件,用于设备树覆盖)(blog.csdn.net)
4.编译运行
先不使用具体开发板,使用模拟器测试一下工程是否正常,在 app/ 目录下执行:
west build -b qemu_x86 -t run
示例输出:
SeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org)
Booting from ROM..
*** Booting Zephyr OS build v4.2.0-1048-g6c569c5bface ***
hello world.
参考链接
https://docs.zephyrproject.org/latest/develop/application/index.html#zephyr-workspace-app
https://blog.csdn.net/UnsicentificLLLL/article/details/132401326
---创建一个独立的应用工程&spm=1001.2101.3001.5002&articleId=149907618&d=1&t=3&u=f945d6f2951b4707937ac06dc0e624a6)
360

被折叠的 条评论
为什么被折叠?



