软件架构
图例说明:🟢 绿色 = 已实现 | 🟡 黄色 = 部分实现/开发中 | 🔴 红色 = 计划中/未实现
总体架构
graph TB
subgraph L1["应用案例层 (apps)"]
direction LR
A1["🟢 Samples<br/>(单点功能案例)"] ~~~ A2["🟢 References<br/>(整机参考方案)"] ~~~ A3["🔴 Solutions<br/>(产品方案)"]
end
subgraph L2["应用框架层 (framework)"]
direction LR
F1["🟢 api_media<br/>(媒体/音视频/显示)"] ~~~ F2["🟢 api_aidetect<br/>(AI 目标检测)"] ~~~ F3["🟢 api_fr<br/>(人脸识别)"] ~~~ F4["🟢 api_human_track<br/>(人体跟踪)"]
F5["🟢 api_liveserver<br/>(直播服务)"] ~~~ F6["🟢 api_record<br/>(录像/存储)"] ~~~ F7["🟢 api_webrtc<br/>(WebRTC 对讲)"] ~~~ H2[" "]
classDef hidden fill:none,stroke:none,color:white;
class H1,H2 hidden;
end
subgraph L3["组件层 (components)"]
direction LR
B1["🟢 media<br/>(音视频)"] ~~~ B2["🟢 hiai<br/>(AI 能力)"] ~~~ B4["🟢 network<br/>(直播/缓冲/速率)"] ~~~ B5["🟢 adapter<br/>(驱动适配)"]
end
subgraph L4["第三方软件层"]
direction TB
C1["🟢 LVGL / DRM<br/>(图形)"]
C2["🟢 OpenSSL / curl / mqtt<br/>(安全与网络)"]
C3["🟢 wpa_supplicant<br/>(WiFi 管理)"]
C4["🟢 iotc / libsle_host<br/>(IoT 连接)"]
C1 ~~~ C3
C2 ~~~ C4
end
subgraph L5["HiSilicon SDK"]
direction TB
D1["🟢 MPP<br/>(多媒体)"]
D2["🟢 BSP<br/>(U-Boot + Linux)"]
D3["🟢 AIComponent<br/>(NPU 推理)"]
D4["🟢 Middleware<br/>(中间件)"]
D1 ~~~ D3
D2 ~~~ D4
end
subgraph L6["硬件层"]
direction LR
E1["🟢 ARM 处理器"] ~~~ E2["🟢 NPU"] ~~~ E3["🟢 ISP"] ~~~ E4["🟢 VPSS / VGS"]
end
L1 -.-> L3
L1 ---> L2
L2 ---> L3
L3 ---> L4
L3 ---> L5 --> L6
各层说明
应用案例层
应用案例位于开发板仓库目录(apps/<board>/)下,按成熟度分为三类:
| 分类 | 说明 | 状态 |
|---|---|---|
samples/ |
组件能力的单点功能验证案例 | 🟢 已有 |
references/ |
可烧录运行的整机参考方案 | 🟢 已有 |
solutions/ |
完整产品解决方案 | 🔴 暂无 |
当前 references/ 包含以下方案:
- AI 台灯
- 云端 AI Agent
- 开箱即用案例显示
- 离线语音空调控制
应用框架层
面向应用案例功能的高级聚合框架,提供同进程调用和跨进程调用两种模式的统一形式高级封装接口。 应用案例既可以直接调用组件,也可以通过该框架层统一调用组件;应用框架层以虚线连接,表示这是一条可选的间接调用路径。
| 对外功能模块 | 说明 | 状态 |
|---|---|---|
api_media |
媒体系统、音视频采集/编解码/显示、抓拍与 OSD | 🟢 |
api_aidetect |
AI 目标检测(人脸、人体、车辆、宠物等) | 🟢 |
api_fr |
人脸识别与人脸库管理 | 🟢 |
api_human_track |
人体/目标跟踪与结果叠加 | 🟢 |
api_liveserver |
点播服务,视频/音频推流 | 🟢 |
api_record |
MP4 录像与 SD 卡存储 | 🟢 |
api_webrtc |
WebRTC 点对点音视频对讲 | 🟢 |
组件层
组件层是项目开发的核心组件复用部分,
media
媒体与显示组件,提供音视频管线与媒体框架:
| 模块 | 说明 | 状态 |
|---|---|---|
| pipeline | 音视频处理管线 | 🟢 |
| framework | 媒体框架,统一接口与进程间调用 | 🟢 |
| eventhub | 媒体事件订阅与分发 | 🟢 |
| python_api | MicroPython 媒体模块 | 🟡 |
hiai
AI 能力组件,提供云端 Agent 接入、离线语音等端侧 AI 能力:
| 模块 | 说明 | 状态 |
|---|---|---|
| adapt | 厂商适配层,含 KWS、音频前端、云端接入 | 🟢 |
| cloud_agent | 云端 AI Agent 接入,支持阿里 qwen | 🟢 |
| offline_voice | 离线语音识别 | 🟢 |
| postprocess | 推理结果后处理 | 🟢 |
| xclaws | 端侧 AI Agent,zeroclaw 封装,支持知识库检索 | 🟡 |
network
网络组件,提供直播推流、缓冲与速率控制:
| 模块 | 说明 | 状态 |
|---|---|---|
| livestream | RTSP 直播推流 | 🟢 |
| mbuffer | 媒体内存缓冲管理 | 🟢 |
| ot_autorate | 码率自适应控制 | 🟢 |
adapter
硬件抽象与驱动适配组件:
| 分类 | 说明 | 状态 |
|---|---|---|
| hal | 硬件抽象接口 | 🟢 |
| wifi | WS73 与 WS53 模组驱动 | 🟢 |
| lcd | ST7789V、GC9B72、JD9853 等 6 款驱动 | 🟢 |
| touch | goodix、ft5x06、hynitron 驱动 | 🟢 |
| sensor | gc4023、os04d10、sc450ai 等 7 款驱动 | 🟢 |
| flash | 存储器件驱动 | 🟢 |
| adc | ADC 驱动 | 🟢 |
| board_io_cfg | 管脚复用配置驱动 | 🟢 |
第三方软件层
第三方开源软件与海思连接库,位于 open_source/ 与 vendor/ 目录:
| 分类 | 软件 | 说明 |
|---|---|---|
| 图形 | lvgl、drm | GUI 渲染 |
| 安全 | openssl、mbedtls、dropbear | TLS 与 SSH |
| 网络 | curl、mqtt、wpa_supplicant、libnl | HTTP 与 MQTT 客户端、WiFi 管理 |
| 媒体 | mediakit、openh264、tinyh264、libsrtp、cjson | 流媒体与编解码 |
| 其他 | micropython、gdb、mtd-utils、zeroclaw | Python 脚本、调试与存储工具 |
| vendor | iotc | IoT 连接库 |
HiSilicon SDK
海思芯片 SDK,提供多媒体、板级支持与 AI 推理能力:
| 组件 | 说明 | 状态 |
|---|---|---|
| MPP | 多媒体处理平台,经 hi_mapi 接口封装调用 | 🟢 |
| BSP | U-Boot、Linux 内核与根文件系统 | 🟢 |
| AIComponent | AI 组件 SDK,提供 NPU 推理 | 🟢 |
| Middleware | 中间件,默认开启 | 🟢 |
MPP 提供 VI、VPSS、VENC、VDEC、VO、AI、AO 等模块; AIComponent 支持目标检测与人脸识别功能。 Middleware 提供录像、事件路由等功能接口。
硬件层
硬件能力由具体芯片提供,本项目面向多芯片组合:
| 模块 | 说明 | 状态 |
|---|---|---|
| 处理器 | ARM 处理器核 | 🟢 |
| NPU | 神经网络推理加速单元 | 🟢 |
| ISP | 图像信号处理 | 🟢 |
| VPSS / VGS | 视频与图形处理加速 | 🟢 |
技术选型说明
- 构建系统:CMake + Kconfig,类 Linux kernel 的菜单式配置体系
- UI 框架:LVGL v9.5,轻量级嵌入式 GUI,通过 DRM 渲染
- 加密:OpenSSL 1.1.1w,提供 TLS 支持
- 代码管理:repo + git,多仓统一管理
- AI 开发辅助:skill + Rules,
.agents/下提供项目相关的 AI 技能