2020 年 3 月,稚晖君(彭稚晖)发了一条约 3 分钟的视频:在自制的「小电视」里播放 B 站小电视------经典的套娃画面。机身不过苹果耳机盒大小,却能跑完整 Linux,还能做人脸识别和语音对话。
很多人把它当成可爱摆件,实际上这是 自研主板 + 全链路软件 的整机:原理图、6 层 PCB、贴片、U-Boot、内核、驱动、应用、3D 外壳,一个人走通。核心 PCB 后来抽成量产的 夸克(Quark) ,软件与硬件资料集中在开源 Project-Quantum(量子计划)。
如果你正在自己 Bring-up 一块板子,缺的往往不是「又一块能跑系统的开发板」,而是 整机链路怎么串。这篇文章,把这个链路摊开------从上电顺序看技术栈,再说怎么学。
别和 HoloCubic 混了 :那是 ESP32 + 棱镜摆件;本文只谈 全志 H3 + 完整 Linux
原视频:【自制】B站最强小电视 https://www.bilibili.com/video/BV1jE41137eu/?spm_id_from=333.337.search-card.all.click
1. 它到底是什么
一句话:不是电视,是超迷你 Linux 主机。
- SoC :全志 H3 ,四核 Cortex-A7,最高约 1.2 GHz
- 硬件 :自研 6 层 DDR 高速板 + 小屏、USB、Wi-Fi、音频、麦克风、TF 卡等
- 软件 :U-Boot + Linux + Debian 系 rootfs (可装 Xfce 桌面)
- 体积:约耳机充电盒级;外壳为 Rhino 建模 + 3D 打印
- 和商品开发板的区别 :当时 没有现成整机可买 ,Bring-up 全自研;路线与 Quark 一致

图1:从硬件到应用的大致链路
2. 难在哪里
难点一:硬件不是「能亮就行」。 H3 带 DDR 控制器,PCB 要做到 6 层、阻抗与 EMI 过关。DDR 不稳,内核连启动都谈不上。
难点二:软件没有「下载镜像就能用」。 要从 U-Boot 移植 做起,再配 内核 + 设备树 ,再把屏、USB、Wi-Fi、音频、摄像头、存储等 驱动逐项对齐 。稚晖君后来也提过:硬件「熬夜还能扛」,软件调试更让人头秃------所以项目里曾 改版重画了一版板子。任何一层和硬件对不上,就是你熟悉的那句:「能进系统,但某个外设死活不工作。」
3. 技术栈怎么串
从芯片到应用,大概可以分成下面几层(后面按这个顺序往下拆):
| 层次 | 关键技术 | 在本项目里 |
|---|---|---|
| 硬件 | H3、6 层 PCB、DDR、外设 | 自研主板 + 结构件 |
| Boot | U-Boot | 初始化 DDR/时钟/存储,加载内核 |
| 内核 | Linux BSP 、设备树(DT) | 描述板子,挂驱动 |
| 驱动 | 显示、USB、Wi-Fi、音频、摄像头、MMC 等 | 无现成镜像,逐项调 |
| 用户态 | Debian 、Xfce 、VNC/RDP | 桌面、远程、装软件 |
| 应用 | 播放、RTSP 、Web、OpenCV/TensorFlow、语音 | 视频里的 demo |
text
上电 → U-Boot → kernel + dtb → mount rootfs → 桌面/服务 → 应用

