只读分享解决方案文档原理方案设计📅 2026-10-14🔖 rev0⏳ 还有3日到期
🔧解决方案&应用市场分析 -> 原理方案设计 -> 主芯片方案调试开发 -> 全志Allwinner_开发指南

全志Allwinner_开发指南

同系列 · 原理方案设计
扫码打开本页
微信扫码

全志 Allwinner 开发指南

编制日期 2026-10-14

从 BROM / FEL 启动、Tina Linux 编译,到 SPI Flash 与 eMMC 量产烧录与多媒体外设 —— 一份把「全志特有的坑」全部前置的工程手册

8
条产品线覆盖全场景
T 车规 / A 终端 / H 影音 / V 视觉 / MR 机器人 / R IoT / F 低成本 / D1 RISC-V
0xFFFF0000
BROM 固定入口地址
FEL 就在这里,物理上无法被破坏
180 μA
V821 Wi-Fi 保活电流
@4.2V,DTIM10 路由器保活
8 台
PhoenixUSBpro 单机并发
产线批量烧录的上限
3 TOPS
A733 / T736 端侧算力
INT8,配 AI-SR / AI-ISP 算法
64 MB
V821 内置 DDR2(SiP)
可再外挂 NOR + SD NAND / eMMC

结论:全志是「用一颗 SoC 同时解决算力、视觉、实时控制与联网」的典型代表, 几乎每一颗中高端型号都是异构架构(T527 = 8×A55 + 玄铁 E906,V853 = Cortex-A7 + RISC-V E907, R128/F133/D1-H = RISC-V + Cortex-M),大核跑 Tina Linux、MCU 核跑 RTOS 负责电源管理与实时外设。 它的开发链路比 MCU 复杂,但也有一条别的厂商给不了的兜底通道: FEL 固化在 BROM 里,无论固件写成什么样都能救回来。真正让人卡住的从来不是代码,而是三件小事: 启动偏移落在 8 KB 位置把 GPT 分区表冲掉、U-Boot 打印串口的 CONS_INDEX 与 pinmux 改了一处漏了两处、 H616 之后的芯片没有 CPUS 管理处理器导致 suspend 走不通。 本文按「启动 → 环境 → 编译 → 烧录 → 量产」的真实流水线组织, 每一段都给出可复制的命令、可对照的表格、以及该段最常踩的坑。

报告总结

全志的资料分布在一个官网产品页(参数)、一个开发者社区(编译与例程)、一个 Tina 在线文档(操作步骤)、 以及一个 linux-sunxi.org Wiki(主线与 boot 细节)四个地方,彼此之间没有交叉索引。 网上的中文教程绝大多数停留在「下载 SDK → lunch → make → pack → PhoenixSuit 刷机」这一步, 一旦遇到进不了 FEL、eMMC 识别不到、内核不打印、摄像头花屏就无解。本文档做了三件分散文档没做的事:

  • 把 FEL 定位成排障的核心工具:明确指出「用 sunxi-fel uboot 把 U-Boot 跑起来」这个动作 能一刀切开「BROM / DRAM / U-Boot 有问题」和「介质内容 / 内核有问题」——这是全志平台最有效的二分法。
  • 把坑写在坑发生的地方:不单独罗列「常见问题」,而是在讲每个环节时就把该环节的失效现象、原因、处置一起给出。
  • 补齐存储视角:全志生态对存储方案最友好(BROM 支持 SD / eMMC / 原始 NAND / SPI NOR 四类启动介质, 还支持「未贴片预烧录」),本文按存储选型的角度把这条线单独抽出来讲,见第 3.7 节与附录 B。

读者路径

本文档共 17 章 + 4 个附录,按「先跑通、再理解」的顺序组织:

  • 只想尽快跑通第一个系统:第 4 章(Tina 编译)→ 第 5 章(烧录)→ 第 17 章(核查清单),三章足够。
  • 要做产品开发:第 2 章选型 → 第 3 章启动链 → 第 7 章硬件设计 → 第 12 章设备树。
  • 调不通、报错:直接翻第 16 章故障排查速查表,按现象分层定位。
  • 要写驱动:第 8 章 GPIO → 第 9 章 SPI/I2C/ADC/PWM → 第 10 章显示视频 → 第 11 章网络 USB CAN。
  • 做视觉产品(IPC / 门锁 / AI 眼镜):第 2.5 节选型 → 第 6 章异构 → 第 10.4 节 ISP → 附录 B 存储组合。
  • 做电池供电的终端:第 14 章低功耗,注意 H616 起没有 CPUS 这条硬约束。
  • 从树莓派迁移:第 15.1 节 —— GPIO 编号完全一致,代码可以大面积复用。
  • 评估存储方案:附录 B —— 五种启动介质对比与四种存储组合方案。

1 · 文档导读与阅读路径

这一章说明本文档的边界:覆盖什么、不覆盖什么,以及为什么把内容按「流水线」而不是按「功能模块」组织。

1.1 覆盖范围

本文档覆盖从拿到一块全志开发板,到固件跑起来、能在串口停下、并能量产烧录的完整链路:

  • 家族与选型:T / A / H / V / MR / R / F / D1 八条线的规格对照,以及按「终端类型」而非「性能」的选型思路。
  • 启动链:BROM 地址布局、eGON.BRM 内部序列、启动介质探测顺序、FEL 的五种进入方式与命令用法、boot0 旧式布局、U-Boot 官方构建与四种安装方式。
  • 开发环境:Tina Linux 五步编译流程、依赖包清单、repo 工具与镜像源、SDK 目录结构、sys_partition.fex 分区配置、只编一块的快捷命令、主线 Linux 路线。
  • 烧录与量产:五种官方烧录工具矩阵、PhoenixSuit 完整流程、sunxi-fel 命令详解、产线三种模式对比、Secure Boot 与固件加密、存储器件预烧录方案。
  • 异构架构:Linux 核与 RTOS 核的分工、AMP / RPMsg 通信、V821 双核的低功耗范式。
  • 硬件设计:电源分区与上电时序、时钟与复位、启动相关引脚、存储接口布线(SMHC / SPI / 原始 NAND)、显示与摄像头、USB 走线、散热。
  • 驱动与外设:GPIO 编号算法、libgpiod、pinmux、调试串口、SPI / I2C / ADC / PWM、显示子系统、VE 编解码、ISP、音频、GMAC / USB / CAN。
  • 调试与排障:四层调试通道、串口与 U-Boot 命令、ADB、ftrace / perf、时钟与电源域观测,以及四类故障速查表。

1.2 不覆盖什么

以下内容超出本文档范围,需要时请查阅对应官方资料:

  • ISP 算法级调优:全志提供 PC 端 ISP 工具支持在线/离线/远程调试,但 3A 参数、噪声抑制曲线、 色彩矩阵的具体调优是光学与算法工程,本文只给「硬件到出图」的定位路径(第 10.4 节)。
  • Android 应用开发:A 系列的 Android BSP、Framework 与 APP 移植属于 Android 生态话题,本文只覆盖 Linux 侧。
  • 每一款封装的完整管脚定义:本文给出接口数量与关键引脚原则,完整管脚表必须查对应 SoC 的 User Manual 与 Datasheet。
  • 具体寄存器位域全集:全志 User Manual 动辄上千页,本文只给做决策必须的「哪个模块在哪、找谁帮忙」,写代码时仍需对着手册核。
  • PCB 高速仿真:DDR / MIPI / USB 3.1 的 SI 仿真需要专业工具与厂商模型,本文给的是可执行的规则与经验值。
  • RTOS 侧的 RTOS 本身:Melis 的调度器、IPC 机制不在本文范围,本文只讲「怎么分工、怎么通信」。

1.3 全志的产品线命名规律

全志的型号命名比 MCU 厂商复杂,原因是它同时按应用场景与算力档位两个维度命名。 先记住一条铁律:第一个字母决定应用场景,数字决定算力档位。

字母系列场景典型算力档
AApplication通用智能终端(Android / Linux)A133 4×A7 → A527 8×A55 → A733 2×A76+6×A55
T工控与车载工业级 + 车规,-40~85℃T113 4×A7 → T527 8×A55 → T736 8 核 3 TOPS
HHome / HDMIOTT 盒子与家庭影音H3 4×A7 → H616/H618 4×A53 → H728 八核
VVision低功耗 AI 视觉 SoCV821 双 RISC-V → V853 三核异构 → V881 双 C907
MRMobile Robot机器人专用MR153 入门 → MR536 → MR527 高端扫地机
RRobotics / Real-timeAIoT 与实时控制R128 超低功耗 → R329 0.8 TOPS AIPU
F低成本线LCD 控制器 / 上位机 / 教育单板F1C100s ARM9 → F133 玄铁 C906 + M0
D1D1 / D1s / D1-HRISC-V 边缘 AI 入门玄铁 C906,D1 @1.0GHz
型号里的数字不代表跨系列可比

