1. Tina Linux 概述:从入门到实战
大家好,我是你们的讲师。在嵌入式 Linux 这个圈子里摸爬滚打了十几年,从早期的 2.6 内核一路跟到现在的 6.x,见过太多方案和发行版。但 Tina Linux 在我心里一直是个特别的存在——它不张扬,却实实在在地撑起了全志系芯片的生态。
今天这一章,我们先不急着敲代码。先把 Tina Linux 的来龙去脉、它跟 OpenWrt 的「血缘关系」、版本怎么演进的、以及它到底能干什么,捋清楚。嗯,这部分内容虽然偏概念,但很重要。你想想看,如果连自己用的工具是什么都不清楚,后面遇到坑了,你都不知道该往哪个方向排查。
核心观点:Tina Linux 不是从零造轮子,而是站在 OpenWrt 的肩膀上,针对全志芯片做了深度定制和裁剪。理解这一点,后面你看到它的构建系统、软件包管理、驱动框架时,就不会觉得陌生了。
1.1 Tina Linux 是什么?
Tina Linux 是全志科技(Allwinner)基于 OpenWrt 深度定制的一套嵌入式 Linux 发行版。说白了,它就是一个「为全志芯片量身打造的 OpenWrt 变种」。
我记得 2015 年左右第一次接触 Tina Linux 时,心里还犯嘀咕:这不就是个 OpenWrt 改了个名吗?后来深入项目才发现,全志在底层做了大量工作——从内核补丁、驱动适配、硬件加速接口,到他们自研的 tina 构建脚本和 m 命令,都是为了让开发者能更快地把产品做出来。
Tina Linux 的核心特点,我总结为三点:
- 轻量化:最小系统可以做到 8MB Flash + 64MB RAM 就能跑起来。我在一个智能插座项目里,用 R328 芯片,整个固件才 6.8MB。
- 全志芯片原生支持:从 R 系列(R16/R328/R329)到 V 系列(V3s/V536/V833),再到 MR 系列(MR133/MR813),几乎覆盖了全志所有主流嵌入式芯片。
- 组件化构建:用
make menuconfig选配内核、驱动、应用,跟搭积木一样。想加个 Wi-Fi 驱动?勾上就行。
1.2 Tina Linux 与 OpenWrt 的关系
这个问题我每次培训都会被问到。两者的关系,用一个比喻来说:OpenWrt 是毛坯房,Tina Linux 是精装修。
| 对比维度 | OpenWrt | Tina Linux |
|---|---|---|
| 目标硬件 | 通用路由器/网关 | 全志系列嵌入式芯片 |
| 构建系统 | OpenWrt Buildroot | 基于 OpenWrt 改造的 tina 构建系统 |
| 内核版本 | 跟随上游主线 | 全志维护的分支,带大量 BSP 补丁 |
| 驱动支持 | 通用驱动 | 全志芯片外设驱动(CE、DE、G2D 等) |
| 应用生态 | LuCI + 路由功能 | 多媒体、AI、IPC、车载等场景 |
| 开发工具链 | 标准 OpenWrt 工具 | tina 专属工具链 + 全志 SDK |
为什么会这样?因为全志芯片的应用场景跟路由器差别太大了。路由器需要的是 NAT、防火墙、QoS;而全志芯片大量用在摄像头、智能音箱、车载中控上,需要的是视频编解码、显示输出、音频处理、NPU 加速。这些 OpenWrt 原生都不带,全志就自己往里加。
我的经验:如果你之前做过 OpenWrt 开发,转 Tina Linux 会非常顺。构建命令从 make 变成 tina make,配置界面几乎一样。但要注意——Tina 的 kernel config 和 OpenWrt 的 kernel config 不完全兼容,别直接拿 OpenWrt 的 .config 来用,会编译不过。
1.3 Tina Linux 的版本演进
全志的版本号体系,说实话,一开始我也觉得乱。后来摸清了规律,其实就两条线:SDK 版本和内核版本。
我整理了一个简化的演进表,方便大家对照:
| SDK 版本 | 内核版本 | 代表芯片 | 发布时间 | 主要变化 |
|---|---|---|---|---|
| Tina 1.0 | Linux 3.4 | R16 | 2015 | 初代版本,基于 OpenWrt CC |
| Tina 2.0 | Linux 3.10 | R328, V3s | 2017 | 引入 sunxi 驱动框架 |
| Tina 3.0 | Linux 4.9 | R329, V536 | 2019 | 支持 NPU、CedarX 编解码 |
| Tina 4.0 | Linux 5.4 | MR133, V833 | 2021 | Docker 支持、安全启动 |
| Tina 5.0 | Linux 5.10/5.15 | MR813, A133 | 2023 | RISC-V 支持、新构建系统 |
这里有个坑,我提醒一下大家:不要只看 SDK 版本号,一定要确认内核版本。我曾经在一个项目里,客户指定用 Tina 3.0,结果他们的外设驱动只支持 4.9 内核,而 Tina 3.0 早期版本还是 4.4 内核,折腾了两天才发现是版本不匹配。
避坑指南:全志官方发布的 Tina SDK 包,命名规则是 tina-{芯片型号}-{SDK版本}-{日期}.tar.gz。拿到包后,第一件事就是看 target/allwinner/{芯片}/config-* 文件,确认内核版本。我曾经见过同一个 SDK 版本号,不同日期的包内核版本都不一样。
1.4 Tina Linux 的典型应用场景
说到应用场景,这可能是大家最关心的——Tina Linux 到底能做什么产品?我按自己的项目经验,分了三大类:
智能家居
这是 Tina Linux 出货量最大的领域。智能音箱、智能插座、智能灯控、中控屏……基本上你能想到的家居设备,都能看到全志芯片的身影。
- 代表芯片:R328, R329, MR133
- 典型配置:双核 A7 + 64MB DDR2 + 8MB SPI NAND
- 关键驱动:Wi-Fi (XR819/XR829)、蓝牙、Audio Codec、IR
- 我的项目:做过一个带屏智能音箱,用 R329 + Tina 3.0,难点在于 Audio 驱动的 ALSA 适配和回声消除。全志的
sunxi-codec驱动默认只支持 48kHz,客户要求 16kHz,改了一版驱动才搞定。
IPC(网络摄像头)
IPC 市场对成本敏感,对视频性能要求高。Tina Linux 在这块的优势是:硬件编解码驱动(CedarX/CedarVE)直接集成在 SDK 里,不用自己写 V4L2 M2M 驱动。
- 代表芯片:V3s, V536, V833
- 典型配置:单核 A7 + 128MB DDR3 + 16MB SPI NOR
- 关键驱动:CSI (MIPI/DVP)、ISP、CedarX 编码、Ethernet MAC
- 注意:V3s 的 CSI 接口只支持 DVP,不支持 MIPI。选型时别搞错了,我见过有人把 MIPI 摄像头接到 V3s 上,结果只能跑 15fps。
车载
车载是 Tina Linux 近几年重点攻的方向。从后视镜、行车记录仪到中控娱乐屏,全志的 MR 系列就是专门为车载设计的。
- 代表芯片:MR133, MR813
- 典型配置:双核 A53 + 512MB DDR3 + eMMC
- 关键驱动:CAN、LVDS/MIPI DSI、Touch、Video Decode
- 特殊要求:车载需要 AOSP 兼容层,Tina 4.0 之后加入了
tina-android方案,可以在 Linux 上跑 Android HAL。
下面这张图,是我根据多年项目经验总结的 Tina Linux 知识体系结构,大家可以对照着看:
1.5 为什么选择 Tina Linux?
说了这么多,可能有人会问:市面上嵌入式 Linux 方案那么多,Buildroot、Yocto、Debian 都能用,为什么偏偏选 Tina?
我的回答是:省心。
用 Buildroot,你得自己找全志芯片的 BSP 补丁,自己配内核,自己写驱动。运气好,社区有人维护;运气不好,光让网卡跑起来就能花一周。而 Tina Linux 开箱即用——Wi-Fi、蓝牙、音视频、NPU,全志都给你配好了。你只需要关注自己的业务逻辑。
当然,Tina 也有缺点。它的软件包比 OpenWrt 少,社区活跃度不如 Buildroot,遇到问题很多时候得靠自己看源码。但话说回来,做嵌入式开发,哪有不啃源码的?
我的建议:如果你是第一次接触全志芯片,或者项目周期紧,直接上 Tina Linux。如果你对系统有极致的定制需求,或者想深入理解 Linux 内核,那可以考虑 Buildroot + 全志主线内核。两条路我都走过,各有优劣。