快速熟悉 Solution 代码框架

本章节面向第一次拿到 Solution 代码的开发者,帮助你用较短时间建立整体认识:代码包有哪些目录、应该先选哪个工程、配置从哪里确认、后续开发应该从哪里开始。

如果你刚接触 Solution,不建议一上来就直接改源码。更推荐先按下面的顺序走一遍,把“目录、工程、配置、运行、开发”这几件事串起来。

1. 推荐上手流程

  1. 先了解整体目录:看在线文档或 solution代码下面的readme.md

  2. 选择合适的参考工程:例如 hello_worldwatchgrid_view

  3. 阅读工程和模块目录下的 readme.md:先确认代码位置和入口。

  4. 参考 kconfig_readme.md 确认工程配置:根据目标产品检查 menuconfig 配置。

  5. 编译、烧录并运行工程:先跑通基础流程,再验证产品工程。

  6. 进入业务开发和板级验证:修改应用、资源、组件,并做稳定性验证。

简单理解为:

先看文档 → 再选工程 → 再看 readme.md → 再确认配置 → 再运行验证 → 最后开发功能

2. 第一步:先了解整体目录

拿到代码后,建议先看两个入口:

入口

作用

在线文档:Solution目录结构

从文档角度了解 SDK、Solution、framework、components、examples、tools 等目录的分工

本地文件:solution/readme.md

从代码仓角度快速定位常用目录、示例工程、框架入口和开发建议

Solution 代码包的主目录可以先按下面方式理解:

代码包根目录
├── sdk/        # 底层 SDK、驱动、RTOS、中间件和第三方库
└── solution/   # Solution 产品方案层,客户主要开发目录
    ├── framework/    # Solution 主框架和系统服务
    ├── components/   # 蓝牙、Wi-Fi、传感器、OTA 等可选组件
    ├── examples/     # 产品工程和示例工程
    ├── tools/        # Butterfli、GUI Builder 等工具
    ├── readme.md     # solution 目录快速导航
    └── kconfig_readme.md  # 常用 Kconfig/menuconfig 配置说明

说明:

  • sdk 更偏底层能力

  • solution 更偏产品方案和应用开发。

客户做产品开发时,大多数时间会在 solution/examplessolution/componentssolution/framework 下面查代码。

3. 第二步:选择合适的参考工程

了解目录之后,不要马上从零开始建工程。建议先选择一个和目标产品最接近的参考工程,在它的基础上理解和修改。

常见选择如下:

目标

建议先看

说明

第一次熟悉编译、烧录和应用入口

solution/examples/hello_world

最简单的入门工程,适合先跑通开发流程

手表、手环、带表盘和菜单的产品

solution/examples/watch

包含表盘、菜单、平铺、常见系统应用等能力

只需要轻量宫格菜单的产品

solution/examples/grid_view

比 watch 更轻量,适合简单带屏产品

单应用或空框架产品

solution/examples/container

默认无内置应用,适合后装应用或高度定制产品

动态表盘、动态应用、GUI Builder 应用

solution/examples/_dynamic_app

用于学习外置表盘、外置应用和工具生成应用

如果还不确定选哪个工程,建议先看:

solution/examples/readme.md

该文件会从示例角度说明不同工程的用途和阅读顺序。

4. 第三步:阅读目录下的 readme.md

从 Solution V2.6 开始,代码仓中很多关键目录都补充了 readme.md。这些文件不是替代在线文档,而是帮助你在看源码时快速定位。

建议阅读方式如下:

进入一个目录
先看该目录 readme.md
知道这个目录负责什么
再看入口文件、SConscript、Kconfig 和源码

常见目录级 readme.md 的作用如下:

文件

建议什么时候看

solution/readme.md

第一次进入 solution 目录时,先建立整体认识

solution/examples/readme.md

不知道该选哪个示例工程时

solution/examples/<工程名>/readme.md

已选定某个工程,准备看应用和资源前

solution/examples/<工程名>/application/readme.md

准备修改或新增应用时

