杰理 SDK 文档中心
首页
首页
  • 概述与快速开始

    • SDK 总览与芯片能力
    • 环境搭建与编译构建
    • 烧录与固件升级
    • 文档与版本资源
  • 应用与示例方案

    • demo 示例工程
    • WiFi 摄像头方案 (wifi_camera)
    • WiFi 音箱方案 (wifi_soundbox)
    • WiFi 婴儿监护方案 (wifi_bbm)
    • 公共应用模块库
    • 示例代码库 (example)
  • 系统架构与平台

    • 总体架构与工程分层
    • 系统启动与运行框架
    • 芯片驱动与板级适配
    • 设备管理与文件系统
    • 系统工具库与算法
  • 音频子系统

    • 音频框架与处理节点
    • 音频编解码与音效
    • 播放器与录音器
    • 语音交互与 AI 唤醒
    • LE Audio 与蓝牙音频
    • 音频调试与歌词
  • 视频与显示子系统

    • 摄像头驱动与 ISP
    • 视频编码与图像处理
    • 显示与 GPU 加速
    • 屏幕镜像 (screen_mirror)
  • 无线连接与网络

    • 蓝牙协议栈 (双模蓝牙)
    • WiFi 协议栈与配网
    • 网络协议栈
    • 云平台与 IoT 协议
  • UI 子系统

    • LVGL 集成与应用
    • UI 工程与工具链
  • 配置系统

    • 功能配置
    • 板级配置
    • 网络与蓝牙配置
    • 音频配置与提示音
  • 工具与测试

    • 产测与射频测试工具
    • 固件升级与更新机制
    • 调试与日志工具
  • 硬件参考设计

    • 原理图参考设计
    • 芯片数据手册

文档与版本资源

AC792N_AIoT_SDK 的文档资源体系与版本管理机制总览:涵盖仓库内各级 README 文档、在线文档中心与硬件资料引用、运行时版本上报(sdk_version() / app_version_check())、各库版本字符串(version.z.S)以及版本号规范与分支策略。

Purpose and Scope

本页面向开发者系统梳理 AC792N_AIoT_SDK(fw-AC792_SDK 仓库,分支 release/AC792N_SDK_V3) 中"文档与版本资源"这一能力的完整构成:

  • 文档资源:仓库根目录 README.md / README-en.md、子目录 README(sdk_tools、phone_app、sdk/apps/common/example)、在线文档中心与 doc/ 硬件资料目录的引用关系;
  • 版本资源:运行时版本字符串来源(sdk/apps/common/system/version.c)、链接期注入的版本段(__VERSION_BEGIN/__VERSION_END)、各库 version.z.S 汇编版本文件、version.ver、version.h 等;
  • 版本规范:major.minor.patch 版本号规则、分支(AC792N_SDK_V3)与发布 tag 的关系。

以下内容不属于本页范围,由兄弟页面另行覆盖:芯片外设驱动与协议栈实现(见"SDK 架构"类页面)、具体方案工程的编译与烧录流程(见"编译与烧录"类页面)、第三方组件(lvgl、mbedTLS、FlashDB 等)的详细 API。本页仅说明这些组件版本资源的存放位置与获取方式。

Overview

AC792N_AIoT_SDK 是一个覆盖 WiFi 视频、大屏音视频、WiFi 音频、智能家居等场景的多媒体 SoC 固件开发包。由于仓库本体只包含 SDK 源码与示例工程(不含完整开发文档),"文档与版本资源"承担了三个关键职责:

  1. 导航与入口:根目录 README.md 是唯一的本地文档入口,通过它可跳转到在线文档中心、芯片数据手册、SDK 版本历史、FAQ 与社区支持;
  2. 可追溯性:固件在启动早期(early_initcall)即打印 SDK 版本与所有链接进固件的库版本字符串,确保现场设备与源码版本一一对应;
  3. 版本治理:通过统一的 major.minor.patch 规则与分支策略(主线开发分支 AC792N_SDK_V3、稳定发布 tag)管理迭代节奏,区分"尝鲜最新特性"与"量产稳定版本"两种使用路径。

