Solution目录结构

1. 主目录组成

Solution 软件的主目录核心分为 SDKSolution 两个子目录,二者分工明确,共同支撑开发流程,具体说明如下:

1.1 SDK 子目录

基于 SDK 2.X 稳定版本构建,仅在以下必要场景随 Solution 版本同步更新,避免频繁变更影响稳定性:

  • 漏洞修复:修复 SDK 原生存在的功能bug或兼容性问题;

  • 功能集成:新增 Solution 框架依赖的核心功能(如特定硬件驱动、通信协议适配);

  • 性能优化:针对 Solution 场景做底层性能调优(如内存占用、运行效率提升);

  • 需求补充:若需集成未包含的功能,可向开发组提需求,或自行合入代码(需遵循 SDK 代码规范)。

1.2 Solution 子目录

Solution 开发的核心目录,包含从框架到工具、从组件到例程的完整开发资源,支持客户按需选用组件,快速搭建产品并推进量产。目录结构如下图所示

../_images/directory_main.png

2. Solution子目录详细介绍

Solution 子目录是开发核心目录,包含 framework(主框架)components(组件库)examples(示例工程)tools(开发工具) 四大核心模块,各模块功能、目录组织及使用逻辑如下:

2.1 framework

提供 Solution 运行的底层核心框架,涵盖 UI 调度、基础组件、系统服务及板级配置模板,是所有应用开发的“地基”,确保功能兼容性与稳定性。

2.1.1 核心组成

子目录/文件

功能说明

gui_fwk

UI 调度主框架:负责应用间调度切换、应用内页面管理、动画效果(如过渡动画、滑动动效)调度,保障 UI 操作流畅度。

gui_widget

基础 UI 组件库:封装按钮、列表、图表、弹窗、进度条等常用控件,支持自定义样式(如颜色、字体)与交互逻辑(如点击、滑动事件),可直接调用。

service

系统服务层,向上提供统一调用接口。包括IPC通信机制、线程、多语言、flashdb、内存管理、动态应用机制、电池管理、button、低功耗等服务

__template__