A733 的 733 与 T736 的 736 没有任何关系。 「7xx」在不同系列里代表不同算力等级,跨系列比数字毫无意义。 唯一有意义的横向对比维度是:CPU 核型号、主频、NPU TOPS、内存类型与位宽、封装。

1.4 事实来源与免责

本文档所有数值型信息来自全志官方产品页、官方社区文档、U-Boot 官方文档与 linux-sunxi.org, 正文关键处标注出处。主要来源及口径如下:

资料提供的内容口径说明
allwinnertech.com 产品页T527 / H618 等型号的官方规格表**以官网当前 Revision 为准**;同型号规格会随硅版本更新
docs.aw-ol.com 在线文档Tina 编译、烧写、SDK 使用指南以 D1 / D1s / D1-H 与 F135/F136 平台的文档为准
docs.u-boot.org 全志章节U-Boot 构建、TF-A、crust、四种安装方式与偏移**主线 U-Boot 官方文档,权威度最高**
linux-sunxi.org WikiBROM 地址布局、启动介质顺序、die revision、主线支持度社区维护,但内容经过实测验证,是主线视角的事实源
bbs.aw-ol.com 官方 PDF BriefT527 系列详细规格(V0.11 draft)官方发布但标注为 draft,非最终版
sbc.compare / 板卡厂商规格7-Zip 与 Geekbench 实测跑分第三方实测,非官方数据,仅作相对参考
代理商与方案商文档(定昌、ArmSoM 等)A733 / V821 板级配置与验证过的接口组合工程参考,需与最新 Datasheet 复核
以正式 Datasheet 为准

全志的消费类芯片(H / F 系列)生命周期较短,部分型号已进入 EOL 流程; A / T 系列仍在活跃供货但料号也会按 PCN 变更。 文中引用某型号时一定标了出处,正式立项前请到 allwinnertech.com 与 aw-ol.com 复核目标料号的最新 Datasheet、PCN 状态与生命周期。 特别提醒两条容易被转载资料掩盖的事实:H616 与 H618 的 L2 Cache 与 die revision 不同, H616 起芯片不再带 CPUS 管理处理器 —— 这两条都会直接影响设计。

全志开发的五段式流水线 —— 每一段做完都要有一个「能验收的标志」全志的特殊之处:FEL 通道永远可用,它是最底层的事实来源① 硬件SoC / PMIC / DDRFEL 能识别验收标志 ↓② 环境Tina SDK / 主线能拉全并 lunch验收标志 ↓③ 构建make / pack产出 .img验收标志 ↓④ 烧录PhoenixSuit / fel提示烧写成功验收标志 ↓⑤ 调试串口 / ADB / SSH能进内核验收标志 ↓本指南的写法:先讲能验收的标志,再讲每个环节的失效现象第 3~6 章走流水线的中段(启动 / 环境 / 烧录 / 异构);第 7~14 章是跑起来之后的硬件与驱动细节;第 15~17 章是迁移与排障。
图 1 · 全志开发的五段式流水线与本文档的组织逻辑

2 · 家族全景与选型

全志不是「一个系列做很多料」,而是「八条产品线各做一堆料」。这一章先把货架摆开,讲清每条线存在的理由,再给选型路径。

2.1 九条产品线的定位

全志(珠海,全志科技股份有限公司,Fabless)的产品线是按应用场景切的,而不是按性能切的。 这与 STM32 / 沁恒按「资源档位」切的思路完全不同,也直接决定了选型的第一刀应该砍在哪里:

系列定位算力跨度主打软件栈典型终端
T工业级 + 车规4×A7 → 8×A55 + 3 TOPSTina Linux(+ RTOS MCU 核)智能座舱、PLC、工业网关、HUD、边缘计算
A通用智能终端4×A7 → 2×A76 + 6×A55 + 3 TOPSAndroid / Tina Linux平板、商显、智能家居中控
HOTT 与家庭影音4×A7 → 4×A53 → 八核Android TV / Tina Linux电视盒子、智能屏、投影仪
V低功耗 AI 视觉双 RISC-V → 三核异构 + 1 TOPSTina Linux + Melis RTOSIPC、智能门锁、门铃、AI 眼镜、ADAS
MR机器人专用4 核 ARM+RISC-V → 八核 AITina Linux + RTOS扫地机器人、割草机器人、服务机器人
RAIoT 与实时控制超低功耗 → 0.8 TOPS AIPUTina Linux / RTOS语音面板、智能家居、电池终端
F低成本线ARM9 → 玄铁 C906 + M0Tina Linux / RTOSLCD 控制器、上位机、教育单板
D1RISC-V 入门玄铁 C906 @1.0GHzTina Linux(开源度最高)教育机器人、IoT 网关、开发板
一条贯穿全系列的事实:异构架构是常态

T527 = 8×Cortex-A55 + 玄铁 RISC-V E906;V853 = Cortex-A7 + RISC-V E907; A733 = 2×A76 + 6×A55 + 玄铁 E902;R128 = RISC-V C906 + Cortex-M33;F133 = 玄铁 C906 + Cortex-M0;D1-H = C906 + M33。 典型形态是大核跑 Linux、MCU 核跑 RTOS 负责电源管理与实时外设, 所以「这颗芯片能不能做我的产品」这个问题,一半答案在 Linux,一半答案在 RTOS 侧的 SDK 质量。 第 6 章专门讲这条。

2.2 T 系列:工业与车载(当前主推)

T 系列是全志现在最值得投入的一条线 —— 它有 AEC-Q100 车规型号(T527V), 有 -40~85℃ 工业级覆盖,有 3 TOPS NPU 的中高端型号(T736),也有 4 核 + 3 网口 + 双 CAN-FD 的工控型号(T153)。 智能座舱、工业 PLC、工业网关、边缘计算网关都在用。

型号CPUNPU内存关键接口定位
T7368 核(未核实具体配置)3 TOPSLPDDR4/4X/5(未核实)座舱全接口(未核实)智能座舱、工业控制、边缘计算
T5364×Cortex-A553 TOPSDDR3/DDR4/LPDDR43×GMAC、双 CAN-FDPLC、工业网关、3D 打印机、电力设备
T5278×A55(4×1.8G + 4×1.4G 大小核)2 TOPS(INT8)32-bit DDR3/DDR3L/DDR4/LPDDR3/LPDDR4/LPDDR4X,最大 4 GB2×CAN、PCIe 2.1 + USB 3.1 combo、2×GMAC、10×UART、9×TWI、4×SPI、30×PWM智慧工业、智慧电力、机器人
T527V同 T527同 T527同 T527同 T527通过 AEC-Q100 车规认证,智能座舱专用
T5074×Cortex-A55无DDR3/DDR4/LPDDR4与 H616 同 die,引出 LCD 与摄像头工业 HMI、电力控制器
T1534×Cortex-A7无DDR33×GMAC、双 CAN-FD、LocalBus工业自动化、工业 HMI
T113 / S34×Cortex-A7无DDR2/DDR3LCD、部分型号带 CAN成本敏感工控、智能商显
T527V 与 T527 的差别不是「加强版」

这是一个硬门槛而非程度差别:做车必须买 T527V(有 AEC-Q100 认证), 普通 T527 只有工业级 -40~85℃ 认证,不能用于车规。 反过来,纯工业设备用 T527 就够,不必为 V 后缀付溢价。这个判断要在选型第一刀就做。

T527 的框图里还有几个容易被忽略但很实用的单元,值得单独记住:

  • 独立 RISC-V MCU(玄铁 E906 @200 MHz):负责电源管理与实时外设,与 8 核 A55 通过 AMP 通信。 这就是 T527 能做到「独立 MCU 控制更实时」的原因。
  • HiFi4 DSP:音频专用加速器,做语音唤醒与音频前处理比让 CPU 干更快更省电。
  • 双链路 LVDS ×2 + MIPI-DSI ×2 + RGB ×2 + HDMI + eDP:支持双屏同显或异显, 工控 HMI 与双屏 POS 的关键能力。
  • MIPI CSI「1+4」多摄:并口 CSI 支持 BT.1120 4×1080P@30fps,MIPI CSI 每 lane 最高 2.0 Gbit/s, 最大采集分辨率 8M@30fps。
  • 原始 NAND 支持 80 bit/1 KB ECC:并行 NAND 方案的核心指标,直接决定颗粒选型。