典型使用场景:

  • 开发前:阅读 README.md 的环境搭建、快速开始、工程结构章节,并跳转在线文档中心获取完整开发文档;
  • 定位现场问题:抓取设备串口日志中 SDK Version 与 __VERSION_BEGIN 段输出的版本号,与仓库分支/tag 比对;
  • 选择版本:根据 README 第十四章"版本与分支说明"决定跟随主线还是使用稳定发布版本。

Architecture

下图展示了文档资源与版本资源两大体系在仓库中的组织关系,以及运行时版本信息的产生路径:

flowchart TD
    subgraph sg_Docs["文档资源体系"]
        README["README.md<br/>(本地总入口,15 章)"]
        README_EN["README-en.md<br/>(英文版)"]
        SUB_README["子目录 README<br/>sdk_tools / phone_app / example"]
        DOC_CENTER["在线文档中心<br/>doc.zh-jieli.com/AC792"]
        DATASHEET["doc/硬件资料/datasheet<br/>芯片规格书"]
        VERSION_HISTORY["SDK 版本历史<br/>在线页面"]
    end

    subgraph sg_Version["版本资源体系"]
        VERSION_C["sdk/apps/common/system/version.c"]
        VERSION_VER["sdk/cpu/wl83/tools/version.ver"]
        VERSION_ZS["各库 version.z.S<br/>btctrler / btstack / driver / net / server / system"]
        VERSION_H["version.h<br/>lvgl / mbedtls / wolfssl 等"]
    end

    subgraph sg_Runtime["运行时(固件启动)"]
        INITCALL["early_initcall"]
        PRINTER["串口日志输出"]
    end

    README --> DOC_CENTER
    README --> DATASHEET
    README --> VERSION_HISTORY
    README --> SUB_README

    VERSION_C -->|"sdk_version()"| INITCALL
    VERSION_C -->|"遍历 __VERSION_BEGIN..__VERSION_END"| VERSION_ZS
    VERSION_ZS --> INITCALL
    VERSION_VER --> VERSION_C
    INITCALL --> PRINTER

图中各节点说明:

节点实际文件/位置职责
README.mdREADME.md本地文档总入口,包含目录、概述、芯片能力、环境搭建、版本分支说明等 15 章
README-en.mdREADME-en.mdREADME 英文镜像
在线文档中心doc.zh-jieli.com/AC792完整 SDK 开发文档(README 明确说明"SDK 固件包不含开发文档")
version.csdk/apps/common/system/version.c定义 sdk_version() 并注册 early_initcall 打印版本
version.z.S 系列sdk/include_lib/btstack/version.z.S 等汇编版版本字符串,经链接器段聚合后由 version.c 统一打印
version.versdk/cpu/wl83/tools/version.verwl83 平台工具版本号(当前 1.0.0)

设计意图:将文档入口集中在根 README(降低新手门槛),而把版本信息分散保存在各库源码旁(version.z.S 与库源码同目录维护、随库发布),最后由 version.c 在链接期统一聚合输出——既保证"版本跟着代码走",又避免维护一份集中的版本清单。

文档资源详解

根目录 README:本地文档总入口

README.md 是仓库唯一的顶层文档,以 15 个章节组织,覆盖从"是什么"到"怎么用"再到"版本怎么选"的完整链路:

章节内容关键信息
一、概述芯片定位与典型应用场景AC792N 为 WiFi 802.11b/g/n + 双模蓝牙 V5.4 多媒体 SoC,双核浮点 DSP @ 320MHz
二、支持的芯片与平台芯片型号与内核规格wl83 平台:AC7921A ~ AC7926A 共 10 个型号
三、芯片软硬件能力总览外设、MATH、蓝牙、WiFi、音视频硬件 AES/SHA、PTA 共存、ISP、JPEG 720P@30fps
四~十环境搭建、快速开始、工程结构、应用示例、编译、烧录、配置编译命令 make ac792n_wifi_camera -j4 等
十一、常见问题FAQ建工程、选型、make_prompt.bat 环境
十二、社区与支持钉钉群与资源链接在线文档中心、数据手册、版本历史
十四、版本与分支说明分支与版本号规则AC792N_SDK_V3 主线分支、major.minor.patch 规则
十五、免责声明版权与版本依据版本以仓库分支与在线版本发布记录为准