图2:各层职责(与上表对应)
3.1 硬件与结构(硅片之上的第一层)
- 方案:H3 最小系统 + DDR + 电源 + eMMC/TF 等存储
- EDA :Altium Designer 画原理图与 Layout
- 生产:钢网刷膏、贴片、回流焊(密集脚位难度高)
- 结构 :Rhinoceros 建模,3D 打印外壳,机加工亚克力面板
- 外设接口 :显示、USB (键鼠/摄像头)、SDIO (Wi-Fi 常见)、I2S(音频)等------后面每一类都要在 DTS和驱动「对上号」
3.2 Boot:U-Boot 干什么
这一层解决「板子能稳定跑到内核门口」:
- 裁剪、移植 U-Boot,配置从哪启动(eMMC/TF 等)
- 完成 DDR training、时钟、存储控制器等早期初始化
- 把 内核镜像 + dtb 加载进内存并跳转
串口里的 U-Boot 命令行,是 Bring-up 前半场的主战场。
3.3 内核与设备树:板子长什么样,由 DT 写清楚
- 使用全志生态下的 Linux BSP (内核
defconfig、驱动开关) - Device Tree(.dts) 描述外设:地址、引脚、时钟、供电
- 驱动通过
compatible与 DT 节点 probe 绑定------节点写错,内核里就像「没有这个设备」
典型路径:改 dts → 编译 dtb → 重启 → 看 dmesg。
3.4 驱动层:外设逐项打通
Bring-up 里很常见的一幕:串口能进 U-Boot,桌面也能起来,偏偏 Wi-Fi 或摄像头单独挂掉------问题往往就卡在这一层。
项目里需要调通的能力与常见栈如下(调试时可对照 dmesg、设备节点):
| 外设 | 常见栈 | 关注点 |
|---|---|---|
| 显示屏 | 显示驱动、Framebuffer/DRM | 时序、背光 |
| USB | USB host、V4L2(摄像头) | lsusb、权限 |
| Wi-Fi | 芯片驱动 + wpa_supplicant | 固件、链路 |
| 音频 | I2S 、ALSA | 麦/喇叭通路 |
| TF 卡 | MMC 子系统 | 分区、挂载 rootfs |
| 按键等 | GPIO、输入子系统 | 设备节点 |
驱动层往往是软件阶段 最磨人 的一环:难的不是背多少技术名词,而是 每一项外设都要和你的板子设备树对上号。
3.5 用户态与应用:像普通 Linux 一样叠功能
驱动稳了之后,用户态就和常见 Linux 桌面/服务器类似:
- rootfs :Debian 系 + systemd +
apt装包 - 桌面与远程 :Xfce + 键鼠;SSH 、VNC/RDP(不嫌屏小可当真终端)
- 网络与媒体 :Wi-Fi 联网、RTSP 推流、Web / 博客等个人服务
- AI demo :OpenCV 、TensorFlow(A7 算力有限,适合轻量模型);USB 摄像头识别、麦克风 + 语音对话
- 开发语言 :驱动之上常见 C/C++、Python 等
视频里最能说明「这是完整 Linux」的几项:套娃播放(小屏播 B 站小电视)、流媒体、Web 服务、视觉与语音 demo------都建立在上述用户态之上,不必为每个 App 重写底层。
要点在于:框架装在用户态即可,整机软件栈闭环。
4. 怎么学
不必复刻一整台小电视,按开源路线把 Boot → 内核 → DT → 驱动 走通,收获已经很大。整机并未以「商品资料包」全部公开,但核心板与软件资料拆成了可复用模块:
夸克 / Project-Quantum(H3,贴近小电视)
- 小电视核心板的量产形态,Seeed 合作套件(稚晖君正版授权可购硬件的主要渠道之一)
- 仓库:https://github.com/peng-zhihui/Project-Quantum
- Wiki:https://wiki.seeedstudio.com/Quantum-Mini-Linux-Development-Kit/
- 含硬件工程、U-Boot、Kernel、镜像与文档,可与上文 Boot 到应用各节对照着看
Planck Pi(F1C200s,低成本入门)
- 全志 F1C200s(ARM9、SIP DDR),BOM 很低
- 仓库:https://github.com/peng-zhihui/Planck-Pi
- 适合先跑通 Boot + 内核 + 最小 rootfs,再回来看 H3 六层板难在哪
建议五步
- 看原视频 BV1jE41137eu,建立功能边界
- 克隆 Project-Quantum ,烧录镜像,串口登录
- 打开 设备树,对照驱动层表格看外设节点
- 选一个外设(Wi-Fi 或摄像头)跟
dmesg走一遍 - 门槛再低时,用 Planck-Pi 练最小闭环
自检:你卡在哪一层?
- 电路 / 高速 PCB → 本项目含 6 层 + DDR
- U-Boot / 内核 / DT → 自研板必做
- 多外设驱动 → 本项目核心难度
- Debian / 桌面 / RTSP / OpenCV → 驱动通了之后的上层
5. 别和 HoloCubic 搞混
搜「稚晖君小电视」常会看到两条线:
| Linux 小电视 / Quark | HoloCubic | |
|---|---|---|
| 芯片 | 全志 H3 + Linux | ESP32 |
| 软件栈 | U-Boot / DT / Debian... | IDF、LVGL |
| 适合学 | 板级 Linux、驱动、rootfs | UI、棱镜、物联网屏 |
| 仓库 | Project-Quantum | HoloCubic |

图3:两条「小电视」产品对比
6. 小结
- 整机是叠出来的:硬件、Boot、内核、DT、驱动、rootfs 必须对齐同一块板。
- 难在两头:DDR 高速板 + 无现成镜像;软件问题有时会逼你改硬件。
- 可复用的是核心板 :小电视 → Quark → Project-Quantum;学习路径是 视频定边界 → 仓库烧录 → DT/驱动实操。
参考与链接
- 原视频: https://www.bilibili.com/video/BV1jE41137eu/?spm_id_from=333.337.search-card.all.click
- 量子计划:https://github.com/peng-zhihui/Project-Quantum
- Planck Pi:https://github.com/peng-zhihui/Planck-Pi
- Seeed 夸克 Wiki:https://wiki.seeedstudio.com/Quantum-Mini-Linux-Development-Kit/
- HoloCubic:https://github.com/peng-zhihui/HoloCubic
- 作者 GitHub:https://github.com/peng-zhihui
