V881 M3-WB2 sc1770v_aiglass 详细开发笔记

一、项目基础硬件 & 平台全局信息

1.1 硬件设备信息

  • 产品型号:sc1770v_aiglass(AI智能眼镜)
  • 硬件板丝印:A11_MB_R_V10
  • 启动模式:FASTBOOT 启动
  • 主SOC:全志 V881 M3-WB2
  • 芯片代号:sun252iw1p1
  • 架构:RISC-V 32位 玄铁处理器
  • 系统电压:0.92V

1.2 系统软件栈

  • 系统框架:Tina Linux(基于 OpenWrt 改造)

  • 内核版本:Linux 6.6-xuantie 玄铁定制内核

  • Boot版本:U-Boot 2023、Brandy 2.0

  • 异构架构:双核AMP架构

    • 大核:跑 Linux 主系统(业务、应用、网络、多媒体)
    • 小核:跑 RTOS 实时系统(低功耗、音频、MCU级实时任务)

整机标准启动流程(完整链路)
Boot0 → Sboot → OpenSBI → U-Boot → Linux6.6 Kernel → OpenWrt RootFS

  • Boot0:ROM加载,初始化DDR、时钟、基础硬件
  • Sboot:安全启动校验、二级引导
  • OpenSBI:RISC-V架构底层SBI服务
  • U-Boot:读取env参数、加载设备树、加载内核
  • Kernel:启动Linux内核、加载驱动
  • RootFS:启动OpenWrt系统、应用、服务

二、SDK 顶层全目录

这是一个全志 V881 芯片的 OpenWrt/RTOS 混合 SDK
在这里插入图片描述
在这里插入图片描述

2.1 brandy/ 【启动固件源码区】
全志原厂 Bootloader 整套源码,是整机开机启动第一层级源码。

  • 包含:boot0、spl、sboot、opensbi、u-boot 完整源码
  • 作用:负责 DDR 初始化、时钟初始化、安全启动、内核加载
  • 编译命令:mboot0、muboot、mboot
  • 核心子目录:brandy-2.0/u-boot-bsp、brandy-2.0/spl
    -
    2.2 bsp/ 【板级底层驱动区】

    Board Support Package 板级支持包,所有底层硬件改动必须改这里。
  • 包含:板级外设驱动、GPIO、UART、I2C、SPI、PWM、时钟、PMU电源管理
  • 包含:公共设备树DTS、电压调频VF配置、板级硬件参数
  • 职责:内核底层硬件适配、芯片寄存器配置、底层时序配置

2.3 build/ 【全局编译入口】
项目编译总控制目录,整个SDK的编译中枢。

  • 软链接 build.sh 指向 build/top_build.sh
  • 包含:全局编译脚本、环境变量、lunch选型逻辑、模块编译规则
  • 所有 mxxx 编译命令、pack打包命令均由该目录调度

2.4 device/ 【产品差异化配置总入口|最重要目录】
所有板级配置、分区、DTS、启动参数、产品配置全部在这里,不同机型靠此目录区分。

  • 功能:板级DTS、分区表、env启动参数、image打包配置、产品宏定义
  • 包含预编译启动固件、开机动画、产品专属配置
    -
    2.5 kernel/ 【Linux6.6 内核源码】

    纯内核源码目录,负责系统内核、驱动、调度、内存管理。
  • 路径:kernel/linux-6.6-xuantie/
  • 包含:内核源码、Kconfig、内核驱动、模块配置
  • 编译命令:mkernel
  • 内核配置依赖 device 下的 bsp_defconfig 与 board.dts

2.6 openwrt/ 【根文件系统 & 应用生态】
整机系统上层应用、根文件系统、软件包全部在这里。

  • 包含:rootfs根文件系统、LUCI网页、各种应用服务、IPK安装包
  • 控制:开机脚本、系统服务、用户程序、文件系统结构
  • 编译产物:rootfs.img、各类应用二进制文件

2.7 out/ 【全量编译产物输出目录】
所有编译后的固件、镜像、库、工具全部输出至此,按机型隔离。

  • 固定产物路径:out/v861/sc1770v_aiglass/
  • 区分不同项目、不同机型产物,互不干扰

2.8 platform/ 【多媒体 & AI 平台层】
全志媒体平台、AI平台核心源码,视频、图像、NPU全部在这里。

  • 核心核心:eyesee-mpp 媒体处理框架
  • 包含:VI/VO/VENC/VDEC/ISP/3A/AWNN NPU 全套源码
  • 包含音频、显示、USB、无线、大模型、视觉工具库
  • 编译命令:mkmpp

2.9 prebuilt/ 【预编译闭源库 & 工具链】
官方预编译好的二进制文件、闭源SDK、静态库、动态库、工具链。

  • 包含MPP、ISP、NPU闭源 .so / .a 库
  • 包含交叉编译依赖工具链文件