2.3 A 系列:通用智能终端

A 系列面向「跑 Android 或 Linux 的通用终端」:平板、商显、智能家居中控、边缘计算盒子。 A733 是全志目前性能最强的通用平台,sbc.compare 的 7-Zip 实测里它的单核与多核成绩都超过 RK3399 与 RK3576。

型号CPUGPUNPU内存 / 存储工艺典型用途
A7332×Cortex-A76 @2.0 GHz + 6×Cortex-A55 @1.8 GHz
+ 玄铁 E902 MCU @~150 MHz
IMG PowerVR BXM-4-64 MC1
(OpenGL ES 3.2 / Vulkan 1.3 / OpenCL 3.0)
3 TOPSLPDDR5-2400、UFS 3.0、PCIe 3.0、USB 3.112 nm中高端平板、边缘计算、AIoT
A527 / A5378×Cortex-A55(@2.0G 级)ARM G57 MC1无(未核实)LPDDR4、PCIe22 nm中高端商显、双屏 POS、工业触摸屏、智能家居中控
A1334×Cortex-A7 @1.5 GHzMali-400 MP2无LPDDR4、eMMC28 nm小型商显安卓屏、基础广告机(TDP 仅 6 W)
A3334 核(未核实)Mali-400(未核实)未核实LPDDR3 / DDR3未核实轻量 AI 应用、便宜平板
A64 / A33 / A83TA64 4×A53@1.8G;A33 8×A7;A83T 8×A7@1.8GMali-400 / T720无DDR3 / DDR428 nm经典工控与存量商显方案
A733 的实测数据(第三方,仅作相对参考)

sbc.compare 的 7-Zip 实测:A733 单核 2022~2104 MIPS、多核 6816~7341 MIPS; Geekbench 6.4.0(某板卡实测)单核 669、多核 1621。 对比 RK3576(4×A72 + 4×A53)处于同一梯队。 A733 内置的 AI-SR 超分辨率算法(低分辨率重建到 4K)与 AI ISP(RAW 转清晰图像) 是两个实用算法配套,官方把它们与 NPU 打包宣传。

2.4 H 系列:OTT 与家庭影音

H 系列的定位非常窄但市场很大:电视盒子、智能屏、投影仪。它的核心指标是视频解码规格 + HDMI 版本, 不需要 NPU,也不需要 PCIe / USB 3.0。

型号CPUGPU解码编码显示封装
H728八核(未核实)有未核实未核实未核实2 TOPS NPU + AI 超分
H6184×Cortex-A53 @1.5 GHzMali-G31 MP2H.265 8K@24fps;H.264/VP9/AVS2 4K@30fpsH.264 4K@25fps;JPEG 1080P@60fpsHDMI 4K@60fps + CVBSTFBGA-284
H6164×Cortex-A53 @1.5 GHzMali-G31 MP2同 H618同 H618HDMI 2.0a 4K@60Hz + CVBS(PAL/NTSC)TFBGA-284,0.65 mm pitch,0.35 mm ball,14×12 mm
H313 / H135Cortex-A53(未核实)Mali-450(未核实)4K(未核实)1080P(未核实)HDMI未核实
H34×Cortex-A7 @1.4 GHzMali-400 MP21080P1080PHDMI 2.0未核实
H616 与 H618 的真正差异(官网不会明说,但必须知道)

两者 die 基本相同,差异是 L2 Cache 从 512 KB 提升到 1 MB,且 die revision 不同。 VER_REG(地址 0x3000024)最低 8 位记录 die 版本,BSP 区分 0x00 与 0x02:
· revision 0:CPUX_CFG IP 块在 0x09010000(与 H616 用户手册一致)
· revision 2:同一功能块搬到 0x08100000
这个差异只影响 U-Boot 与 Trusted Firmware-A(新版 SDK 会自动识别),内核不受影响。 实践中 H616 多为 版本号 rev0、H618 均为 rev2。该 IP 块与 L2 容量变化大概率对应(官方未正式确认)。 H618 从内核视角与 H616 完全兼容,但 U-Boot / TF-A / sunxi-fel 需要额外支持,这些都已进入主线。

另外两条容易忽略的事实:

  • H616 相比 H6 砍掉了 USB 3.0 与 PCIe,但多了一路 10/100M 以太网。 代价是可用带宽下降,收益是 BOM 简化。
  • H616 起不再有 CPUS(ARISC 管理处理器)与配套的 A2 SRAM —— 意味着 suspend-to-RAM 必须完全依赖 Linux 自身的 PM 子系统,不能用 crust。 这条对电池供电产品是硬约束,见第 14.1 节。
H616 的一个不对称内存限制

H616/H618 的内存映射已扩展到 4 GB 以上,但 EMAC 的 DMA 控制器物理地址只有 32 位, DMA buffer 不能放在 3 GB 以上的物理地址(网卡驱动会自动要求内核分配在 4 GB 以下)。 而 MMC 控制器被改造过,支持最多 15 GB DRAM,所以 SD / eMMC 的 DMA 可以用满全部内存。 这两条限制不对称,做大内存 + 网卡的方案时必须知道。

2.5 V 系列:低功耗 AI 视觉

V 系列是全志近两年增长最快的一条线。它们的共同特征是双核或多核异构 + AI-ISP + 极低功耗, 面向 IPC、智能门锁、门铃、AI 眼镜、辅助驾驶这类「小体积 + 长时间待机 + 要看图」的产品。

型号架构与主频NPU / 算力视频能力内存封装
V881双玄铁 C907 + 单核 E9071 TOPS4K@30fps 编码、24MP 拍照、Wi-Fi 6未核实AI 眼镜 / 可穿戴相机
V861未核实AI-ISP 处理器2MP@30fps64 MB 内置低成本 AI-IPC、低功耗相机
V838未核实有3 路 MIPI-CSI、64 MB 三路 1080P 编码64 MB多摄 IPC、智能门铃
V853Cortex-A7 @1.2 GHz + RISC-V E907 @600 MHz(22 nm)1 TOPS INT8
(TensorFlow / Caffe / TFLite / PyTorch / ONNX)
H.264/H.265 4K@15fps、5MP@25fps;MJPEG 1080P@60fps16-bit DDR3/DDR3L 最大 1 GB、eMMC 5.1、SD 3.0、SPI NOR/NAND未核实
V821双 RISC-V:主核 up to 1.2 GHz + MCU 600 MHz专用算子加速(conv / depthwiseconv / maxpool / add / concat)H.264 3072×3072;单目 1080P@30+640×480@30;双目 1080P@15fps×2;JPEG 8192×8192内置 64 MB DDR2(SiP)QFN88, 9×9 mm
V831未核实未核实轻量视觉高清视频处理未核实智能门铃、可视对讲

V853:三核异构 + 1 TOPS

V853 的核心卖点是「通用计算 + 实时控制 + AI 加速 + 高清视觉」四合一: Cortex-A7 跑 Tina Linux 负责系统调度与网络,RISC-V E907 跑 Melis RTOS 负责低功耗待机、毫秒级唤醒与传感器处理, 两者通过 AMP / RPMsg 通信。1 TOPS NPU 支持主流框架, ISP 支持 3A、鱼眼校正、图像旋转缩放,最大 8 MP 传感器输入。 它的招牌是「1+4」五路摄像头(MIPI CSI 与并口 CSI 组合),在安防监控与辅助驾驶场景优势明显。

V821:极低功耗与存储组合的范本

V821 把低功耗做到了极致:Wi-Fi DTIM10 路由器保活功耗低至 180 μA @4.2V(官方数据), 支持 AOV 低功耗方案与毫秒级系统冷启动图像及视频抓拍。 集成 Wi-Fi(2.4G 1T1R,内置 LNA / PA / T/R 开关),做 IPC 整机不需要外挂 Wi-Fi 芯片。

V821 的存储组合值得存储选型同事重点看

