1. Tina Linux 与 Wi-Fi 概述
各位工程师朋友,咱们开始这门课之前,先聊聊 Tina Linux 到底是什么,以及它和 Wi-Fi 怎么搭上线的。我最早接触 Tina 是在一个智能音箱项目上,当时被客户要求三天内把 Wi-Fi 连上,结果发现这系统比我想象的顺手——当然,坑也不少。今天这一章,咱们先把地基打牢。
1.1 Tina Linux 简介
Tina Linux 是全志科技基于 OpenWrt 深度定制的一个嵌入式 Linux 发行版。说白了,它就是把 OpenWrt 那套网络配置、包管理、文件系统结构拿过来,再针对全志自家的芯片做了一堆优化。
你可能会问:为什么不用标准的 OpenWrt?嗯,这里有个现实问题。全志的芯片,比如 R系列、V系列,外设寄存器地址、时钟树、DMA 通道都和主流参考设计不太一样。Tina 把这些底层适配都做好了,你拿到 SDK 直接编译,基本就能跑起来。
我个人习惯把 Tina 看作一个「半成品」——它给了你 80% 的通用功能,剩下 20% 的硬件调优、Wi-Fi 性能调优,得靠你自己填。这也是咱们这门课的价值所在。
- 基于 OpenWrt 19.07 / 21.02 分支,兼容 luci、netifd、wpad
- 支持全志全系列 ARM Cortex-A7/A53 芯片
- 内置 Wi-Fi 驱动框架(SDIO / USB / SPI 接口)
- 提供
make menuconfig内核配置 +make kernel_menuconfig双层次配置 - 支持
overlayfs文件系统,方便 OTA 升级
1.2 Wi-Fi 子系统架构
Wi-Fi 在 Tina 里不是孤立的。它从上到下分四层,每一层都有自己的一摊事。我画了一张图,你看完就明白了。
这张图你得记住。以后排查 Wi-Fi 问题,第一步就是定位问题出在哪一层。我见过太多人一上来就怀疑驱动,结果最后发现是 wpa_supplicant 配置写错了。
各层职责简述
| 层级 | 关键组件 | 主要职责 |
|---|---|---|
| 应用层 | wpa_supplicant, hostapd, iw | 扫描、连接、认证、DHCP |
| 网络配置层 | netifd, libnl, cfg80211 | 接口管理、策略路由、事件通知 |
| 内核驱动层 | mac80211, SDIO/USB 驱动 | 帧收发、电源管理、硬件寄存器操作 |
| 硬件抽象层 | 芯片固件、射频前端 | 物理层信号处理、天线调谐 |
lsmod | grep cfg80211 是排查的第一步。
1.3 支持的芯片平台
Tina Linux 支持的 Wi-Fi 芯片,我按接口类型分了三类。你拿到板子先看原理图,Wi-Fi 模块接在哪个总线上,基本就能确定驱动框架。
SDIO 接口芯片
这是最常见的。全志芯片自带 SDIO 控制器,Wi-Fi 芯片通过 SDIO 协议和 CPU 通信。吞吐量高,适合 802.11n/ac。
- Realtek RTL8189FTV:单频 2.4G,802.11n,USB/SDIO 双模。我在智能家居项目里用过,性价比高,但驱动有点老。
- Realtek RTL8821CS:双频 2.4G+5G,802.11ac,SDIO 3.0。适合需要 5G 频段的产品。
- Broadcom BCM43362:单频 2.4G,802.11n。老牌芯片,稳定性好,但驱动闭源。
- MediaTek MT7668:双频,支持蓝牙共存。我建议做 IoT 网关的优先考虑这颗。
USB 接口芯片
USB Wi-Fi 芯片在 Tina 里也很常见,尤其是开发板阶段。但注意:USB 总线延迟比 SDIO 高,高吞吐场景下容易丢包。
- Realtek RTL8188EUS:经典 USB 2.0 单频芯片。驱动成熟,网上资料多。
- Realtek RTL8192EU:USB 2.0 双频,支持 802.11n。我踩过坑:它的固件文件必须放在
/lib/firmware/rtlwifi/下,路径错了驱动加载失败。 - MediaTek MT7601U:低功耗 USB 芯片,适合电池供电设备。
SPI 接口芯片
SPI Wi-Fi 芯片吞吐量低(一般不超过 20Mbps),但功耗极低。适合传感器、门锁等低带宽场景。
- Realtek RTL8723BS:SPI + SDIO 双模,带蓝牙。我建议用 SDIO 模式,SPI 模式驱动 bug 较多。
- Broadcom BCM43438:树莓派 Zero W 同款芯片。Tina 上需要手动移植 dts。
package/kernel/wifi/ 目录下。如果找不到,你可能需要自己移植——那又是另一门课了。
1.4 快速确认你的平台
拿到一块新板子,怎么快速知道它用的是什么 Wi-Fi 芯片?我一般三步走:
- 看原理图:找到 Wi-Fi 模块的型号丝印,比如 AP6212、RTL8189FTV。
- 查 dts:在
target/linux/sunxi/dts/下找到对应板级的 dts 文件,搜索wifi或mmc节点。 - 看内核日志:上电后执行
dmesg | grep -i wifi,驱动加载成功会有类似rtl8189ftv: loading firmware的打印。
好了,这一章的内容就这些。你理解了 Tina Linux 的定位、Wi-Fi 子系统的四层架构,以及常见芯片平台,后面章节的配置和调试就有了上下文。记住:架构图那张 SVG 我建议你存下来,以后排查问题对着它一层层查,效率会高很多。