注意 README 明确指出:"SDK 固件包不含开发文档,开发前请详细阅读 SDK 在线开发文档。"——即本地仓库只承载代码与导航,完整文档托管于在线文档中心(doc.zh-jieli.com/AC792)。

文档中心与硬件资料引用

README 第十二章集中维护了外部资源链接,构成文档体系的"外链层":

资源类型说明
在线文档中心外部 URL完整开发文档(编译、API、配置、FAQ)
SDK 版本历史外部 URL官方版本发布记录
芯片数据手册仓库内相对路径AC792N 规格书(doc/硬件资料/datasheet 目录)
芯片选型表仓库内相对路径doc/硬件资料/AC792N系列芯片选型表(FAQ 11.1 中引用)
代码仓库外部 URLGitee 镜像仓库

子目录 README

仓库按功能域在子目录维护了补充文档,与根 README 形成层级:

  • sdk_tools/README.md:SDK 配套工具链说明;
  • phone_app/README.md:手机 App 工程说明;
  • sdk/apps/common/example/readme.md:通用示例工程导读;
  • 第三方组件自带文档:sdk/apps/common/example/third_party/ 下 coremark、securemark、FlashDB 等各自的 README/LICENSE 文档(如 FlashDB/docs)。

设计意图:本地文档刻意"薄"(导航 + 速查),完整文档"厚"(在线中心),既避免仓库体积膨胀,也保证文档随版本持续更新而无需同步到每个固件分支。

版本资源详解

运行时版本上报:sdk/apps/common/system/version.c

这是版本体系的"汇聚点"。该文件实现两个函数并通过 early_initcall 在系统启动早期执行:

#include "system/includes.h"
#include "generic/log.h"
#include "app_config.h"

extern char __VERSION_BEGIN[];
extern char __VERSION_END[];

const char *sdk_version(void)
{
    return "AC792N SDK on branch [release/AC792N_SDK_V3] tag AC792N_SDK_BETA_V3.1.6_2026-07-08";
}

static int app_version_check()
{
    char *version;

    printf("================= SDK Version    %s     ===============\n", sdk_version());

    for (version = __VERSION_BEGIN; version < __VERSION_END;) {
        printf("%s\n", version);
        version += strlen(version) + 1;
    }
    puts("=======================================\n");

    return 0;
}
early_initcall(app_version_check);

Source: sdk/apps/common/system/version.c

工作机制逐行解析:

  1. sdk_version():返回编译期固化在源码中的 SDK 版本字符串,含分支名(release/AC792N_SDK_V3)与发布 tag(AC792N_SDK_BETA_V3.1.6_2026-07-08)。tag 中的 V3.1.6 即 major.minor.patch 结构(见下文版本号规则),2026-07-08 为发布日期;
  2. __VERSION_BEGIN / __VERSION_END:由链接脚本提供的段边界符号。链接器把所有库(version.z.S)中的版本字符串按序放入 __VERSION 段,形成以 \0 结尾的字符串序列;
  3. app_version_check():先打印 SDK 总版本,再遍历 __VERSION_BEGIN 到 __VERSION_END 之间的每个字符串(version += strlen(version) + 1 跳过空字符),逐个打印各库版本;
  4. early_initcall(app_version_check):将函数注册为启动早期回调,保证串口日志一出现就能看到版本信息,便于在产线/现场第一时间核对固件版本。

设计意图:把版本字符串写成汇编段(version.z.S)而非 C 变量,是为了让各库版本能独立地随库文件一起编译、一起发布,链接时无需任何注册代码即可自动汇聚——这是"零耦合聚合"的版本管理模式。

各库版本字符串:version.z.S 系列

仓库在 sdk/include_lib/ 下按库目录维护同名汇编版本文件,例如:

  • sdk/include_lib/btctrler/version.z.S
  • sdk/include_lib/btstack/version.z.S
  • sdk/include_lib/driver/version.z.S
  • sdk/include_lib/net/version.z.S
  • sdk/include_lib/server/version.z.S
  • sdk/include_lib/system/version.z.S