官方明确写:支持 SPI NOR / SPI NAND / SD NAND / eMMC 等存储介质,并可以组合使用(如 SPI NOR + SD NAND 等)。 SPI NOR 放固件与启动,SD NAND 放大容量与掉电数据保持 —— 这是典型的低成本高可靠组合, 比 eMMC 更适合 AI 眼镜、智能门锁这类小体积终端。 另外 V821 的固件设计同时兼顾 SoC 与 Wi-Fi MCU,产线无需额外 Wi-Fi MCU 烧录流程, 这一条在成本与产线节拍上都是实打实的优势。详见附录 B.3。

V821 的 ISP 能力在同价位里非常突出,值得单列:最大 3264×2448 传感器输入; 支持 3A(AE/AWB/AF)且参数可调;支持 TDM 分时复用最多 2 个通道; 像素坏点校正与镜头阴影校正;局部色调映射;多级降噪(空域 + 时域)与色噪消除; 色彩调节与增强;4 路缩放(1×~1/16×)输出; PC 端工具支持在线 / 离线 / 远程调试 ISP。

V821 的版本差异(选型时必须区分):

型号内存视频输出Wi-Fi低功耗保活
V821L2-XXX64 MB DDR2SPI 屏不支持不支持
V821L2-WXX64 MB DDR2Serial RGB / i8080 / SPI 屏支持支持
V821M2-WXX64 MB DDR2SPI 屏支持不支持

参考:索智 V821 开发板(SC1742V-V821)的公开配置为 主芯片 RISC-V up to 1 GHz + MCU up to 600 MHz、分立 DCDC 电源管理、SiP 64 MB DDR2、 16 MB SPI NOR(XB25VQ128)、2.4 GHz Wi-Fi、100 Mb 以太网、双目 1950×1080@15fps、2.4 寸屏、 125×90 mm 四层板,支持 Tina Linux 5.0。

2.6 MR / R 系列:机器人与 IoT

型号定位关键能力典型终端
MR527高端 AI 机器人芯片八核,融合感知 + 高精度地图定位高端扫地机器人
MR536主流 AI 机器人芯片强化传感器接口与实时控制扫地机器人、割草机器人、服务机器人
MR813消费娱乐机器人专用—宇树 CyberDog 2 四足机器人的核心控制
MR153入门级服务机器人4 核 ARM + RISC-V入门服务机器人
R329AI 语音交互内置 0.8 TOPS AIPU语音面板、智能音箱
R128超低功耗 AIoTRISC-V C906 + Cortex-M33 双核,深度睡眠与自研电源域智能家居中控、语音面板、电池终端
R818通用 AIoT4×Cortex-A53(未核实)IoT 网关
R128 是这几年增长很快的一颗

它把 RISC-V C906 与 Cortex-M33 集成到一起,配合深度睡眠与自研电源域, 大量用于智能家居中控、语音面板、电池供电终端。常见配法是 16 MB SPI NOR(XB25VQ128) 做启动与主存 —— 典型的「NOR 一颗搞定」方案,BOM 极简。

2.7 F / D1 系列:低成本与 RISC-V 入门

型号架构说明
F1C100sARM9 @288~600 MHz成本极低,LCD 控制器 / 上位机 / 电子价签
F1C200sARM9(升级)F1C100s 升级版,带 MIPI
F133 / F133A玄铁 C906 + Cortex-M0常配 16~64 MB DDR2,RISC-V 教育与工控单板常见方案
D1玄铁 C906 @1.0 GHz7-Zip 实测 306 MIPS,RISC-V 边缘 AI 入门
D1s玄铁 C906D1 简化版,配套哪吒(Nezha)开发板
D1-H玄铁 C906 + Cortex-M33哪吒 2 / 哪吒 C,集成 RISC-V 与 ARM 双核
D1 系列是学习全志平台最省事的入口

D1 / D1s / D1-H 的 Tina Linux SDK 有完整开源版本: repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git, 无需申请权限,主线上游支持也较好。要摸清全志的工具链、Tina 的构建体系、设备树写法,从 D1 开始是最优路径。

2.8 料号怎么读

以 A733MX-HN3 为例(也适用于 T527MX-G001 这类写法):

字段示例值含义
系列字母A / T / H / V / R应用场景,见 1.3 节
型号号733 / 527 / 618同系列内按算力递增,跨系列不可比
封装代码MX大多为 BGA 阵列,密度相关,必须查 Datasheet
温度等级H(工业级)商业级通常无此字母
硅版本 / 批号N3 / G001版本或料号修订,下单前必须与全志确认是否仍在产
全志料号的两条硬约束

① 料号后缀不具备跨系列通用性。同一串后缀在 A 系列与 T 系列可能对应完全不同的封装与引脚数, 必须逐系列查该系列的 Datasheet 选型表。
② 量产前务必与全志或代理商确认 PCN 状态与生命周期。 全志消费类芯片生命周期比工业类短,部分 H / F 型号已进入 EOL 流程,而 T / A 系列仍在活跃供货。 这个确认动作要在立项时做,不要等到量产后补。

2.9 选型决策路径

把上面这些收敛成七个问题的决策树,从下往上问,第一个命中的分支就是答案:

全志产品线地图 —— 按「你要做哪一类终端」划分的九条线同一系列内的型号按算力与资源递增;跨系列需要重新评估封装与软件栈T 系列T527 / T527V / T736T536 / T507 / T153 / T113工业级 + 车规,-40~85℃8×A55 + 玄铁 E906 MCU2~3 TOPS NPU · CAN · PCIeA 系列A733 / A527 / A537 / A133 / A64 / A33通用智能终端(Android/Linux)2×A76 + 6×A55(12nm)3 TOPS NPU · LPDDR5 · UFS 3.0H 系列H728 / H618 / H616 / H313 / H3OTT 盒子与家庭影音4×A53 + Mali-G31H.265 8K@24 解码 · HDMI 4K@60V 系列V881 / V861 / V853 / V838 / V821 / V831低功耗 AI 视觉 SoC双核异构 + AI-ISPIPC / 门锁 / AI 眼镜 / ADASMR 系列MR527 / MR536 / MR813 / MR153机器人专用强化传感器与实时控制SLAM · 避障 · 地图定位R 系列R329 / R128 / R818AIoT 与实时控制RISC-V + Cortex-M33 双核语音交互 · 智能家居入门两线:F 系列(F1C100s / F1C200s / F133)走低成本显示与控制,D1 系列(D1 / D1s / D1-H)走 RISC-V 边缘 AI。D1 系列的 Tina SDK 开源程度最高,是学全志平台最省事的入口;F133 常见 16~64MB DDR2 配法。
图 2 · 全志产品线地图:九条线的定位与关键差异

来源:allwinnertech.com + linux-sunxi.org + aw-ol.com

全志选型决策路径 —— 七个问题收敛到一颗料从下往上问,第一个命中的分支就是答案① 纯视觉 / AI 相机类?判定条件V 系列预算紧 V861/V821 · 多摄 V853/V838 · 可穿戴 V881② 机器人 / 扫地机(需 SLAM 与实时控制)?判定条件MR 系列MR536 / MR527 · 消费娱乐机器人 MR813③ 工控 / 车载 / 需要 -40~85℃ 与长生命周期?判定条件T 系列车规 T527V · 三网口双 CAN-FD T536 · 3 TOPS T736④ Android 平板 / 商显 / 智能终端?判定条件A 系列3 TOPS+LPDDR5 A733 · 双屏商显 A527 · 6W 小屏 A133⑤ OTT 盒子 / 智能屏 / 投影?判定条件H 系列最新 H728 · 主流 H618 · 成本优先 H616⑥ 超低功耗 IoT 终端?判定条件R 系列语音交互 R329 · 超低功耗 R128⑦ 只要便宜显示控制器或学 RISC-V?判定条件F 系列 或 D1 系列F1C200s / F133 · D1s / D1-H
图 3 · 全志选型决策路径

补充三条不成文经验:

  • 不确定就买官方或第三方的参考设计对应的芯片型号。全志参考设计里的板子已经把 DDR、PMIC、存储、 摄像头、显示全部验证过了 —— 你的产品即使要改,也应该只在参考设计的基础上改,而不是从零画原理图。
  • 同一系列产品线内优先选高一档算力。T527 与 T536 差价有限,但 T527 有 2×CAN 与更多 UART/TWI, 后期发现接口不够的返工成本远高于差价。
  • 做视觉产品先确认 ISP 而不是先确认 NPU。ISP 决定「能不能出好图」,NPU 决定「能不能跑算法」。 一个 1 TOPS NPU + 好 ISP 的组合,通常比 3 TOPS NPU + 弱 ISP 的组合出片质量好得多。

3 · 启动链与 BROM / FEL