2.10 rtos/ 【RISC-V 小核实时系统】
AMP异构小核固件,独立实时系统。

  • 核心固件:amp_rv0.bin
  • 作用:低功耗控制、音频实时处理、MCU级任务
  • 普通Linux应用开发基本无需改动

2.11 tools/ 【固件工具集】
镜像打包、分区生成、烧录工具、dtc设备树编译、固件合成脚本。

2.12 docs/ 【项目文档】
原厂手册、硬件规格、开发说明文档。

三、device目录 层级详解(项目配置核心)
整机所有板级配置、分区、启动、产品属性全部由该目录决定

device/
├── config/
│ ├── chips/ # 芯片级专属配置
│ │ └── v861/ # V881/V861芯片通用配置目录
│ │ ├── bin/ # 预编译启动固件合集(boot0/uboot/opensbi/sboot)
│ │ ├── boot-resource/# 开机动画、LOGO、字体资源
│ │ ├── configs/ # 所有产品机型配置文件夹
│ │ │ └── sc1770v_aiglass/ # 当前AI眼镜专属配置
│ │ └── tools/ # 芯片级打包、镜像工具
│ ├── common/ # 全平台公共通用配置
│ │ ├── imagecfg/ # 镜像打包规则 image_linux.cfg / image_nor.cfg
│ │ ├── partition/ # 公共分区表模板
│ │ └── dtb/ # 公共设备树头文件、通用dtsi
│ └── rootfs_tar/ # rootfs基础文件系统模板
└── product -> ./config/chips/v861/ # 产品软链接,编译识别入口

sc1770v_aiglass 产品专属配置文件全解

路径:device/config/chips/v861/configs/sc1770v_aiglass/

  • BoardConfig.mk:项目全局编译总配置
    • 定义芯片型号、架构、内核版本、uboot版本、编译参数
    • 控制所有 mxxx编译命令的编译入口
  • sys_partition.fex:NAND闪存分区表(整机分区规则)
  • sys_partition_nor.fex:NOR闪存分区表
  • env.cfg:U-Boot环境变量、内核bootargs启动参数、内存参数
  • board.dts:Linux内核板级设备树(硬件引脚、外设、总线配置)
  • uboot-board.dts:U-Boot阶段设备树
  • boot_package.cfg:mboot打包规则(opensbi+uboot合成)
  • image.cfg:整机固件镜像打包配置
  • linux-6.6-xuantie/bsp_defconfig:内核功能开关配置
  • boot-resource:开机LOGO、动画

四、修改uboot,kernel,openwrt,mpp,配置方法

  • 改硬件引脚、外设、总线 → 修改 device 下 board.dts / uboot-board.dts
  • 改内核功能、驱动开关、内核配置 → 修改 bsp_defconfig
  • 改 U-Boot 功能、命令、驱动、宏开关 → 修改 U-Boot defconfig
  • 改 U-Boot 硬件、设备树 → 修改 uboot-board.dts
  • 改分区大小、分区结构 → 修改 sys_partition.fex
  • 改开机启动参数、bootargs → 修改 env.cfg
  • 改视频采集、编码、ISP、3A、NPU → 修改 platform/eyesee-mpp
  • 改系统应用、开机自启、服务、网页后台 → 修改 openwrt/package
  • 改编译全局配置、芯片 / 内核 /uboot 版本 → 修改 BoardConfig.mk
  • 改开机动画、LOGO、开机画面 → 修改 device/boot-resource

对应精准路径
✅ U-Boot 相关

  • U-Boot DTS:device/config/chips/v861/configs/sc1770v_aiglass/uboot-board.dts
  • U-Boot defconfig(功能配置):brandy/brandy-2.0/u-boot-bsp/configs/sun252iw1p1_v861_defconfig
  • U-Boot 源码目录:brandy/brandy-2.0/u-boot-bsp/

✅ Kernel 相关

  • Kernel DTS(板级设备树):device/config/chips/v861/configs/sc1770v_aiglass/linux-6.6-xuantie/board.dts

  • Kernel defconfig(内核功能配置):device/config/chips/v861/configs/sc1770v_aiglass/linux-6.6-xuantie/bsp_defconfig
    配置编译命令:make kernel_menuconfig
    最终保存位置:device/config/chips/v861/configs/sc1770v_aiglass/linux-6.6-xuantie/bsp_defconfig

  • Kernel 源码目录:kernel/linux-6.6-xuantie/

✅ OpenWrt 文件系统,mpp 相关
配置编译命令:make menuconfig

  • 最终保存位置:/home/zcb/v881-sdk/openwrt/target/v861/v861-sc1770v_aiglass/defconfig
  • 作用:增删软件包、开启 / 关闭系统功能、配置根文件系统

五、platform 多媒体 & AI 架构全解析