solution/examples/<工程名>/resource/readme.md

准备修改图片、字体、多语言等资源时

solution/components/readme.md

准备打开或裁剪组件能力时

solution/framework/readme.md

需要理解应用调度、系统服务、框架启动流程时

简单来说:

在线文档适合学习完整流程,目录级 readme.md 适合快速找到代码落点。

5. 第四步:参考 kconfig_readme.md 确认配置

选好工程后,不建议直接使用示例工程配置做量产。示例工程通常为了展示功能,会打开较多能力;客户项目应根据自己的产品需求重新确认配置。

配置说明入口是:

solution/kconfig_readme.md

这个文件主要说明 Solution 菜单中常见配置项的用途,例如:

配置方向

重点关注

字体和多语言

Font Config,例如 FreeType、Emoji、复杂语言支持

内存和缓存

Memory Config,例如 PSRAM、heap、framebuffer、字体 cache

屏幕和 LVGL

LVGL config,例如分辨率、色深、刷新策略

GUI 框架

Gui Framwork Config,例如菜单、表盘、TileView、动画

调试和发布

Development Config,例如 Debug/Release、文件系统、动态应用、OTA

组件能力

Components Optionals,例如蓝牙、Wi-Fi、传感器、天气、小智等

产品自定义

Product Applicaiton Config,例如当前产品工程自己的功能开关

建议重点检查下面几类配置:

  • 芯片和板型;

  • 屏幕分辨率、色深和接口;

  • NOR Flash / NAND Flash / eMMC / TF 卡等存储方案;

  • PSRAM 和内存大小;

  • 蓝牙、Wi-Fi、传感器、OTA 等产品能力;

  • 字体、多语言、Emoji 和资源方案;

  • 低功耗、唤醒源和调试开关;

  • 不需要的 demo 和组件是否可以关闭。

可以把 kconfig_readme.md 当作 menuconfig 的“导读”。当你不确定某个菜单大概管什么、什么时候需要改、改了有什么影响时,先看这个文件,再结合工程自己的 Kconfig.config 确认。

6. 第五步:编译、烧录并运行工程

配置确认后,建议先按 运行第一个项目 跑通基础流程。

推荐顺序是:

先跑 hello_world
确认开发环境、编译、烧录和启动日志正常
再跑目标产品接近的参考工程
确认屏幕、触摸、资源、蓝牙、外设等基础能力正常

如果使用 Butterfli 工具,可以先完成以下检查:

  • 工程路径是否选择正确;

  • 产品类型和编译分组是否选择正确;

  • 编译环境是否配置完整;

  • 下载串口或 JLink 是否选择正确;

  • 烧录后是否能正常启动并看到日志或界面。

7. 第六步:进入业务开发

工程跑通后,再开始业务开发会更稳妥。常见开发入口如下:

要做的事情

优先看哪里

新增或修改应用

solution/examples/<工程名>/application

修改图片、字体、多语言资源

solution/examples/<工程名>/resource

接入蓝牙、Wi-Fi、传感器、OTA 等能力

solution/components

理解应用注册和页面跳转

solution/framework/gui_fwk,也可先看 solution/framework/readme.md

理解系统服务、线程、NVM、低功耗等

solution/framework/service 和相关在线文档

修改或确认配置

solution/kconfig_readme.md、工程 Kconfig、工程 .config

开发过程中建议保持下面的闭环:

改配置或代码
编译
PC simulator 或板级运行
看日志和现象
修正问题
再做长时间稳定性和低功耗验证

8. 总结

第一次熟悉 Solution,不需要从所有源码开始读。更推荐按“文档 → 工程 → 配置 → 运行 → 开发”的路线逐步深入:

在线文档 / solution/readme.md
Solution目录结构
solution/examples/readme.md
选择具体参考工程
工程和模块目录下的 readme.md
solution/kconfig_readme.md
menuconfig 配置确认
编译、烧录、运行
业务开发和验证

这样既能快速建立全局认识,也能在需要修改代码时准确找到对应目录。