这一章是全志文档里最该先读的一章。启动链的每一步都对应一类「板子不启动」的故障,把链路搞清楚,排障就有了坐标系。

3.1 四级启动链

全志的启动是一条固定四级链:

全志四级启动链 —— 任何一级失败都回落 FELFEL 固化在 BROM 中,软件无法破坏它,这是全志板几乎不会变砖的根本原因BROM(片上固化 ROM · 不可修改)0xFFFF0000 FEL 模式(同时是复位向量)0xFFFF0020 复位后跳转的 FEL 入口0xFFFF0028 复位向量:装载 eGON.BRM0xFFFF4000 eGON.BRM 主程序eGON.BRM 做的四件事:① 协处理器配置(c15 虚拟系统控制协处理器)② 关闭看门狗定时器③ 配置 CPU / AXI / AHB / APB0 时钟,使能 Gating④ 设置栈指针到 32 KB,然后跳到 boot启动介质探测顺序(A10/A20 实例)① SD 卡0(MMC0)失败 → 下一个② 内部 NAND Flash失败 → 下一个③ SD 卡2(MMC2)失败 → 下一个④ SPI NOR Flash失败 → 下一个⑤ 都失败 → FEL / USB Boot从 0xFFFF0020 执行A64 起的简化顺序(实用参考)SMHC0(SD 卡)SMHC2(eMMC)SPI0(SPI NOR)FEL(USB OTG)A31 另有两个 boot_sel[0:1] 选择位,但 FEL 键优先级更高
图 4 · 全志四级启动链:BROM 内部布局与启动介质探测顺序

来源:linux-sunxi.org/BROM

为什么全志几乎不会变砖

因为 FEL 是 BROM 里的固定子程序,不依赖任何外部存储介质的内容。 BROM 无论在任何阶段失败,最终都会落到 FEL 模式。所以全志板子可以随便改启动分区、甚至刷一个空的 SD 卡, 只要按住 FEL 键就能救回来。反过来说,FEL 挂了才是真砖, 但 FEL 只存在于 BROM 里,物理上无法被软件破坏。

3.2 BROM 的地址布局

以 A10/A20 为例(后续系列结构类似但有裁剪),BROM 分成两半:

地址内容复位后的角色
0xFFFF0000FEL 模式复位向量所在。上电即从这里取指令
0xFFFF0020FEL 入口BROM 失败兜底时跳转到这里
0xFFFF0028复位向量代码把 0xFFFF4000 的 eGON.BRM 载入 PC 并执行
0xFFFF4000eGON.BRM 主程序做协处理器配置、关看门狗、配时钟与 Gating、设栈指针,然后跳到 boot

boot 里立刻跳到 check_uboot,检查状态引脚(常称 FEL / BSP / uboot): 为低电平则进 FEL 模式(地址 0xFFFF0020);为高电平则依次尝试各启动介质, 每一步失败都继续试下一个,全部失败后也执行 FEL 模式。

3.3 启动介质探测顺序

不同系列顺序不同,但大体遵循「SD → eMMC / NAND → SPI NOR → FEL」:

系列探测顺序(linux-sunxi.org 记录)
A10 / A20SD 卡0(MMC0) → 内部 NAND → SD 卡2(MMC2) → SPI NOR → FEL
A31先查 FEL 键 → SD0 → NAND → SD2 → emmc2 → SPI → FEL;另有 boot_sel[0:1] 两个选择位
A64SMHC0(SD 卡) → SMHC2(eMMC) → SPI0(SPI NOR) → FEL
A10/A20 的一个特殊绕过机制:Boot Select Pin(BSP)

BSP 引脚内部有 50 kΩ 上拉。把它拉到 GND,SoC 会直接尝试进 FEL。 默认情况下 A10/A20 要「所有启动介质都失败」才落到 FEL —— 这在 NAND 里有合法头时尤其明显。 实用推论:如果你想强制进 FEL 但没有按键,短路 BSP 引脚到地比「破坏启动介质」更可靠。

3.4 为什么全志几乎不会变砖

这一节单独强调,因为它改变的是排障的思维方式:不要从「猜哪里坏了」开始,而要从「用 FEL 反证」开始。

FEL 救砖闭环 —— 全志硬件排障最有价值的工具用 sunxi-fel 把 U-Boot 跑起来,一刀切开「BROM/DDR/U-Boot」与「介质/内核」现象:设备上电后串口完全没有打印 / 系统不启动能进 FEL 吗?按住 FEL 键上电 + sunxi-fel versunxi-fel uboot 成功?拿到完整 U-Boot 串口输出进不去 FEL问题在四件事里:① 供电 ② 时钟③ 复位 ④ USB 走线→ 查第 7 章硬件设计要点能进 FEL 但 uboot 失败问题在 DRAM 或启动介质:① DDR 训练失败(参数/时序/颗粒)② 介质内容损坏(boot0/SPL/U-Boot)→ 查第 16.1 节启动类速查表U-Boot 跑起来了问题在介质内容或内核:① bootargs / 分区号错② rootfs 读不出 ③ 内核 panic→ 查第 16 章与第 13 章调试
图 5 · FEL 救砖闭环:全志平台排障的黄金路径

来源:docs.u-boot.org + docs.aw-ol.com

FEL 是最底层的「事实来源」

FEL 通道的三个特性决定了它是全志排障的核心工具:
① 不依赖任何可改写的内容 —— 固件全坏了它照样工作;
② 不需要串口硬件 —— 串口配错、U-Boot 还没起来时它依然可用;
③ 能主动把固件送进 DRAM 执行 —— sunxi-fel uboot 可以把 U-Boot 直接喂进 SRAM 跑起来, 拿到完整串口输出。
所以「拿不到串口输出」这件事本身,永远不该成为排障的障碍。

3.5 进入 FEL 的五种方法

方法操作适用场景
① 按住 FEL 键开发板正面中间的 FEL 按住不放再插 USB 上电开发调试,最常用
② 空设备烧写设备内无系统,直接插 USB,工具自动弹烧写提示,点 YES新板首次烧录
③ 软件命令串口或 ADB 里执行 reboot efex已有系统升级
④ 串口敲「2」上电过程中在串口终端不停敲字符 2无法启动时救砖(隐藏操作)
⑤ 短接 NAND 供电上电时短接 NAND 供电脚,让 BROM 检测不到 NAND 当作空片救砖(老方案,有 ESD 风险)
三个关于 FEL 操作的细节

① PC 识别到设备后就可以松开 FEL 键,不需要一直按住。
② 方法 ④ 的隐藏操作是真的按住键盘的「2」键,很多新开发者不知道。
③ 方法 ⑤ 短接后 PC 识别到设备即可松开,不要一直短接(有 ESD 风险)。

3.6 boot0 / boot1 与旧式布局

使用全志官方 bootloader(尤其从 NAND 启动)时,顺序略有不同:

旧式启动链

BROM 加载 boot0(作为 SPL) → boot0 chainload boot1 → boot1 从第一个 FAT 分区加载 boot.axf → boot.axf chainload u-boot → kernel。boot0 / boot1 位于分区表之前的不可访问区域。 boot.axf 还带 framebuffer 显示能力,能开机出 logo。

SD 卡经典布局(32 步长)

起始块大小用途
08 KB空闲(可放分区表)
824 KBInitial SPL loader
32512 KBU-Boot
544128 KBenvironment
672352 KBreserved
1024-空闲,供分区使用
seek=8 会破坏 GPT 分区表

传统 8 KB 位置(第 16 扇区)正好落在潜在 GPT 分区表中间, 烧完这一下分区表就废了。好在从 H3(2014 年末)开始,新 SoC 也支持从 128 KB(第 256 扇区)启动, 这个位置在 GPT 之外,新设计一律用 128 KB。 实测 H616 的 Linux 主线支持也是这样推荐的:bs=8k seek=1(等价 8 KB)或 bs=1k seek=128。

Legacy boot0 方法(了解即可)

  • boot0 是32 KB 的 blob,负责 DRAM 初始化、加载其余固件、切换到 AArch64 模式。
  • 提取:dd if=/dev/sd of=boot0.bin bs=8k skip=1 count=4。
  • 原始 boot0 在 uSD 卡 19096 KB 处找 U-Boot,并期望特定 magic 头与校验。
  • 打包工具 boot0img:boot0img -o firmware.img -B boot0.img -u u-boot-dtb.bin -e -s bl31; -B 选项可让它不找 19 MB 处,改成紧跟 boot0 之后读取。