5.1 顶层目录功能

  • audio/:ALSA音频驱动、音频控制、声卡适配
  • common/:ION内存、日志、基础公共库
  • display/:LCD显示、VO视频输出、图层管理
  • eyesee-apps/:官方AI眼镜、UVC、AOV示例Demo(当前板型专用)
  • eyesee-mpp/:✅ 全志媒体处理核心框架
  • llm/:NPU大模型推理、AI计算组件
  • multimedia/:CedarX编解码引擎、多媒体Demo工具
  • power/:时钟、DVFS调频、电源功耗管理
  • usb/:USB gadget、UVC摄像头、USB协议适配
  • vision/:ISP图像处理、视觉算法、AI工具链,NPU
  • wireless/:WiFi、蓝牙驱动与适配

5.2 eyesee-mpp 核心完整拆解(VI/VO/VENC/VDEC/ISP)
媒体业务全部核心逻辑,所有视频采集、显示、编码、解码、图像处理都在这里。
eyesee-mpp/
├── external/ # 第三方依赖库(jsoncpp、sqlite、web服务、音频库)
├── framework/ # 高层应用框架(相机/录像/播放器/UVC)
├── middleware/ # ✅ MPP核心中间件(MPI媒体接口层)
└── system/ # ION内存、VB缓冲池、硬件抽象、系统初始化
middleware 核心文件(重中之重)

  • mpi_vi.c:视频输入(摄像头采集)
  • mpi_vo.c:视频输出(屏幕显示)
  • mpi_venc.c:H264/H265 视频编码
  • mpi_vdec.c:视频解码
  • mpi_isp.c:ISP图像信号处理
  • mpi_ae/awb.c:自动曝光、自动白平衡3A算法
  • mpi_sys.c:MPP系统绑定、缓冲管理、内存调度

六、编译sdk方法:

1、单个镜像模块编译
设置环境并选择产品
source build/envsetup.sh
lunch
选择步骤

  1. 选择机型:8 → v861-sc1770v_aiglass-tina
  2. 选择主芯片:3 → V881
  3. 选择子型号:3 → M3-WB2
  4. 选择电压:1 → 0.92V

编译 Boot0 / SPL / Sboot
mboot0
编译 U-Boot
muboot
编译 Linux 内核
mkernel
编译 MPP / OpenWrt 根文件系统
mkmpp
打包最终量产镜像
pack

2、全量编译
source build/envsetup.sh
lunch
8 → 3 → 3 → 1
boot0 + uboot + kernel + mpp + openwrt + 自动 pack
mp -j1

七、out 编译输出目录完整结构与产物释义

基准路径:v881-sdk/out/v861/sc1770v_aiglass/

7.1 最终量产整机固件
out/v881m3-wb2_linux_sc1770v_aiglass_uart0.img(34MB 整机烧录镜像)

7.2 细分输出目录
① openwrt/ 固件源文件目录(pack 打包从该目录取源)

  • u-boot-sun252iw1p1.bin:主 U-Boot 固件
  • u-boot-nodtb.fex / u-boot-dtb.fex:无设备树 / 带设备树 U-Boot 镜像
  • sboot_nand_sun252iw1p1.bin:Sboot 一级启动固件
  • sunxi.dtb:编译后设备树二进制
  • boot.img:Linux 内核 + 设备树镜像,打包生成boot.fex
  • rootfs.img:OpenWrt 根文件系统原始镜像,打包生成rootfs.fex

② pack_out/ 分区打包产物目录
pack 根据 sys_partition.fex 拆分生成所有分区 fex 镜像与配置脚本

  • sys_partition.fex:打包最终生效分区配置表
  • boot-resource.fex:开机 LOGO / 启动资源分区镜像
  • env.fex:U-Boot 环境变量分区镜像(env、env-redund 双分区共用)
  • boot.fex:内核分区镜像(bootA/bootB 双备份分区)
  • amp_rv0.fex:RISC-V 小核 RTOS 固件(riscv0/riscv0-r 双备份)
  • rootfs.fex:根文件系统镜像(rootfsA/rootfsB 双备份分区)
  • 辅助配置:image.cfg、boot_package.fex、sunxi_mbr.fex、toc 系列配置、cardscript 脚本等

7.3 openwrt/build_dir、staging_dir、packages 编译中间目录
1.staging_dir 交叉编译汇总目录
存放工具链、头文件、库、文件系统模板

  • staging_dir/toolchain:RISC-V32 交叉编译工具链
  • staging_dir/target/usr/include:MPP/ISP/NPU/ 系统头文件汇总
  • staging_dir/target/usr/lib:编译产出所有.so 动态库、.a 静态库
  • staging_dir/target/root-v861-sc1770v_aiglass:根文件系统原始模板目录

2.build_dir 源码编译临时目录

  • 各软件包、MPP 源码编译临时目录,编译过程 libawion.so、librt_media.so 等动态库由此拷贝至 ramdisk

3.packages/
编译完成的 ipk 安装包,可单独离线安装到成品设备
补充:板级备用 bin 目录
device/config/chips/v861/configs/sc1770v_aiglass/bin/

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