这些文件在链接期被聚合到 __VERSION_BEGIN..__VERSION_END 区间,由 version.c 统一输出。因此一个库升级后,只需更新其自身 version.z.S,固件日志即可反映新版本,无需改动公共代码。

工具与第三方版本文件

文件位置内容/用途
version.versdk/cpu/wl83/tools/version.verwl83 平台工具版本,当前内容为 1.0.0
lv_version.hsdk/apps/common/lvgl_v9/lv_version.hLVGL v9 图形库版本宏
versions.hsdk/apps/common/net/testbox/include/versions.h网络 testbox 组件版本
version.hsdk/include_lib/net/mbedtls_3_4_0/mbedtls/version.h、wolfssl/version.h、wolfmqtt/version.h、cyassl/version.h、system/generic/version.h、json_c/json_c_version.h各第三方库的 C 头文件版本宏(编译期可用)
version.c / version.hsdk/include_lib/c++/include/version、__libcpp_versionC++ 标准库版本信息

版本号规则(major.minor.patch)

README 第十四章明确定义了语义化版本规则(README.md):

位名称变更触发条件
major主版本号结构发生重大变化、无法与旧版本兼容
minor次版本号较大更改(如 API 增加),不影响源码与二进制兼容性
patch补丁版本号仅修改内部实现,不影响 API 接口

结合 sdk_version() 返回值可见当前发布形态:AC792N_SDK_BETA_V3.1.6(BETA 前缀表示测试阶段发布,V3 为主版本、1 为次版本、6 为补丁)。分支策略上,README 建议:测试/研发尝试最新特性跟随主线 AC792N_SDK_V3;量产用途使用对应稳定发布版本。

核心流程:版本信息从源码到串口日志

sequenceDiagram
    participant SRC as 库源码(version.z.S)
    participant LD as 链接器(__VERSION 段)
    participant FW as 固件(version.c)
    participant BOOT as 系统启动(early_initcall)
    participant UART as 串口日志

    SRC->>LD: 各库版本字符串(\0 分隔)
    LD->>FW: 生成 __VERSION_BEGIN / __VERSION_END 边界符号
    BOOT->>FW: 调用 app_version_check()
    FW->>FW: sdk_version() 返回分支 + tag 字符串
    FW->>FW: 遍历 __VERSION_BEGIN..__VERSION_END
    FW->>UART: "SDK Version AC792N SDK on branch [release/AC792N_SDK_V3] tag ..."
    FW->>UART: 逐行打印各库版本字符串

执行顺序说明:

  1. 编译各库时,version.z.S 中的版本字符串被置于 __VERSION 段;
  2. 链接阶段,链接脚本为段首尾生成 __VERSION_BEGIN、__VERSION_END 符号,段内字符串以 \0 分隔;
  3. 固件启动,early_initcall 机制触发 app_version_check();
  4. 函数先打印 SDK 总版本(分支+tag),再遍历段内字符串逐条打印;
  5. 现场工程师通过串口日志即可完整核对 SDK 与各库版本,无需读取 flash 或拆机。

使用示例

示例一:获取 SDK 版本字符串

任意应用代码可通过 sdk_version() 获取当前固件的 SDK 版本(含分支与 tag),用于在 UI/AT 命令/日志中展示:

const char *sdk_version(void)
{
    return "AC792N SDK on branch [release/AC792N_SDK_V3] tag AC792N_SDK_BETA_V3.1.6_2026-07-08";
}

Source: sdk/apps/common/system/version.c

示例二:启动早期自动打印全部版本

固件启动即执行,无需任何应用层调用——这是 early_initcall 注册模式(该宏是杰理 SDK 的启动回调机制,支持在系统初始化早期插入自检逻辑):

static int app_version_check()
{
    char *version;

    printf("================= SDK Version    %s     ===============\n", sdk_version());

    for (version = __VERSION_BEGIN; version < __VERSION_END;) {
        printf("%s\n", version);
        version += strlen(version) + 1;
    }
    puts("=======================================\n");

    return 0;
}
early_initcall(app_version_check);

Source: sdk/apps/common/system/version.c

示例三:核对版本资源的可追溯信息