boot0 方法已不推荐

U-Boot 官方文档明确:现在 U-Boot 的 SPL 已经带完整的 DRAM 初始化代码,boot0 方式不再是必需, 它只在 Pine64 早期板子上曾是唯一方案。而且这个方法只对 A64 板子的 boot0 文件有效, H5 用的是不兼容的布局。新项目一律走 SPL 路线。

3.7 启动介质与存储选型

这一小节是本文档专门为存储选型同事准备的。全志平台对存储方案的友好度在国产 SoC 里排第一: BROM 支持 SD / eMMC / 原始 NAND / SPI NOR 四类启动介质,厂商还提供「未贴片预烧录」服务。

介质BROM 搜索位置容量上限成本掉电风险适用
SPI NORSPI0 的 0 与 32 KB(固定)16~128 MB低无(只读启动)纯启动固件;配 NAND / eMMC 做主存
SPI NANDSPI0(需 BROM 支持对应型号)128 MB~4 GB中中启动 + 主存一体,省 eMMC
原始 NAND(并行)NAND 控制器512 MB~8 GB中低高(有坏块与 ECC)成本敏感、容量大的方案;T527 支持 80 bit/1 KB ECC
eMMCSMHC0 / SMHC28~256 GB高低(内部 ECC 磨损均衡)高可靠终端;安卓与工业项目主流
SD / TF 卡SMHC0 的 8 KB 或 128 KB可换最低无开发调试、量产 SD 卡方案
SPI NOR 启动的固定偏移

这个数字必须记住,因为它是死的:

SPI NOR 的两个固定偏移

地址 0x00000 写 sunxi-spl.bin, 地址 0x08000(即 32768)写 u-boot.itb。 写入必须严格对齐,写错位置芯片就是「找不到可启动头」而落到 FEL。 常见的 16 MB(128 Mbit)器件如 XB25VQ128 在容量上留有大量余量给 U-Boot 环境与 dtb。

SPI 器件做启动介质的两个硬要求

① 必须支持 Quad Read 快速读命令(如 0xEB)。BROM 读取 SPL 用的是快速读指令, 只支持 1-1-1 或 1-1-2 的器件在 BROM 阶段读不到 SPL,会直接落 FEL。
② 不需要支持 XIP —— BROM 一定先把 SPL 拷到 SRAM 再执行。但需要支持 Page Program(单页编程)与 Block Erase。

eMMC 的 SMHC 编号不要照抄
SoCSD 卡eMMC
A64SMHC0SMHC2
H616 / H618SMHC0SMHC0 或 SMHC2(按板设计)
T527SD 3.0 / eMMC 5.1依板设计

用 U-Boot 的 mmc write 写 eMMC 时,mmc dev 的编号按实际挂载来, 照抄别人的 A64 命令在 H616 上会写错设备。

更完整的存储组合方案(含 NOR + SD NAND、预烧录等)见 附录 B。

4 · Tina Linux 开发环境

这一章讲怎么把 SDK 拉起来、把固件编出来。全志的构建体系比 MCU 复杂,但流程本身是固定的五步。

4.1 三条软件路线怎么选

路线是什么适合谁成本
Tina Linux基于 OpenWrt 的裁剪 Linux 发行版,全志主线产品线都配做 A / T / H / R 系列 Android/Linux 产品中,概念多但资料全
主线 LinuxU-Boot mainline + TF-A + Linux mainline,Armbian / Debian追求长期维护、社区驱动、开发板中低,但缺全志私有外设
Melis / RTOS全志自研 RTOS,跑在芯片内置的 Cortex-M / RISC-V MCU 上只要实时控制、不要 Linux 的场合低,SDK 直接给
异构架构决定了软件栈必须两套

典型形态是 大核跑 Linux,MCU 核跑 RTOS 负责电源管理与实时外设, 两侧通过 AMP / RPMsg 通信。V853 官方明确:Cortex-A7 跑 Tina Linux,RISC-V E907 跑 Melis RTOS。 选型时评估的其实不是一颗芯片,而是「Linux SDK + RTOS SDK」这个组合, 两条路都通才能做产品,详见第 6 章。

4.2 编译环境搭建

推荐 Ubuntu 20.04(WSL / 虚拟机均可)。老 SDK 可能只能编在 Ubuntu 14,可用 Docker 解决。

依赖包完整清单

ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim make make-guile gcc g++ wget xmlto xxd zlib1g-dev

老 SDK 走 Docker

Tina SDK 依赖库较旧,官方早期推荐 Ubuntu 14。社区做法:docker pull ubuntu:trusty 作为基础镜像,ENV FORCE_UNSAFE_CONFIGURE=1 并全量替换为国内镜像源,然后在里面编译。 新建工程时优先用较新的 SDK 版本。

repo 工具(必须用全志提供的)

不要用 Google 原版 repo

Tina 用 repo 管理多仓库。必须安装全志提供的 repo 脚本, 用 Google 原版会报 Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle 或 Network is unreachable。

sudo curl -o /usr/bin/repo https://storage.googleapis.com/git-repo-downloads/repo
sudo chmod a+x /usr/bin/repo
repo --version

# 国内镜像(强烈建议)
echo export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' >> ~/.bashrc
source ~/.bashrc

# 缓存凭据,避免一小时内反复输入密码
git config --global credential.helper store

4.3 repo 与 SDK 拉取

以 D1-H 为例的完整拉取流程

权限说明:早期需把论坛会员升到 L2,目前注册账号即可下载。

mkdir tina-sdk && cd tina-sdk

repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git \
          -b master -m tina-d1-h.xml
# 提示 Username 时输入全志在线开发者论坛的账号密码

repo sync
repo start product-smartx-d1-h-tina-stable-v2.0 --all

其它方案的 manifest 路径不同,形如 <产品>_Tina_<线>/manifest.git。

line-ending 报错(第一次跑必踩)

现象:

