SDK 概览与 AC791N 芯片平台
fw-AC79_AIoT_SDK 是杰理科技(Jieli Technology)为 AC791N 系列 AIoT 多媒体 SoC 提供的通用 SDK 固件开发包,集成了 WiFi 802.11b/g/n、双模蓝牙(BR/EDR + BLE)、音频/视频/显示多媒体框架、网络协议栈与丰富的应用示例,可一站式构建各类音视频物联网产品。
Purpose and Scope
本页作为 SDK 的总览入口,回答三个核心问题:
- SDK 是什么——仓库定位、发布形态(Release 源码 + 预编译库 + 开源组件)、典型应用场景;
- AC791N 芯片平台能做什么——wl82 平台各芯片型号的硬件规格、WiFi/蓝牙/音视频/显示/安全/低功耗能力边界;
- 如何从零开始使用——工程目录结构、编译系统(Makefile / Code::Blocks / VS Code)、配置入口(板级
board_79xx_cfg.h与功能裁剪apps/common/config/)、烧录与升级方式。
以下主题属于兄弟页面,本页只做指引、不展开细节:
- 各方案工程的实现细节(
apps/wifi_camera、apps/wifi_ipc、apps/wifi_story_machine、apps/scan_box的代码走读)——见「应用与示例指南」相关页面; - 板级配置
board_79xx_cfg.h的引脚/外设/时钟逐项说明——见「板级配置」相关页面; - 具体外设驱动、协议栈 API——见「驱动与协议」相关页面。
Overview
SDK 定位
AC791N 是一款低成本、高集成度的 WiFi + 蓝牙音视频多媒体 SoC:内部集成主频最高 320MHz 的双核浮点 DSP,完整集成音频(ADC/DAC)、视频(摄像头 ISC)、显示(RGB 推屏)与丰富外设资源,并在片内集成 PTA 共存分时模块,使 WiFi 与蓝牙(V2.1/V5.0)可同时工作。
本仓库为 SDK Release 版本源码及示例工程,需配合对应平台的预编译库(*.a)进行链接编译,并引用了 lwIP、mbedTLS、FreeRTOS 等开源项目。SDK 固件包本身不含开发文档,完整开发资料见 AC79 SDK 在线文档中心。
典型应用场景
| 应用类型 | 典型产品 |
|---|---|
| WiFi 音频方案 | WiFi/蓝牙智能音箱、儿童绘本故事机、点读笔/扫描笔/翻译笔 |
| WiFi 视频方案 | WiFi 监控摄像头 IP Camera、可视门铃/视频门锁/楼宇智能、婴儿监护器、宠物喂食机 |
| 蓝牙 + USB 交互 | 蓝牙/USB 扫码枪、HID 人机交互设备 |
| 智能家居/物联网 | WiFi 可视美容仪、WiFi 摄像头玩具、各类 AIoT 联网设备 |
版本与分支策略
AC79 Gitee 仓库的 master 分支用于开发新特性(更新频繁);量产用途建议使用稳定发布分支 release/AC79NN_SDK_Vx.x.x(本页所引用代码即 release/AC79NN_SDK_V1.2.0 分支)。新项目一般建议选择最新稳定版本。
Architecture
SDK 分层架构
flowchart TD
subgraph sg_Apps["应用层 apps/"]
AppCamera["apps/wifi_camera"]
AppIPC["apps/wifi_ipc"]
AppStory["apps/wifi_story_machine"]
AppScan["apps/scan_box"]
AppDemo["apps/demo (11 个 demo)"]
AppCommon["apps/common (公共模块)"]
BoardCfg["apps/*/board/wl82<br/>board_79xx_cfg.h / .cbp / Makefile"]
end
subgraph sg_Lib["库与接口层"]
IncludeLib["include_lib (头文件)<br/>btctrler/btstack/driver/media/net/system/update"]
Lib["lib (预编译库)<br/>net/server/utils"]
CpuLib["cpu/wl82/liba (*.a 静态库)"]
end
subgraph sg_Tools["工具链层"]
Makefile["顶层 Makefile"]
CodeBlocks["Code::Blocks (.cbp)"]
Tools["tools/ (make_prompt.bat / utils)"]
FlashTools["cpu/wl82/tools (烧录工具)"]
end
subgraph sg_HW["硬件层"]
AC791N["AC791N SoC (wl82 平台)<br/>双核 DSP@320MHz + WiFi + BT"]
end
Makefile --> BoardCfg
CodeBlocks --> BoardCfg
AppCamera --> AppCommon
AppIPC --> AppCommon
AppStory --> AppCommon
AppScan --> AppCommon
AppDemo --> AppCommon
AppCommon --> IncludeLib
AppCommon --> Lib
BoardCfg --> CpuLib
CpuLib --> AC791N
IncludeLib --> AC791N
Tools --> BoardCfg
FlashTools --> AC791N
分层说明:
- 应用层(
apps/):按产品方案组织的工程目录。每个方案工程(如apps/wifi_camera/)都包含独立的board/wl82/板级子目录,其中存放板级Makefile、Code::Blocks 工程文件(AC791N_*.cbp)、板级配置头文件(board_79xx_cfg.h,按芯片型号区分,如board_7916A_cfg.h)与板级初始化代码(board_*.c)。 - 公共模块层(
apps/common/):跨工程共享的音频、视频、蓝牙、WiFi、UI、AI 等中间件,以及config/下的功能裁剪配置(蓝牙 Profile、用户配置、日志配置等)。 - 库与接口层:
include_lib/提供协议栈、驱动、媒体、系统、网络等模块的头文件接口;lib/与cpu/wl82/liba/提供预编译静态库(*.a)。SDK 不开放全部源码,部分底层以库形式交付——这是该 SDK 的发布形态设计:源码可裁剪、库接口稳定。 - 工具链层:顶层
Makefile是统一编译入口,通过递归调用各板级 Makefile 编译指定方案;Windows 下可用 Code::Blocks 打开.cbp工程;tools/提供预配置命令行环境脚本。 - 硬件层:AC791N SoC(wl82 平台)是全部代码最终运行的载体。
芯片平台(wl82)型号矩阵
| 芯片平台 | 芯片型号 | 内核 | 适用方案 |
|---|---|---|---|
| wl82 | AC7911B / AC7912A / AC7913A / AC7915A / AC7915B / AC7916A | 杰理自研双核浮点 DSP @ 320MHz | wifi_camera / wifi_story_machine |
同一平台内不同型号主要在封装、外扩 SDRAM 容量与可用外设上存在差异,板级配置头文件按型号区分,实现"一套 SDK、多芯片兼容"的设计目标。
AC791N 芯片平台能力详解
内核与内存
| 项目 | 规格 |
|---|---|
| CPU | 双核 DSP,最高主频 320MHz,支持单精度浮点及数学运算加速引擎 |
| 缓存与内存管理 | 带 I-Cache、D-Cache、MMU |
| 片上 SRAM | 共 578 KB |
| 外扩 SDRAM | 部分封装支持 2 / 8 MB SDRAM |
| 供电 | 内置 PMU,支持 LDO / DCDC 供电模式与多种低功耗模式 |
设计意图:双核浮点 DSP 使得音频编解码、AI 降噪等重计算任务可以在片内完成,无需外挂 MCU;578KB 片上 SRAM 配合可选外扩 SDRAM,覆盖从低成本音频设备到视频推流设备的差异化内存需求。
外设接口
GPIO、IIC、SPI、SDIO、PWM、MCPWM、UART、USB 1.1、USB 2.0、ADC、TIMER、IR 接收、电容触摸按键、GPCNT、RTC。
MATH 硬件加速
| 能力 | 说明 |
|---|---|
| 数字信号 | 硬件 FFT、IFFT、矩阵运算 |
| 加解密 | 硬件 AES128/256、SHA128/256 |
| 其他 | 硬件随机数、CRC16 |
硬件加速引擎的意义:FFT/AES/SHA 等操作以硬件完成,CPU 主频 320MHz 的算力可集中于应用逻辑,同时降低功耗。
蓝牙
- 符合蓝牙 V5.0 + BR + EDR + BLE 规范(协议栈同时支持 5.1 实现,见认证信息)
- 满足 Class2 / Class3 发射功率要求,支持 GFSK 与 π/4 DQPSK 所有包类型
- 最大 +15 dBm 发射功率,接收灵敏度 -93 dBm
- 蓝牙官方认证:Core v5.0(QDID 134104)、Core v5.1(QDID 136145)
WiFi
- 支持 IEEE 802.11b/g/n,802.11n 支持 MCS0~MCS7、20MHz/40MHz 带宽,800ns / 400ns 保护间隔
- 支持 AP / STA / Monitor(配网) 模式;AP 多站接入;STA 多网络记忆、择优连接、冷启动快连
- 支持 Power Save 省电模式;支持 Open / WEP / WPA-PSK / WPA2-PSK + TKIP/AES/CCMP 加密
- 支持脱离 802.11 协议直接收发底层 RF 数据包,可对接 CMW270 等测试仪测试 RF 性能
- 发射功率:DSSS 1M/s 17dBm / MCS0 16dBm / MCS7 12dBm
- 接收灵敏度:DSSS 1M/s -95dBm / MCS0 -91dBm / MCS7 -72dBm
- Wi-Fi 联盟互操作性认证编号:WFA100441(WPA/WPA2-Personal、B/G/N 连通性测试)
音频
- 集成 DAC、MIC、LINEIN、IIS、PDM、SPDIF 硬件模块;IIS 最高 8 通道(可独立配置输入/输出,16/24bit);PDMLINK 支持 4 路 16bit 数字麦;ADC 4 通道(每通道可配 MIC 或 LINEIN)
- 编码:SBC、MSBC、CVSD、AAC、MP2、MP3、ADPCM、AMR、OPUS、SPX、WAV、PCM
- 解码:SBC、MSBC、CVSD、AAC、ADPCM、AMR、APE、DTS、FLAC、M4A、MP1/2/3、OPUS、SPX、WAV、WMA、PCM;数据源支持 FLASH/SD卡/U盘/LINEIN/外挂FM/网络URL/经典蓝牙等
- 音效:混响、回声、电音、变声变调、变速、移频、啸叫抑制、EQ、DRC、回声消除、传统降噪、神经网络降噪
- 语音:活动语音检测 VAD、单/双 MIC 的打断唤醒 ASR;部分格式支持断点/快进快退/定点/AB 复读
视频
- 支持 DVP-1/2/4/8bit、BT656 图像传感器接口的 YUV sensor,最大 720P 分辨率
- JPEG 编码最大 720P@30fps@AVI 封装;支持任意尺寸 JPEG 单张编解码
- 支持 SPI 接口摄像头;支持一路 DVP + 一路 SPI 摄像头同时输出 YUV(一路图传/录卡,另一路光流算法)
- 支持图像拼接(176×128,最高 60fps);支持软件对 YUV 帧缩放、裁剪
显示
- 支持 SPI、EMI、PAP、RGB888(8bit) / RGB666(6bit) 推屏接口(RGB 可达 480×272@15fps、320×240@30fps)
- 杰理 UI 工具支持屏触摸、软件图层/旋转、音标显示、自定义合成区域、多字号同时显示、SD 卡加载 UI 资源
- 支持播放 JPG、AVI、GIF 文件
网络协议栈与 AI 云平台
- 基础协议:lwIP、mbedTLS、HTTP/HTTPS、WebSocket、CoAP、nopoll、cURL、MQTT、FTP、uIP、iperf
- AI 云平台:图灵、百度云、腾讯云、中国电信智能家居、涂鸦、阿里云、华为 HiLink、天猫精灵、亚马逊、思必驰、玩瞳,以及火山大模型(LLM)
固件升级
- 支持 U盘 / SD卡 单备份升级
- 支持 U盘 / SD卡 / WiFi 双备份升级(升级更安全,失败可回滚)
- 支持「代码双备份 + 资源部分备份 + 资源部分固定」方式升级
SDK 中间件
FAT 文件系统、数据存储记忆、FreeRTOS / Pthread API、循环缓冲 CBUF、帧缓冲 LBUF。
SDK 工程结构
仓库顶层结构如下:
fw-AC79_AIoT_SDK/
├── apps/ # 应用层代码
│ ├── common/ # 公共模块(asr/audio_music/ble/camera/eth/fm/
│ │ # gsensor/jl_math/LLM/ui/usb/update/third_party_profile…)
│ ├── wifi_camera/ # 📌 WiFi 摄像头方案
│ ├── scan_box/ # 📌 扫码盒方案
│ ├── wifi_ipc/ # 📌 WiFi IPC 网络摄像机方案
│ ├── wifi_story_machine/ # 📌 WiFi 故事机方案
│ └── demo/ # 📌 11 个功能 demo(ble/wifi/edr/ui/uvc/video/audio…)
├── cpu/wl82/ # CPU 平台代码 + 预编译库(liba) + 烧录工具(tools)
├── include_lib/ # 头文件(btctrler/btstack/driver/media/net/system/update…)
├── lib/ # 预编译库(net/server/utils…)
├── doc/ # 数据手册(datasheet/AC791N规格书) 与资料(stuff)
├── docs/ # 在线文档源(rst)
├── tools/ # 编译工具(make_prompt.bat + utils)
├── Makefile # 顶层统一编译入口
└── default.workspace # Code::Blocks 工作空间
关键目录说明
| 目录 | 作用 |
|---|---|
apps/*/board/wl82/ | 板级配置:引脚定义、外设初始化、编译选项、.cbp 工程 |
apps/common/ | 公共模块:跨工程共享的音频、视频、蓝牙、WiFi、UI、AI 等中间件 |
apps/common/config/ | 库配置:蓝牙 Profile、用户配置、日志等裁剪配置 |
apps/demo/ | 功能示例:11 个可直接参考或修改的最小 demo 工程 |
cpu/wl82/liba/ | 预编译库:*.a 静态库文件 |
cpu/wl82/tools/ | 烧录工具:下载脚本、固件打包工具等 |
include_lib/ | 头文件:协议栈、驱动、媒体、系统、网络等模块接口 |
方案工程与 Demo 矩阵
方案工程:
| 方案 | 路径 | 适用场景 | make target |
|---|---|---|---|
| WiFi 摄像头 | apps/wifi_camera/ | WiFi 监控摄像头、可视门铃、图传 | ac791n_wifi_camera |
| WiFi IPC | apps/wifi_ipc/ | 网络摄像机 IP Camera、录卡/网络推流 | ac791n_wifi_ipc |
| WiFi 故事机 | apps/wifi_story_machine/ | 儿童故事机、智能音箱、网络音频播放 | ac791n_wifi_story_machine |
| 扫码盒 | apps/scan_box/ | 蓝牙/USB 扫码枪、HID/POS 设备 | ac791n_scan_box |
功能 Demo:
| Demo | 路径 | 演示功能 | make target |
|---|---|---|---|
| demo_ble | apps/demo/demo_ble/ | BLE 低功耗蓝牙数传 | ac791n_demo_demo_ble |
| demo_edr | apps/demo/demo_edr/ | 经典蓝牙 EDR(音乐/SPP/发射器/解码) | ac791n_demo_demo_edr |
| demo_wifi | apps/demo/demo_wifi/ | WiFi STA/AP 联网 | ac791n_demo_demo_wifi |
| demo_wifi_ext | apps/demo/demo_wifi_ext/ | 外置 WiFi / LTE 扩展联网 | ac791n_demo_demo_wifi_ext |
| demo_audio | apps/demo/demo_audio/ | 音频采集/播放/编解码 | ac791n_demo_demo_audio |
| demo_video | apps/demo/demo_video/ | 视频采集/JPEG 编码/录像 | ac791n_demo_demo_video |
| demo_uvc | apps/demo/demo_uvc/ | USB UVC 摄像头 | ac791n_demo_demo_uvc |
| demo_ui | apps/demo/demo_ui/ | UI 显示/图层/触摸 | ac791n_demo_demo_ui |
| demo_hello | apps/demo/demo_hello/ | 最小启动工程(入门骨架) | ac791n_demo_demo_hello |
| demo_DevKitBoard | apps/demo/demo_DevKitBoard/ | 官方开发板综合演示 | ac791n_demo_demo_devkitboard |
| demo_matter | apps/demo/demo_matter/ | Matter 物联网协议(需进入 board 目录编译) | — |
设计意图:方案工程用于量产、demo 工程用于学习。demo_hello 是"最小启动工程",最适合作为新项目起点;各 demo 刻意保持最小依赖,便于单独编译验证某个功能模块。
编译系统
顶层 Makefile 的递归机制
仓库根目录的 Makefile 是统一编译入口,其设计是:每个目标(target)对应一个方案/演示工程,通过 $(MAKE) -C 递归进入对应板级目录执行该工程的 Makefile。顶层不直接参与源码编译,只做任务分发,因此新增工程只需在顶层登记一个 target 即可接入统一构建体系。
顶层支持的目标定义(节选自 Makefile 注释与 .PHONY 声明):
# 支持的目标
# make ac791n_wifi_camera
# make ac791n_scan_box
# make ac791n_wifi_ipc
# make ac791n_wifi_story_machine
# make ac791n_demo_demo_ble
# make ac791n_demo_demo_wifi_ext
# make ac791n_demo_demo_edr
# make ac791n_demo_demo_ui
# make ac791n_demo_demo_hello
# make ac791n_demo_demo_devkitboard
# make ac791n_demo_demo_uvc
# make ac791n_demo_demo_video
# make ac791n_demo_demo_audio
# make ac791n_demo_demo_wifi
Source: Makefile
每个 target 的递归调用模式(以 WiFi 摄像头为例):
.PHONY: all clean ac791n_wifi_camera ... clean_ac791n_wifi_camera ...
all: ac791n_wifi_camera ac791n_scan_box ac791n_wifi_ipc \
ac791n_wifi_story_machine ac791n_demo_demo_ble ... ac791n_demo_demo_wifi
@echo +ALL DONE
clean: clean_ac791n_wifi_camera ...
@echo +CLEAN DONE
ac791n_wifi_camera:
$(MAKE) -C apps/wifi_camera/board/wl82 -f Makefile
clean_ac791n_wifi_camera:
$(MAKE) -C apps/wifi_camera/board/wl82 -f Makefile clean
Source: Makefile
关键设计点:
all目标聚合所有方案与 demo,一条make all即可构建全部工程(用于 CI/全量验证);- 每个工程配对的
clean_<target>只清理该工程的编译产物,互不干扰; - 实际编译参数(工具链路径、裁剪配置、链接脚本)全部下沉到
apps/*/board/wl82/Makefile,顶层保持"零业务逻辑",便于维护。
编译方式对比
| 方式 | 适用平台 | 入口 | 说明 |
|---|---|---|---|
| Code::Blocks | Windows(推荐) | 板级目录下 AC791N_*.cbp | IDE 图形化编译,Build → Build (Ctrl+F9) |
| Makefile 命令行 | Linux / Windows | 顶层 make <target> | Windows 需先用 tools/make_prompt.bat 进入预配置环境 |
| VS Code | 跨平台 | 任务系统(Ctrl+Shift+B) | 仓库预置编译任务,选择目标即可 |
Linux 编译环境准备
# 1. 从 http://pkgman.jieliapp.com/doc/all 找到工具链下载链接
# 2. 解压到 /opt/jieli 目录,保证 /opt/jieli/common/bin/clang 存在
# 3. 确保文件描述符限制足够大(链接阶段需要打开大量文件)
ulimit -n 8096
# 4. 进入 SDK 根目录并行编译
make ac791n_wifi_camera -j`nproc`
Source: Makefile
工具链基于 clang 交叉编译:链接阶段需要同时打开大量目标文件与库文件,因此 ulimit -n 必须足够大(建议 > 8096),否则会以 "Too many open files" 失败——这是 Linux 下最常见的编译问题之一。
编译命令速查表
| 目标 | 应用 | 命令 |
|---|---|---|
| WiFi 摄像头 | wifi_camera | make ac791n_wifi_camera |
| WiFi IPC | wifi_ipc | make ac791n_wifi_ipc |
| WiFi 故事机 | wifi_story_machine | make ac791n_wifi_story_machine |
| 扫码盒 | scan_box | make ac791n_scan_box |
| BLE Demo | demo_ble | make ac791n_demo_demo_ble |
| EDR Demo | demo_edr | make ac791n_demo_demo_edr |
| WiFi Demo | demo_wifi | make ac791n_demo_demo_wifi |
| 扩展 WiFi Demo | demo_wifi_ext | make ac791n_demo_demo_wifi_ext |
| 音频 Demo | demo_audio | make ac791n_demo_demo_audio |
| 视频 Demo | demo_video | make ac791n_demo_demo_video |
| UVC Demo | demo_uvc | make ac791n_demo_demo_uvc |
| UI Demo | demo_ui | make ac791n_demo_demo_ui |
| Hello Demo | demo_hello | make ac791n_demo_demo_hello |
| 开发板 Demo | demo_DevKitBoard | make ac791n_demo_demo_devkitboard |
| 全部 | 全部 | make all |
| 清理全部 | 全部 | make clean |
Core Flow
编译流程
sequenceDiagram
participant Dev as 开发者
participant Top as 顶层 Makefile
participant Board as 板级 Makefile<br/>(apps/*/board/wl82)
participant TC as 杰理工具链 (clang)
participant Libs as 预编译库 (*.a)
participant FW as 固件产物
Dev->>Top: make ac791n_wifi_camera
activate Top
Top->>Top: 查找目标 ac791n_wifi_camera
Top->>Board: $(MAKE) -C apps/wifi_camera/board/wl82
activate Board
Board->>Board: 解析 board_79xx_cfg.h 裁剪配置
Board->>TC: 编译 apps/ 源码 + include_lib 头文件
TC->>Libs: 链接静态库 (net/media/btstack...)
Libs-->>TC: 符号解析
TC-->>Board: 生成固件镜像
Board-->>Top: 返回退出码
deactivate Board
Top-->>Dev: +ALL DONE
deactivate Top
首次烧录流程
flowchart TD
Start([开始]) --> HW["连接开发板<br/>USB 或 UART 到 PC"]
HW --> Mode["按住烧录按键<br/>复位或重新上电<br/>进入编程模式"]
Mode --> Tool["打开 USB 升级工具"]
Tool --> Select["选择编译生成的固件文件"]
Select --> Flash{"烧录成功?"}
Flash -->|"是"| Boot["重启进入应用运行"]
Flash -->|"否"| Retry["检查连接与编程模式<br/>重新烧录"]
Retry --> Tool
Boot --> End([结束])
⚠️ 注意:烧录前请确保 USB 升级工具正确连接且目标板已进入编程模式。量产场景改用生产烧写工具(支持 1 拖 2 等批量烧写),首次开发调试使用 USB 升级工具。
固件升级能力
AC791N 的升级体系覆盖从简单到安全的三个层次:
- 单备份升级:U盘 / SD卡——实现最简单,升级失败可能变砖;
- 双备份升级:U盘 / SD卡 / WiFi——代码双备份,升级失败可回滚,适合 OTA 场景;
- 代码双备份 + 资源部分备份 + 资源部分固定:资源区按需固定,兼顾升级安全与存储利用率。
配置系统
SDK 的配置分两个维度:板级配置(硬件相关:引脚/外设/时钟)与功能裁剪配置(软件相关:协议栈/日志/用户参数)。二者解耦,使得同一套应用代码可以在不同型号芯片与不同外设组合上复用。
板级配置(board_79xx_cfg.h)
每个板级目录 apps/*/board/wl82/ 下的 board_79xx_cfg.h(按芯片型号区分,如 board_7916A_cfg.h)包含:
- 引脚映射:UART / SPI / IIC / SDIO / GPIO 等外设的引脚分配
- 外设使能:开启或关闭特定外设模块(音频、摄像头、屏、按键等)
- 时钟配置:CPU 频率、外设时钟源
- 功能开关与内存配置:按需启用功能、堆栈与缓冲池大小
设计意图:硬件差异全部收敛在板级头文件中,应用代码只通过宏与驱动接口访问硬件,因此从 AC7911B 切换到 AC7916A 通常只需更换板级配置目录,而无需改动应用逻辑。
功能裁剪配置(apps/common/config/)
apps/common/config/
├── bt_profile_config.c # 蓝牙 Profile 配置
├── user_cfg.c # 用户参数配置
├── new_cfg_tool.c # 配置工具
├── ci_transport_uart.c # 串口通信传输配置
└── log_config/ # 日志输出配置
设计意图:通过裁剪未使用的蓝牙 Profile、关闭日志输出等,可显著减小固件体积并降低功耗,是量产优化的第一步。
配置项速览
| 配置项 | 位置 | 类型 | 说明 |
|---|---|---|---|
| 引脚映射 | board_79xx_cfg.h | 宏定义 | 各外设引脚分配 |
| 外设使能 | board_79xx_cfg.h | 宏开关 | 音频/摄像头/屏/按键等模块开关 |
| 时钟配置 | board_79xx_cfg.h | 数值 | CPU 频率、外设时钟源 |
| 蓝牙 Profile | apps/common/config/bt_profile_config.c | 代码 | Profile 裁剪 |
| 用户参数 | apps/common/config/user_cfg.c | 代码 | 用户级参数 |
| 日志等级/通道 | apps/common/config/log_config/ | 配置文件 | 日志输出等级与通道 |
| 串口传输 | apps/common/config/ci_transport_uart.c | 代码 | 串口通信传输配置 |
Usage Examples
克隆仓库并编译 WiFi 摄像头方案
git clone https://gitee.com/Jieli-Tech/fw-AC79_AIoT_SDK.git
cd fw-AC79_AIoT_SDK
# Linux 下直接编译
make ac791n_wifi_camera -j`nproc`
Source: README.md
Windows + Code::Blocks 编译
# 1. 进入对应的板级目录
cd apps/wifi_camera/board/wl82/
# 2. 双击打开 .cbp 工程文件(如 AC791N_WIFI_CAMERA.cbp)
# 3. 在 Code::Blocks 中点击 Build → Build (Ctrl+F9)
# 4. 编译成功后,使用 USB 升级工具烧录生成的固件文件
Source: README.md
清理单个工程
make clean_ac791n_wifi_camera # 清理 wifi_camera 编译产物
make clean_ac791n_demo_demo_ble # 清理 demo_ble 编译产物
Source: README.md
工具链安装验证
# 验证工具链是否安装成功
clang --version
Source: README.md
Professional Notes
常见编译错误与排查
| 错误提示 | 解决方法 |
|---|---|
clang: command not found | 未安装杰理编译工具链,或环境变量未配置 |
Too many open files | Linux 下执行 ulimit -n 8096 增加文件描述符限制 |
cannot find -lxxx | 缺少对应的 .a 库文件,检查 cpu/wl82/liba/ 与 lib/ 目录 |
undefined reference to ... | 功能裁剪配置未包含对应模块,检查 apps/common/config/ 下的配置 |
调试技巧
- 串口日志:通过
apps/common/config/log_config/配置日志输出等级和通道; - GPIO Debug:利用空闲 GPIO 输出调试波形,测量时序;
- 更多问题参考 在线 FAQ 文档。
扩展点:创建自己的工程
官方推荐的新项目流程:
- 复制
apps/下最接近的方案工程(例如音频类产品复制wifi_story_machine,视频类复制wifi_camera); - 进入其
board/wl82/目录,复制并修改与目标芯片型号最接近的board_79xx_cfg.h; - 调整引脚和外设配置,按需在
apps/common/config/裁剪功能; - 在顶层
Makefile中登记新的 target(参照现有 target 的$(MAKE) -C模式)即可接入统一编译体系。
Source: README.md
性能与运维提示
- 并行编译:
make <target> -j<nproc>可显著缩短构建时间(编译与链接均可并行); - 低功耗:芯片内置 PMU,支持 LDO/DCDC 供电模式与多种低功耗模式;WiFi 支持 Power Save;BLE 支持低功耗数传,产品设计时需在板级配置中启用对应省电功能;
- 量产烧写:使用生产烧写工具而非 USB 升级工具,支持批量/裸片烧写。
认证信息
| 类别 | 认证 | 编号 |
|---|---|---|
| 蓝牙 | Core v5.0 | QDID 134104 |
| 蓝牙 | Core v5.1 | QDID 136145 |
| WiFi | Wi-Fi CERTIFIED™ 互操作性(WPA/WPA2-Personal、B/G/N) | WFA100441 |
Related Links
- README.md(SDK 总览与快速开始)
- README-en.md(英文版说明)
- Makefile(顶层编译入口)
- AC79 SDK 在线文档中心
- AC791N 规格书(本地)
- SDK 版本历史
- 问题反馈(Gitee Issues)
快速开始:端到端开发流程
完整生命周期
flowchart LR
A["克隆仓库<br/>git clone"] --> B["选择方案工程<br/>apps/wifi_camera 等"]
B --> C["选择/修改板级配置<br/>board_79xx_cfg.h"]
C --> D["编译固件<br/>make <target>"]
D --> E["烧录调试<br/>USB 升级工具"]
E --> F{"验证通过?"}
F -->|"否"| C
F -->|"是"| G["功能裁剪优化<br/>apps/common/config"]
G --> H["量产烧写<br/>生产烧写工具"]
开发环境前提
| 系统 | 说明 |
|---|---|
| Windows | ✅ 推荐使用 Code::Blocks IDE 编译 |
| Linux | ✅ 支持 Makefile 命令行编译 |
| macOS | ⚠️ 需自行配置交叉编译工具链 |
依赖工具链:
| 工具 | 用途 | 获取方式 |
|---|---|---|
| 杰理编译工具链 | 交叉编译(clang) | 开发环境文档;Linux 从 pkgman.jieliapp.com 下载解压到 /opt/jieli,确保 /opt/jieli/common/bin/clang 存在 |
| USB 升级工具 | 将固件烧录到目标板 | 使用文档 |
| 生产烧写工具 | 量产/裸片烧写 | 使用文档 |
快速开始命令速记
# 1. 获取源码
git clone https://gitee.com/Jieli-Tech/fw-AC79_AIoT_SDK.git
cd fw-AC79_AIoT_SDK
# 2. 首次开发推荐先编译最小 demo_hello 验证工具链
make ac791n_demo_demo_hello
# 3. 编译目标方案
make ac791n_wifi_camera -j`nproc`
# 4. 清理产物
make clean_ac791n_wifi_camera
Source: README.md
总结
fw-AC79_AIoT_SDK 以「一个平台(wl82/AC791N)、四套方案工程(wifi_camera / wifi_ipc / wifi_story_machine / scan_box)、十一组功能 demo」为骨架,通过顶层 Makefile 递归分发与板级配置 + 功能裁剪两级配置实现多芯片、多产品的复用与裁剪。理解本页的分层架构、编译入口与配置入口后,即可按「选工程 → 改板级配置 → 编译 → 烧录」的标准路径启动一个 AC791N 产品项目。各方案工程的内部实现细节请参阅对应的应用示例页面与 AC79 模块示例文档。