跳转至

新增sample示例

本文介绍如何在现有板仓下新增 sample 类型的单点功能示例,包括目录创建、app.defconfigCMakeLists.txt 编写及编译验证。

适用场景

sample 用于组件能力的单点功能演示(如单个驱动点亮、单模块调用)。适用于在现有板仓下新增一个功能示例,无需修改板入口或主仓的 CMakeLists.txt,示例由 apps/<BOARD>/CMakeLists.txt 中的 add_app_targets 宏自动发现。

前置条件:已完成环境搭建与 repo 安装配置。

步骤

1. 创建示例目录

mkdir -p apps/<BOARD>/samples/<APP_NAME>

2. 编写 app.defconfig

在示例根目录下创建 app.defconfig,字段见附录 — app.defconfig 字段清单

参考样例:

3. 编写 CMakeLists.txt

示例按复杂度通常分为以下四种模式,以下仅供参考,根据项目示例参考创建文件。

模式 必备文件 说明
自带 CMakeLists.txt,add_executable app.defconfig + CMakeLists.txt + 源文件 应用自管编译选项、链接库、安装目录
自带 CMakeLists.txt,调 SDK 内置 Makefile app.defconfig + CMakeLists.txt(含 add_custom_target 编译 SDK mpp/sample/ 下的工程,拷贝产物到 _build/bin/
多模块 + SDK patch app.defconfig + CMakeLists.txt + source/ + patch/ add_subdirectory(source) / add_subdirectory(patch) 分模块
纯自动发现(无自定义 CMakeLists.txt) app.defconfig + *.c add_app_targets 宏自动建目标、链接组件库

注意

  • 复杂多模块示例的源码用 source/ 目录,单文件示例将 .c 直接放在示例根目录。
  • 依赖 SDK 改动时,在示例的 patch/ 下放置 apply_patches.sh 和可选的 bsp_make_opts
  • 引入新的第三方开源软件时,按 《添加第三方开源组件文档》 完成合规登记。
  • 产品核心功能案例(reference)的新增流程见 新增 reference 示例

4. 编译

bash scripts/build.sh build --target <BOARD> samples <APP_NAME>

5. 验证

  • 编译成功后,确认 _build/bin/ 下生成了示例的二进制文件;
  • 若示例配置了 CONFIG_BUILD_INSTALL=y,烧录镜像生成在 _build/install/image/<VARIANT>/(见编译产物落点)。

附录

app.defconfig 字段清单

app.defconfig 是 Kconfig 的差异集,未列出的项一律取 Kconfig 中的默认值。 以下为部分常用字段,具体参考 open_source/Kconfigcomponents/*/Kconfigconfigs/Kconfig 等 Kconfig 文件以及本项目示例的 app.defconfig

字段 类型 用途
CONFIG_CHIP_NAME 字符串 芯片型号,决定 _build/sdk/ 下的 SDK 目录名
CONFIG_CROSS_PREFIX 字符串 交叉编译工具链前缀
CONFIG_SDK_BUILD_BSP 布尔 是否编译 BSP,纯应用示例置 n
CONFIG_SDK_BSP_DEBUG 布尔 BSP 编译模式:y=DEBUG=1,n=DEBUG=0
CONFIG_SDK_BUILD_MPP 布尔 是否编译 MPP 驱动(.ko)
CONFIG_OS_<LIB> 布尔 启用 open_source/<lib>/,未列=关闭
CONFIG_COMP_<NAME> 布尔 启用 components/<name>/
CONFIG_SDK_OS_LINUX 布尔 prepare 阶段把 linux 源码包搬入 SDK 目录
CONFIG_BUILD_INSTALL 布尔 编译后是否 cmake --install(生成烧录镜像)

!注意: SDK patch 与 BSP 自定义参数不通过 app.defconfig 配置。 构建脚本会自动推导示例的 patch 路径。

编译产物落点

产物 路径
可执行文件 _build/bin/
组件静态库 _build/lib/
第三方库 _build/third_party/lib/
烧录镜像(含 BSP 镜像、MPP .ko、rootfs) _build/install/image/<VARIANT>/

<VARIANT> 取值取决于示例代码中定义的变体名称,该目录内容可直接用于烧录工具。

相关文档

文档 说明
构建文档 编译命令、烧写方法与产物说明
新增 reference 示例 产品核心功能类型案例的新增流程
新增开发板 新建板仓并纳入 repo 多仓管理
新增组件模块 在现有组件仓下创建可复用的组件模块
添加第三方开源组件 开源库注册与合规登记