bash: build/envsetup.sh: line 1: syntax error near unexpected token `$'{
''
bash: build/envsetup.sh: line 1: `function hmm() {'

原因:Windows 编辑器把脚本存成了 CRLF。处置:

sudo apt install dos2unix
find -type f | xargs dos2unix

预防:所有改 SDK 内文件的编辑器都要强制 LF 换行、UTF-8 无 BOM。 VS Code 把 files.eol 设为 \n;改完跑一次 bash -n 语法检查比事后 dos2unix 更省事。

4.4 SDK 目录结构

Tina SDK 目录结构与高频修改位置device/config/chips 是你 90% 的时间会待的地方buildenvsetup.sh · build.sh环境与顶层构建deviceconfig/chips/&lt;芯片&gt;/configs/&lt;板名&gt;/板级配置(改这里)kernelLinux 内核内核openwrtTina 主体(基于 OpenWrt)用户空间brandyU-Boot / boot0 / boot1引导platform芯片相关驱动与库Tina 私有部分prebuiltbl31.bin · scp.bin · boot0预编译固件toolssunxi-tools 等工具out编译输出产物改串口、分区、pinmux、DRAM 参数都在 device/config/chips/... 下,不要去改内核源码。
图 6 · Tina SDK 目录结构与高频修改位置

来源:docs.aw-ol.com/docs/soc/f136/software/SDK_使用指南

高频修改位置清单

路径是 device/config/chips/<芯片型号>/configs/<板名>/,典型文件:

  • BoardConfig.mk —— 选择用哪个 U-Boot defconfig
  • sys_config.fex —— 早期平台的 pinmux / 时钟 / DRAM 参数(结构化配置)
  • sys_partition.fex —— 分区表与固件布局
  • env.cfg —— U-Boot 环境变量(earlyprintk 等)
  • board.dts —— 设备树(较新平台的主战场)

改串口、改分区、改 pinmux、改 DRAM 全在这里,不要去改内核源码。

4.5 五步编译流程

Tina Linux 五步编译流程每个新终端都要重做前两步;同一终端内重复编译只需 make -jN①sourcebuild/envsetup.sh获取环境变量②lunch选择方案自动解压工具链③make -jN编译全量或增量④pack打包生成 .img 固件⑤烧录PhoenixSuit写启动介质产物路径/out/&lt;产品名&gt;/tina_&lt;方案名&gt;_uart0.img例:/out/d1s-nezha/tina_d1s-nezha_uart0.img只编一块(日常开发)mboot · mboot0 · muboot · mkernel · mmmm 只能在包路径下操作;mp = make + pack
图 7 · Tina Linux 五步编译流程与产物路径

来源:docs.aw-ol.com

source build/envsetup.sh       # ① 获取环境变量
lunch                          # ② 载入方案(交互菜单)
                               #    也可 lunch d1-h_nezha-tina 直写
make -j32                      # ③ 编译
pack                           # ④ 打包
                               # ⑤ 烧录(见第 5 章)
make 并行度踩坑

软件包之间的依赖关系没被正确声明时,多线程会失败。失败后用单线程重跑看真实错误:

make -j1

不要盲目加大 -j:线程数超过物理核数很多(比如 32 核机器上 -j128)会因内存耗尽被 OOM Killer 杀掉, 表现为编译「莫名中断」,看起来像依赖问题。经验值:物理核数 × 1.5~2,编译机内存至少 16 GB。

方案名带 _min 的含义

lunch 菜单里常见两种:d1-h_nezha-tina(标准方案)与 d1-h_nezha_min-tina(最小系统方案,只保证系统能起来、不带外设驱动)。 先用 _min 方案打通启动,再切标准方案加外设,这样能把「启动问题」和「外设问题」分开。

4.6 分区配置 sys_partition.fex

这个文件决定固件布局,注释自带在文件内。核心片段:

[mbr]
size = 16384

[partition_start]

[partition]
name = boot-resource
size = 504
downloadfile = "boot-resource.fex"
user_type = 0x8000

[partition]
name = env
size = 504
downloadfile = "env.fex"
user_type = 0x8000

[partition]
name = env-redund
size = 504
downloadfile = "env.fex"
user_type = 0x8000

[partition]
name = boot
size = 10080
downloadfile = "boot.fex"
user_type = 0x8000

[partition]
name = rootfs
size = 126000
downloadfile = "rootfs.fex"
user_type = 0x8000

[partition]
name = private
size = 10240
user_type = 0x8000

[partition]
name = rootfs_data
size = 10240
user_type = 0x8000
四个必须懂的字段
字段作用坑
size单位是扇区(512 B),不是 KB写成 KB 值的十倍 → 分区爆大或装不下
user_type = 0x8000标记为用户可读写分区缺了这一行固件刷不进去
keydata = 1私有数据分区,重新量产数据不丢存校准数据 / 密钥的分区必须加
encrypt = 1加密烧录烧录速度明显下降,量产评估时要算进去

4.7 只编一块的快捷命令

命令作用
mboot同时编译 boot0 与 U-Boot(Tina 任意目录下可用)
mboot0只编译 boot0
muboot只编译 U-Boot
mkernel只编译内核
mm编译当前包(只能在包路径下操作)
make <包路径>/install在根目录编译某个包,例 make package/utils/rwcheck/install
make <包路径>/clean清某个包的编译临时文件
make kernel_menuconfig进入内核配置界面
make menuconfig进入 Tina 配置界面
mpmake + pack 合并命令

4.8 主线 Linux 路线

不想背 Tina 的构建体系,可以走主线。这条路在 H616/H618 这类新平台上是主线可用的。

主线 U-Boot 构建(以 H616 为例)

64 位 SoC 必须先构建 TF-A 的 BL31:

git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
cd trusted-firmware-a
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h616 DEBUG=1
export BL31=$(pwd)/build/sun50i_h616/debug/bl31.bin

make <board>_defconfig
make

平台(PLAT=)对照:A64 / H5 → sun50i_a64;H6 → sun50i_h6; H616 → sun50i_h616;R329 → sun50i_r329。 查全部支持平台:find plat/allwinner -name platform.mk。

可选的 crust(管理处理器固件,用于 suspend-to-RAM,需 or1k 交叉编译器): 部分带 CPUS 管理控制器的 SoC 可用它做电源管理。 不构建时设 SCP=/dev/null 消除警告。H616 起没有 CPUS,这条路走不通(见 14.1 节)。

查 defconfig 的技巧:git grep -l MACH_SUN8I_H3 configs 或 git grep -l sun50i-h6-orangepi-3 configs。

平台主线支持度(截至 2026-10)
H616 / H618 / H6pinctrl + clock 驱动自 v5.12 起入主线;基础 Linux v6.0 起可用;U-Boot 与 TF-A 已合入官方仓库。H618 内核视角与 H616 完全兼容,但 U-Boot / TF-A / sunxi-fel 需要 die revision 2 的额外支持(已进入主线)
A64主线支持完善,mainline 板卡最多(Orange Pi、Radxa 等)
T113 / T527主要靠 Tina / vendor 内核,主线覆盖不完整
mainline 与 Tina 怎么选

做产品量产 → Tina:原厂 BSP 齐全,外设驱动(ISP / VE / 显示 / 音频)完整,有量产烧录方案。
做长期维护 / 学习 / 需要社区驱动 → mainline:内核新、能用 Armbian、避免被 vendor 内核绑死。 代价是全志私有外设(ISP 调优、VE、G2D、SmartColor)驱动不完整。

4.9 SDK 常见问题速查

报错原因处置
Cannot get .../git-repo/clone.bundle / Network is unreachable用了 Google 原版 repo装全志提供的 repo 脚本
Host key verification failed.SSH 权限或密钥问题chmod 700 ~/.ssh; chmod 600 ~/.ssh/id_rsa; ssh-agent bash; ssh-add ~/.ssh/id_rsa
ssh: connect to host 61.143.53.198 port22: Connection timed outrepo 脚本里写死了旧 IPwhich repo 找到路径,把里面所有 61.143.53.198 替换为 sdk.allwinnertech.com
envsetup.sh: syntax error near unexpected token $'{\r'CRLF 换行find -type f | xargs dos2unix
repo sync 反复要密码新版 git 默认不缓存凭据git config --global credential.helper store
SSH 公钥不生效复制时引入换行符cat ~/.ssh/id_rsa.pub 打印到屏幕再复制,别用编辑器粘贴
lunch 菜单为空 / 找不到方案方案名错或 SDK 没拉全核对 device/config/chips/ 下的目录名
make 中途莫名中断OOM(-j 太大)降并行度;make -j1 看真实错误

更复杂的编译烧写问题,全志官方论坛是最终去处:https://bbs.aw-ol.com/。

5 · 烧录与量产

把固件写进启动介质。这一章讲工具怎么选、命令怎么用,以及全志生态里最有价值的一个产能方案。

5.1 五种官方烧录工具

全志烧录工具矩阵 —— 按开发 / 产线 / 超大规模选前四个是官方工具;最后一条是存储原厂与全志拉通的预烧录产能方案PhoenixSuit最常用,支持分区烧写;企业开发者装 APST 时会一并装全志 USB 驱动Windows开发与小规模生产开发首选LiveSuitPhoenixSuit 的 Linux 版,操作类似UbuntuLinux 开发者Linux 环境PhoenixUSBpro一台 PC 可同时连接并分别控制 8 台设备Windows产线批量生产8 台并发PhoenixCard把 .img 制作成量产 SD 卡,产线插卡即自动烧写Windows带卡槽设备量产省烧录工序存储器件批量烧写提前把固件烧到未贴片的 eMMC / NAND / NOR 上再上机贴片专用设备超大规模量产省最多工序
图 8 · 全志烧录工具矩阵:五种方式的能力与适用场景

来源:docs.aw-ol.com/d1/study/study_4compile/

存储器件预烧录:全志生态的特色产能方案

全志支持厂商把固件提前烧进未贴片的存储器件(eMMC / NAND / NOR), 产线上只需贴片与测试。需要与存储器件原厂和全志原厂拉通定制设备。 这条路的价值:省掉整段烧录工序,把单台烧录耗时从几十秒压到零。 对量大且固件稳定的机型,单台工时成本下降非常可观 —— 这也是存储供应商在谈全志项目时应该主动提的方案点。

5.2 PhoenixSuit 完整流程

标准烧录步骤
  1. 打开 PhoenixSuit,设备上电并插 USB 连接 PC,工具提示识别到设备
  2. 点「一键刷机」→ 浏览选择要烧写的 .img 固件
  3. 点「立即升级」—— 此时工具通过 USB 给设备发重启命令, 设备带着烧写标识重启,进入烧写模式
  4. 设备重新到 boot 阶段会自动进行烧写,可以看到进度条在动
  5. 烧写成功,设备自动重启

驱动说明:企业开发者在安装 APST 的同时也会安装全志 USB 驱动,无需单独再安装。 个人开发者从官网下载驱动包即可。

异常设备的两种强制救砖法

开发中如果刷了配置错误的固件导致设备启动异常,就无法按正常流程烧写了,需要强制进 FEL:
① 按住 PC 键盘的「2」键 —— 设备上电过程中在串口终端不停输入「2」, 设备启动时检查到「2」就自动跳到烧写模式。(是真的按住键盘的「2」键,不是命令。)
② 短接 NAND 供电 —— 上电时用镊子或杜邦线短接 NAND 的供电脚(右下角两根), 让 BROM 检查不到 NAND,误以为是空片,按空片启动流程自动进烧写模式。
两种方法都是 PC 识别到设备后即可松开,不用一直按住或短接。

5.3 sunxi-fel 命令详解

sunxi-fel 是全志平台的命令行烧录工具,功能比 GUI 工具强,也是排障的核心。

# 编译
git clone https://github.com/linux-sunxi/sunxi-tools.git
cd sunxi-tools && make

# 识别设备(-v 详细、-p 打印端口名)
./sunxi-fel ver -v -p
# 输出形如:AWUSBFEX soc=00001689(A64) ...
命令作用
sunxi-fel ver识别设备,打印 SoC 型号与 FEL 版本(所有操作前先跑这条确认连上了)
sunxi-fel uboot <file>把带 SPL 的 U-Boot 上传到 SRAM 并执行(不写介质)—— 拿到完整 U-Boot 串口输出的关键手段
sunxi-fel -f <file>上传并执行任意文件(-f 表示「只跑不启动下一级」)
sunxi-fel spiflash-write <偏移> <文件>写 SPI NOR / SPI Flash
sunxi-fel read <地址> <长度> <文件>读回存储内容(做校验用)
sunxi-fel dump <地址> <长度> <文件>dump 指定地址区域
sunxi-fel eMMC <子命令>eMMC 相关操作(具体子命令见 --help)
sunxi-fel --help查看当前版本支持的全部命令(不同版本差异较大)
FEL 是最好的串口替代

设备没有可用的调试串口时(U-Boot 还没起来、或串口配错),FEL 通道依然能工作。 用 sunxi-fel uboot 直接把 U-Boot 送进 DRAM 并执行,可以拿到完整 U-Boot 串口输出 (包括 DRAM: 256 MiB 这类关键信息)。这是排查「串口完全没打印」类问题的第一手段。

5.4 U-Boot 镜像的四种安装

一个镜像,四种安装位置 —— u-boot-sunxi-with-spl.bin除裸 NAND 设备外,同一个文件通吃所有启动介质镜像内部结构SPL带 BROM 可识别的签名头与校验U-Boot proper旧版 image 格式或新版 FIT板级设备树追加在 U-Boot 后或放在 FIT 内其它固件若 SoC 需要,FIT 里会带 bl31 / scp① SD 卡(传统 8 KB)bs=1k seek=8⚠ 落在 GPT 分区表中间① SD 卡(推荐 128 KB)bs=1k seek=128H3 起支持,避开 GPT② eMMCmmc dev N + mmc writeN 按实际挂载,别照抄③ SPI NORspiflash-write 0 / 32768偏移固定不可改常用命令sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1k seek=128=&gt; fatload mmc 0:1 $kernel_addr_r u-boot-sunxi-with-spl.bin && mmc dev 0 && mmc write $kernel_addr_r 0x100 0x700$ ./sunxi-fel spiflash-write 0 spl/sunxi-spl.bin && ./sunxi-fel spiflash-write 32768 u-boot.itbSPI NOR 的固定布局(BROM 在 NOR 上的查找位置是死的)0x00000 sunxi-spl.bin0x08000 (32768) u-boot.itb剩余空间:U-Boot 环境 + dtb + 备用
图 9 · U-Boot 集成镜像的结构与四种安装位置

来源:docs.u-boot.org/en/latest/board/allwinner/sunxi.html

全志 ARM 平台的 U-Boot 构建系统生成单一集成镜像 u-boot-sunxi-with-spl.bin, 它同时包含 SPL(含 BROM 可识别的签名头与校验)、U-Boot proper、板级设备树,以及 SoC 需要时的其它固件镜像。

64 位 SoC 必须先构建 TF-A 的 BL31(A64 / H5 / H6 / H616 / R329),平台对照见 4.8 节。

可选的 crust:部分带 CPUS 管理控制器的 SoC 可用它提供电源管理(主要是 suspend-to-RAM)。 需要 OpenRISC(or1k)交叉编译器;不构建时设 SCP=/dev/null 消除警告。 H616 起没有 CPUS,这条路走不通。

5.5 产线三种模式对比

模式设备形态速度单台成本数据保护适用
PhoenixUSBpro 多机烧录一台 PC 控 8 台设备中中无中批量
量产 SD 卡(PhoenixCard)产线插 SD 卡自动烧快低(卡可重复用)无带卡槽设备
未贴片预烧录存储器件上机前已烧好最快需定制设备可含密钥超大规模

产线烧录的检查项

  • 固件版本号与产线工单一致(不要拿错包),MD5 已记录
  • Secure Boot 是否已启用(决定后续能否降级)
  • 分区加密 encrypt 设置已评估(影响速度)
  • 分区校验 verify = 1 已开启
  • 私有数据分区 keydata = 1 是否需要保留(校准数据 / 密钥)
  • 量产 SD 卡是否可重复使用(写坏后需重新制作)
  • 8 机并发时是否稳定(USB 供电与带宽是瓶颈)

5.6 Secure Boot 与固件加密

T527 级以上的框图里能看到:Trustzone / Secure Boot / Crypto Engine / Security ID。

机制作用实施要点
Secure Boot各级固件签名验签,链式信任密钥存 eFuse / OTP;一旦启用不可降级
固件分区加密固件内容加密,防扒取sys_partition.fex 的 encrypt = 1,代价是烧录变慢
Security ID每芯片唯一 ID可用于设备绑定、激活码、授权计数
eFuse / OTP一次性可编程熔丝存密钥与生命周期标记
分区校验烧录后校验verify = 1
量产数据保护重新量产不丢数据keydata = 1
开启 Secure Boot 的顺序纪律

先用不验签的镜像把量产后段流程跑通(包括测试、老化、包装), 最后一步才开启验签。开启后密钥丢失则芯片无法降级回不验签的状态 (除非 efuse 尚未烧死)。同时必须保留一个不做加密 / 验签的烧录工位专门处理返修板。

全志的 GPT 与 MBR 两套体系
维度全志 Tina(vendor)主线 U-Boot + Linux
分区描述文件sys_partition.fex设备树 + U-Boot partitions 节点
打包输入pack 命令cat spl.bin u-boot.itb > u-boot-sunxi-with-spl.bin
分区表类型MBR([mbr] size = 16384,单位 KB)GPT
U-Boot 启动偏移8 KB(会压 GPT)128 KB(避开 GPT)
配置粒度.fex(早期是二进制结构).dts 设备树(文本,可 diff)

为什么 Tina 里还能看到 sys_config.fex:早期 A 系列用它描述 pinmux、时钟、DRAM 参数 —— 是二进制结构,改了要靠工具编译。较新的 SDK(T113 起、H616 / T527 起)逐步迁移到设备树。 迁移的实际好处是 DRAM 参数与 pinmux 都能在 .dts 里看到文本,diff 友好。 但两套体系在新 SDK 里常常并存 —— 改启动串口可能需要同时改 .fex 与 board.dts,见 4.6 节。

相关报告 · 交叉引用 5 器件全部展开收起 ▾
点开类目即可展开:具体文档 / 章节(点章直接跳转到该章)
eMMC
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查
DDR/LPDDR(DRAM)
电路设计指南4
软件设计规范4
DDR2
章节(点章跳转,共 16 章)
DDR3
章节(点章跳转,共 16 章)
DDR4
章节(点章跳转,共 17 章)
DDR5
章节(点章跳转,共 17 章)
SPI NOR
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查2
系统设计指南
SPI NAND
电路设计指南
软件设计规范
Linux 驱动开发
样机问题排查
量产问题排查4
全志平台 SPI NAND NOR
章节(点章跳转,共 11 章)
海思平台 SPI NAND 量产常见失败
章节(点章跳转,共 11 章)
烧录成功但不开机 SPI NAND
章节(点章跳转,共 12 章)
瑞芯微平台 SPI NAND eMMC
章节(点章跳转,共 11 章)
系统设计指南3
SD NAND
电路设计指南
软件设计规范
Linux 驱动开发
量产问题排查
其他提及器件(共 2)