1. 课程导入

大家好,我是你们的讲师。在嵌入式 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 知识体系结构,大家可以对照着看:

Tina Linux 知识体系结构图 Tina Linux 知识体系结构 智能家居 IPC 网络摄像头 车载电子 构建系统 (tina/m) 内核 BSP + 驱动框架 软件包管理 (opkg) 设备树 (DTB) 配置 pinctrl / clock / regulator 外设驱动适配 I2C / SPI / UART / GPIO 多媒体框架 CedarX / V4L2 / ALSA 全志芯片硬件层 (R/V/MR 系列 + sunxi 架构) 💡 学习路径建议: 先掌握构建系统 → 再学设备树和外设驱动 → 最后深入多媒体和 AI 框架。别一上来就啃 CedarX,会劝退。

1.5 为什么选择 Tina Linux?

说了这么多,可能有人会问:市面上嵌入式 Linux 方案那么多,Buildroot、Yocto、Debian 都能用,为什么偏偏选 Tina?

我的回答是:省心。

用 Buildroot,你得自己找全志芯片的 BSP 补丁,自己配内核,自己写驱动。运气好,社区有人维护;运气不好,光让网卡跑起来就能花一周。而 Tina Linux 开箱即用——Wi-Fi、蓝牙、音视频、NPU,全志都给你配好了。你只需要关注自己的业务逻辑。

当然,Tina 也有缺点。它的软件包比 OpenWrt 少,社区活跃度不如 Buildroot,遇到问题很多时候得靠自己看源码。但话说回来,做嵌入式开发,哪有不啃源码的?

我的建议:如果你是第一次接触全志芯片,或者项目周期紧,直接上 Tina Linux。如果你对系统有极致的定制需求,或者想深入理解 Linux 内核,那可以考虑 Buildroot + 全志主线内核。两条路我都走过,各有优劣。