工程生成模板目录:存放 Butterfli 创建/初始化工程时使用的配置和工程骨架,包括: - HCPU flash 分区表(config/hcpu/flash_map
- HCPU/LCPU/OTA 链接脚本(linker_script
- HCPU/LCPU MSP 配置(msp_config,包含 HAL_MspInit、MPU/cache 等启动相关配置)
- HCPU、LCPU、OTA、Simulator 等子工程模板(project

2.1.2 关键注意事项

  • 配置加载逻辑:Butterfli 开发工具根据 PrjCfg.ini 中的路径,从 __template__ 载入 flash 分区表、链接脚本、HCPU/LCPU MSP 文件以及工程骨架,用于初始化或更新工程;

警告

若需调整 flash 分区、链接地址、MSP/MPU/cache 等模板配置,请修改 __template__ 下的对应文件。不要修改 HCPU/LCPU/Simulator 工程目录下由模板生成的同名文件;这些文件在后续重新生成或同步工程时可能被模板覆盖,导致修改失效。

2.1.3 目录结构

2.2 components(组件库目录)

提供解耦式功能组件,覆盖通信、硬件适配、系统服务等场景,组件间独立无强依赖,支持按需集成,灵活搭建产品功能,避免冗余代码,降低开发与维护成本。

2.2.1 组件分类与功能

组件目录

功能说明

alipay

支付宝支付码、乘车码、安全、通信及适配层相关组件

app_tool

应用工具组件,按 APP_TOOL_SUPPORT 开关集成

battery

电池检测、温控、强制充电等电池服务组件

ble

BLE 服务、连接、NVM、AMS/ANCS/HID、OTA、微信及 Zephyr BLE 相关组件

bt

传统蓝牙服务组件,覆盖 HF、A2DP、SPP、AVRCP、AG、HID、PBAP、GATT 等 profile

button

按键服务组件,主要面向 HCPU 或 PC 仿真工程

call

蓝牙通话功能组件,随 BT_USING_HF 等通话能力启用

comm

Solution 通用通信与信息封装组件

db

HCPU/PC 仿真侧实时数据库组件

freq_resp

频响相关功能组件,主要用于 HCPU 或 PC 仿真工程

fs

文件系统扩展组件,依赖 DFS 或 PC 仿真环境

lcpu

HCPU/LCPU 协同相关服务组件

message

应用消息管理组件,随 APP_MESSAGE_USED 启用

metrics

开机性能/指标统计组件,随 USING_POWER_ON_METRICS 启用

micropython

MicroPython 与 LVGL 绑定支撑组件,按存储介质和色深选择生成文件

music

音乐播放组件,支持本地、BLE、BT 等音频播放路径

net

网络应用服务组件,随 APP_NETWORK_USED 或 PC 仿真环境启用

nvm

NVM 参数存储组件,主要面向 HCPU 或 PC 仿真工程

nxp

NXP GUI Guider 动态应用模板与适配组件

ota

OTA 升级组件,包含普通 OTA、扩展 OTA、传输、OTA Manager 等子模块

pm

低功耗和电源管理相关组件,支持可选动画逻辑

quickjs

QuickJS 与 LVGL/脚本运行框架组件

recorder

录音/音频采集相关服务组件,非 LCPU 和非 OTA Manager 工程集成

sensor

传感器服务、NVM、算法及 GPS/加速度/心率/环境光/磁力计等驱动适配组件

squareline

SquareLine Studio 动态应用模板与适配组件

support_script

组件构建、工程生成或发布流程使用的辅助脚本目录

sys_cfg

系统配置服务组件,随 USING_SYS_CFG 启用

tf

TF 卡服务组件,随 USING_TF_CARD 启用

tf_install

TF 卡安装工具组件,依赖 DFS 和 TF 卡能力

usb_mstorage

USB 大容量存储组件,随 RT_USB_DEVICE_MSTORAGE 启用

weather

天气服务组件,依赖 WebClient 或 PC 仿真环境

wifi

Wi-Fi 应用与 Wi-Fi NVM 管理组件,随 APP_WIFI_USED 或 PC 仿真环境启用

xiaozhi

小智 AI 交互组件,依赖网络应用能力并支持 WebSocket/MQTT 路径

说明: KconfigSConscript 是组件目录的配置/构建入口文件,不作为独立组件列入上表。

2.2.2 使用逻辑

  • 组件通过 menuconfig/Kconfig 中的宏定义开关控制是否集成,最终在各组件的 SConscript 中通过 GetDepend() 判断后加入编译;

  • 常见组件开关关系如下,实际是否编译还会叠加 HCPU/LCPU、PC 仿真、OTA Manager 等工程类型条件:

组件目录

主要宏/条件

说明

alipay

PKG_ALIPAY_PAY_CODEPKG_ALIPAY_TRANSPORT_CODE 及各 PKG_ALIPAY_* 子开关

支付宝相关功能按支付码、乘车码、HAL/FWK/第三方库等子模块分别裁剪

app_tool

APP_TOOL_SUPPORT

应用工具支持

battery

BF0_LCPUSENSOR_IN_HCPUBATTERY_SERVICE_SIMULATOR

电池服务、检测、温控、强制充电等模块按工程侧和仿真开关集成

ble

BSP_BLE_SIBLESBSP_BLE_AMSBSP_BLE_ANCSBSP_BLE_HIDZBTOTA_EXT_V3

BLE 基础服务及 AMS/ANCS/HID/OTA/Zephyr BLE 等子能力

bt

RT_USING_BTBT_USING_HFBT_USING_A2DPBT_USING_SPPBT_USING_AVRCPBT_USING_AGBT_USING_HIDBT_USING_PBAPBT_USING_GATT

传统蓝牙及 profile 级裁剪

button

BF0_HCPUBSP_USING_PC_SIMULATOR

HCPU/仿真侧按键服务

call

BT_USING_HF

蓝牙通话服务

comm

默认加入

通用通信/信息封装

db

BF0_HCPUBSP_USING_PC_SIMULATOR

HCPU/仿真侧数据库服务

freq_resp

BF0_HCPUBSP_USING_PC_SIMULATOR

频响相关功能

fs

RT_USING_DFSBSP_USING_PC_SIMULATOR

文件系统相关扩展

lcpu

默认加入

HCPU/LCPU 协同服务

message

APP_MESSAGE_USED

应用消息服务

metrics

USING_POWER_ON_METRICS

开机指标统计

micropython

MICROPYTHON_USING_LVGLSOLUTION_RES_USING_NANDLV_COLOR_DEPTH_16/24

MicroPython/LVGL 绑定,并按存储介质和色深选择源码

music

PKG_USING_LIBHELIXBSP_BLE_SIBLESRT_USING_BTAUDIO

本地、BLE、BT 音乐路径按音频与协议栈开关裁剪

net

APP_NETWORK_USEDBSP_USING_PC_SIMULATOR

网络应用服务

nvm

BF0_HCPUBSP_USING_PC_SIMULATOR

HCPU/仿真侧 NVM 服务

nxp

APP_DLMODULE_APP_USED

NXP GUI Guider 动态应用模板

ota

BSP_USING_DFUOTA_EXT_V3BT_PAN_OTATF_OTAUSB_OTADFU_OTA_MANAGER

OTA 应用、扩展 OTA、传输和 OTA Manager 按场景裁剪

pm

BF0_HCPUBSP_USING_PC_SIMULATOR,可选 PM_ANIM_USED

电源管理及可选动画

quickjs

QUICKJS_LVGL

QuickJS/LVGL 脚本框架

recorder

BF0_LCPU 且非 DFU_OTA_MANAGER

录音/音频采集服务

sensor

RT_USING_SENSORRT_USING_GPSSENSOR_SERVICE_SIMULATORSENSOR_ALGO_SIMULATORSENSOR_IN_HCPU、各传感器型号开关

传感器服务、算法和具体器件驱动按能力裁剪

squareline

APP_DLMODULE_APP_USED

SquareLine Studio 动态应用模板

sys_cfg

USING_SYS_CFG

系统配置服务

tf

USING_TF_CARD

TF 卡服务

tf_install

USING_TF_CARDRT_USING_DFS

TF 卡安装工具

usb_mstorage

RT_USB_DEVICE_MSTORAGE

USB 大容量存储

weather

PKG_USING_WEBCLIENTBSP_USING_PC_SIMULATOR

天气网络服务

wifi

APP_WIFI_USEDBSP_USING_PC_SIMULATOR

Wi-Fi 应用与 NVM 管理

xiaozhi

XIAOZHI_SUPPORTAPP_NETWORK_USEDPKG_USING_NETWORK_WEBSOCPKG_USING_NETWORK_MQTT

小智 AI 交互,并按 WebSocket/MQTT 网络路径裁剪

2.3 examples

包含产品例程,覆盖新手入门到量产参考的需求,代码注释清晰,可直接参考复用,降低学习与开发成本。

2.3.1 目录组织规则

  • 带下划线前缀(_XXX):非板级工程,通用演示或工具适配类,不绑定具体硬件;

  • 不带下划线前缀:板级工程,绑定特定硬件方案(如手表、宫格终端),可直接编译烧录验证。

2.3.2 各子目录详细说明

2.3.3 板级工程内部结构

每个不带下划线的板级工程(如 watchgride_viewcontainer),内部按“功能模块”标准化组织,方便定位代码,典型结构如下:
(包含 application(应用代码)、project(工程)、resource(资源)等子目录)

2.4 tools(工具目录)

提供 Solution 开发全流程所需的开发辅助工具产线工具,覆盖“开发-调试-量产”各环节,提升效率并保障量产稳定性。

  1. 开发工具Butterfli:一站式开发工具,集成工程创建、编译、烧录、调试功能

  2. 产线烧写工具Impeller:16 通道并行烧录工具(支持 SWD/UART 模式)

  3. GUI_Builder工具:可视化 UI 开发工具,零编程制作表盘/应用

  4. Graphics_convert:图形转换工具,提供图片、视频的转换,主要用于外置SD/TF卡的资源