升级某个库(如蓝牙协议栈)后,版本信息随库发布。现场验证时抓取串口日志中的 SDK Version 行与后续各库版本行,与仓库分支(release/AC792N_SDK_V3)及 在线版本发布记录 比对即可确认固件出处。

API 参考

const char *sdk_version(void)

返回当前 SDK 的版本字符串,包含分支名与发布 tag。

  • 返回值:形如 "AC792N SDK on branch [release/AC792N_SDK_V3] tag AC792N_SDK_BETA_V3.1.6_2026-07-08" 的常量字符串;
  • 调用时机:任意时刻可调用;亦被 app_version_check() 在启动早期调用;
  • 无参数、无异常抛出(纯常量字符串返回)。

static int app_version_check(void)

启动早期自检回调,打印 SDK 版本并遍历 __VERSION 段输出各库版本。

  • 返回值:恒为 0(early_initcall 要求返回 int);
  • 副作用:通过 printf / puts 向串口输出版本信息;
  • 注册方式:early_initcall(app_version_check)——无需应用代码显式调用,系统启动时自动执行;
  • 依赖符号:__VERSION_BEGIN、__VERSION_END(由链接脚本提供,extern char 声明)。

配置与资源清单

版本体系属于"只读/自动"资源,无运行时配置项;唯一可关注的是维护性信息:

资源位置当前值/说明
SDK 版本字符串sdk/apps/common/system/version.cAC792N_SDK_BETA_V3.1.6_2026-07-08(BETA 测试发布)
仓库分支仓库级release/AC792N_SDK_V3(主线开发分支)
工具版本sdk/cpu/wl83/tools/version.ver1.0.0
各库版本段sdk/include_lib/*/version.z.S链接期自动聚合,无需配置
日志等级/通道sdk/apps/common/config/log_config/控制 printf 输出通道(README FAQ 11.3 提及)

版本号更新是源码级维护:发版时修改 version.c 中的 sdk_version() 字符串与相关 version.z.S,重新编译链接即可,无需任何运行时配置。

故障模式、边界与注意事项

场景现象处理建议
串口无版本输出early_initcall 未执行或被日志等级过滤检查 log_config 是否屏蔽 printf;确认 early_initcall 注册未被裁剪(链接器垃圾回收)
__VERSION_BEGIN/__VERSION_END 未定义链接报 undefined symbol检查链接脚本是否包含 __VERSION 段定义,或库 version.z.S 是否被链接
遍历越界打印乱码/崩溃段内字符串必须以 \0 结尾;version.z.S 内容损坏时排查对应库的版本文件
版本与代码不符现场固件日志版本与仓库不一致以 sdk_version() 的分支+tag 为准,核对 在线版本发布记录;量产建议使用稳定 tag 而非主线
并发/多核无并发风险版本打印为启动早期一次性操作,不涉及多核竞争;应用层调用 sdk_version() 返回常量字符串,天然线程安全

扩展点与运维提示

  • 新增库的版本接入:为新库添加 version.z.S 即可自动纳入启动版本打印,无需修改 version.c——这是本机制的核心扩展点;
  • 自定义版本标识:应用可在 app_version_check() 之后追加自己的 printf,或在 UI 中调用 sdk_version() 展示版本;
  • 版本选型:跟随主线 AC792N_SDK_V3 获得最新特性(可能不稳定);量产锁稳定 tag(如 AC792N_SDK_BETA_V3.1.6)并配合在线发布记录;
  • 环境配套:Windows 编译请使用 sdk/make_prompt.bat 进入预配置命令行(README FAQ 11.2),版本相关文件均随源码仓库分发,无需额外下载。

相关链接

  • README.md(本地文档总入口)
  • README.md 第十四章:版本与分支说明
  • README-en.md(英文版)
  • sdk_version() 与 app_version_check() 实现
  • wl83 工具版本 version.ver
  • 在线文档中心(完整开发文档)
  • SDK 版本历史(在线发布记录)
  • 相关兄弟页面:环境搭建与快速开始(README 第四章、第五章)、编译与烧录指南(README 第八章、第九章)、工程结构说明(README 第六章)。
Prev
烧录与固件升级