T113-S3 从入门到精通:全志工业级双核 ARM + HiFi4 DSP SoC 全解析


目录

  1. 芯片概述与市场定位
  2. T113 系列家族谱系与选型
  3. 架构全景:双核 A7 + HiFi4 DSP + SIP DDR3
  4. 显示子系统详解
  5. 视频编解码与 G2D 图形加速
  6. 音频子系统详解
  7. 连接与外设接口全览
  8. 存储接口与启动方式
  9. 安全引擎
  10. Tina Linux SDK 开发环境搭建
  11. U-Boot 开发详解
  12. Linux 内核与设备树配置
  13. 系统编译、打包与烧录
  14. GPIO 与基础外设编程
  15. CAN 总线开发实战
  16. 串口与 RS485 开发
  17. 显示与 LVDS/MIPI DSI 屏幕适配
  18. Buildroot 根文件系统定制
  19. 实用项目:工业 HMI 人机界面终端
  20. 实用项目:CAN/RS485 工业网关
  21. 实用项目:智能商显广告机
  22. 开发板与核心板选型指南
  23. 常见问题与排障指南
  24. 进阶学习路线
  25. 参考资料

适用读者:嵌入式 Linux 工程师、工业控制开发者、HMI 产品开发者、智能硬件创业者
关键词:T113-S3、全志、Cortex-A7、Tina Linux、工业 HMI、LVDS、CAN、HiFi4 DSP、eLQFP128

1. 芯片概述与市场定位

1.1 什么是 T113-S3?

T113-S3 是全志科技(Allwinner Technology)推出的一款 高性价比、工业级应用处理器,专为 汽车电子、工业控制、智能显示(HMI) 市场设计。它采用 双核 ARM Cortex-A7 @ 1.2 GHz 作为主处理器,集成 HiFi4 DSP 用于音频/语音处理,并在封装内部以 SIP(系统级封装) 方式集成了 128 MB DDR3 内存。

一句话总结:T113-S3 = 双核 ARM Cortex-A7 + HiFi4 DSP + 128MB DDR3 + 1080p 视频 + 全显示接口 + 双 CAN + 千兆以太网,封装在一颗 14mm×14mm 的手焊友好 eLQFP128 中。

1.2 为什么 T113-S3 在工业界如此受欢迎?

传统方案T113-S3 方案
ARM SoC + 外挂 DDR3 + 外挂 Flash + 外挂以太网 PHY + 外挂 CAN 控制器1 颗 T113-S3 集成 DDR3 + 多显示 + 双 CAN + 千兆 MAC
BGA 封装(焊接困难,至少 4~6 层 PCB)eLQFP128(手工可焊,2~4 层 PCB 即可)
多供应商、多数据手册协调全志统一 SDK + 完整 BSP
−20°C ~ +70°C 商业级−40°C ~ +85°C 工业级

1.3 关键规格速览

参数规格
CPU双核 ARM Cortex-A7 @ 1.2 GHz
DSP单核 HiFi4 DSP @ 600 MHz
L2 Cache256 KB(共享)
片上 DDR3 (SIP)128 MB,最高 800 MHz
视频解码H.265/H.264/MPEG-1/2/4/JPEG/VC-1 @ 1080p 60fps
视频编码JPEG/MJPEG @ 1080p 60fps
显示输出MIPI DSI (4-lane) + 双链路 LVDS + RGB LCD + CVBS OUT
摄像头输入8-bit 并行 CSI + CVBS IN
音频2ch DAC + 3ch ADC / 耳机/线路/MIC / I²S / 8ch DMIC / OWA(SPDIF)
以太网10/100/1000M 千兆 MAC (RGMII/RMII)
CAN2 路 CAN 2.0B
USB1×USB 2.0 OTG + 1×USB 2.0 Host
UART/SPI/I²C最多 6×UART / 2×SPI / 4×I²C
PWM8 路独立通道
存储SD 3.0 / eMMC 5.0 / SPI NOR / SPI NAND
安全AES/DES/3DES + RSA + SHA/MD5 + TRNG + 2Kbit eFuse
封装eLQFP128,14mm×14mm(手工可焊!)
工作温度−40°C ~ +85°C(工业级)
生命周期10 年长期供货承诺

2. T113 系列家族谱系与选型

2.1 全系列型号对比

全志 T113 系列目前包含 S2、S3、S4 和 i(T113-i)等多个子型号:

对比维度T113-S2T113-S3T113-S4T113-i
CPU双核 A7 @1.2G双核 A7 @1.2G双核 A7 @1.2G双核 A7 @1.2G
RISC-V 协处理器✅ C906✅ C906
HiFi4 DSP
SIP DDR64MB DDR2128MB DDR3256MB DDR3外挂(可达2GB)
封装eLQFP128eLQFP128eLQFP128LFBGA337
MIPI DSI≤720p@60fps≤1920×1200@60≤1920×1200@60≤1920×1200@60
LVDS有限双链路双链路双链路
视频解码1080p@60fps1080p@60fps1080p@60fps4K@30fps
CAN✅ 双路
千兆以太网
工作温度商业级−40~+85°C−25~+85°C−40~+85°C
参考单价¥1520¥2035¥2540¥4060

2.2 选型决策

你的产品需求是什么?

├── "最低成本,720P 显示足够,不需要 DSP"
│   └── → T113-S2 ✅(成本最优,64MB DDR2)

├── "需要 HiFi4 DSP 音频处理 + 1080P 显示 + 128MB DDR 刚好够"
│   └── → T113-S3 ✅(本文主角,性价比最佳)

├── "需要 RISC-V 协处理器跑 RTOS + 256MB DDR"
│   └── → T113-S4 ✅

├── "需要 4K 解码 / 外挂大容量 DDR (1GB+) / BGA 焊接可接受"
│   └── → T113-i ✅(最强性能,最全功能)

└── "手焊原型验证最重要 → S2/S3/S4 任意选"

3. 架构全景:双核 A7 + HiFi4 DSP + SIP DDR3

3.1 系统架构框图

                   T113-S3 系统架构
  ┌─────────────────────────────────────────────────────────┐
  │                                                         │
  │  ┌──────────────────────────────────────┐               │
  │  │  Dual ARM Cortex-A7 @ 1.2 GHz        │               │
  │  │  • 每核 32KB L1 I-cache + 32KB D-cache │              │
  │  │  • 共享 256KB L2 Cache               │               │
  │  │  • NEON SIMD + VFPv4 + Thumb-2       │               │
  │  └──────────────┬───────────────────────┘               │
  │                 │                                       │
  │  ┌──────────────┴───────────────────────┐               │
  │  │         AXI 总线互连                  │               │
  │  └──┬─────┬──────┬──────┬──────┬───────┘               │
  │     │     │      │      │      │                        │
  │  ┌──▼──┐┌─▼───┐┌─▼───┐┌─▼───┐┌─▼─────┐                │
  │  │128MB││     ││视频 ││显示 ││外设   │                │
  │  │DDR3 ││HiFi4││引擎 ││引擎 ││矩阵   │                │
  │  │SIP  ││ DSP ││H.265││MIPI ││CAN    │                │
  │  │800M ││600M ││H.264││LVDS ││GMAC   │                │
  │  │     ││     ││JPEG ││RGB  ││USB    │                │
  │  └─────┘└─────┘└─────┘└─────┘└───────┘                │
  │                                                         │
  │  ┌──────────────────────────────────────┐               │
  │  │  存储: SD3.0 / eMMC5.0 / SPI NOR/NAND│               │
  │  │  安全: AES/DES/RSA/SHA/TRNG/OTP      │               │
  │  │  模拟: GPADC/TPADC/LRADC             │               │
  └─────────────────────────────────────────────────────────┘

3.2 HiFi4 DSP:不只是音频

HiFi4 是 Cadence(Tensilica)推出的高性能音频/语音 DSP。在 T113-S3 中,它承担:

应用说明
语音唤醒/识别低功耗关键词检测,无需唤醒 A7 核
音频降噪/回声消除单麦/双麦前端处理
音频编解码MP3/AAC/OPUS 软解,减轻 A7 负担
传感器融合加速度计+陀螺仪数据预处理

HiFi4 DSP 有独立的 32KB I-Cache + 32KB D-Cache,以及 64KB I-RAM + 64KB D-RAM,可以完全独立于 A7 运行。

3.3 SIP DDR3:简化硬件设计的秘密武器

T113-S3 最大的硬件创新之一是 SIP DDR3——将 128MB DDR3 内存和 SoC 裸片封装在同一个 eLQFP128 外壳中。这意味着:

传统设计:
  SoC (BGA) + DDR3 (BGA/TSOP) → 需要复杂的 DDR 等长走线、阻抗匹配、至少 4 层 PCB

T113-S3:
  1颗 eLQFP128 = SoC + DDR3 → 无需外挂 DDR!2 层 PCB 即可工作!

这对于中小团队的硬件设计来说是革命性的:不再需要面对高速 DDR 布线的挑战,极大降低了 PCB 设计门槛和成本。


4. 显示子系统详解

4.1 显示接口对比

接口最大分辨率通道/位宽适用屏幕
MIPI DSI1920×1200 @ 60fps4-lane手机屏、高分小屏
双链路 LVDS1920×1080 @ 60fps2×4 差分对工业屏、大尺寸屏
RGB LCD1920×1080 @ 60fps24-bit 并口低成本小屏
CVBS OUT720×576 (PAL)模拟复合视频车载显示器、监控

4.2 SmartColor 2.0 显示增强

全志自研的 SmartColor 2.0 是显示后处理引擎,提供:

  • 自适应色彩增强 — 优化肤色、蓝天、草地等自然色彩
  • 动态对比度调整 — 提升暗部和亮部细节
  • 蓝光过滤 — 硬件级护眼
  • Gamma 校正 — 适配不同液晶面板特性

4.3 多屏异显与多屏同显

T113-S3 支持最多同时驱动两路显示输出(如一路 MIPI DSI + 一路 LVDS 同显/异显),适用于双屏收银机、智能门禁等场景。


5. 视频编解码与 G2D 图形加速

5.1 硬件视频解码器

编码格式最大分辨率最大帧率典型用途
H.265/HEVC1080p60fps高效流媒体播放
H.264/AVC1080p60fps通用视频播放
MPEG-1/21080p60fps老旧格式兼容
MPEG-41080p60fps
VC-11080p60fps
JPEG最大 16384×16384图片浏览
MJPEG1080p60fps运动 JPEG 视频

5.2 硬件视频编码器

格式最大分辨率帧率
JPEG1080p60fps
MJPEG1080p60fps

T113-S3 不具备 H.264/H.265 硬件编码能力。如果应用需要录制视频到本地或推流,使用 MJPEG 编码(文件较大但 CPU 开销极小)。

5.3 G2D 2D 图形加速器

G2D 是 T113-S3 的 2D 硬件加速器,支持:

操作说明
旋转90°/180°/270° 任意旋转
缩放任意比例,Bilinear 滤波
混合Alpha 混合(Porter-Duff 规则)
颜色空间转换RGB↔YUV 转换
填充矩形区域/渐变填充
LBC 解压缩全志自研压缩格式解码

这在 UI 动画和摄像头预览场景中能显著降低 CPU 负载。


6. 音频子系统详解

6.1 模拟音频接口

接口数量说明
DAC2ch立体声耳机输出,支持 16/24-bit
ADC3ch麦克风/线路输入
耳机输出L/R直驱 16Ω/32Ω 耳机
麦克风输入3 对差分 (P/N)支持驻极体 MIC
线路输入L/R外部音源输入
FM 输入L/R收音机信号接入

6.2 数字音频接口

接口说明
I²S/PCM2 路,可配输入/输出,支持 8/16/24/32-bit
DMIC最多 8 通道 PDM 数字 MEMS 麦克风
OWA (One-Wire Audio)兼容 S/PDIF 输入/输出

7. 连接与外设接口全览

7.1 通信接口

接口数量关键特性
千兆以太网 MACRGMII / RMII 接口,需外接 PHY
CANCAN 2.0A / 2.0B,独立控制器
USB 2.0 OTGDRD(双角色设备),可做 Host 或 Device
USB 2.0 Host独立 Host 端口
UART最多 6×全双工,支持硬件流控
SPI主/从模式
I²C/TWI最多 4×标准模式 (100k) / 快速模式 (400k)
PWM8 路独立通道,支持多种输出模式

7.2 模拟与传感器接口

接口数量说明
GPADC1ch通用 12-bit ADC
TPADC4ch电阻触摸屏 ADC
LRADC❌ 不支持T113-i 才有
IR RX1ch红外接收
IR TX1ch红外发射
LEDC1ch智能 LED 控制器 (WS2812 等)

8. 存储接口与启动方式

8.1 存储接口

接口规格典型用途
SD/MMC 0SD 3.0TF 卡
SD/MMC 1SDIO 3.0Wi-Fi/BT 模组
SD/MMC 2eMMC 5.0板载 eMMC 存储
SPI NORSPI 接口固件存储 (小容量)
SPI NANDSPI 接口固件存储 (大容量)

8.2 启动顺序

T113-S3 的 BROM(片上启动 ROM)按以下顺序尝试启动:

1. SD 卡 (SD/MMC 0)
2. SPI NOR Flash
3. SPI NAND Flash
4. eMMC (SD/MMC 2)
5. USB FEL 模式(强制升级)

调试技巧:如果固件损坏无法启动,短接/按住 FEL 按键 连接 USB 即可强制进入 FEL 模式,用 PhoenixSuit 重新烧录。


9. 安全引擎

功能说明
AES / DES / 3DES对称加解密硬件加速
RSA非对称签名验证(安全启动)
MD5 / SHA / HMAC哈希与防篡改
TRNG硬件真随机数发生器
OTP (eFuse)2 Kbit 一次性可编程存储(存密钥/设备 ID)
SPC / SMC安全外设/内存访问控制

10. Tina Linux SDK 开发环境搭建

10.1 SDK 概览

Tina Linux 是全志官方定制的嵌入式 Linux 发行版,融合了 OpenWrt 的构建系统Buildroot 的根文件系统,是 T113-S3 的首选开发平台。

Tina Linux SDK 架构
┌─────────────────────────────────────────────┐
│  应用层: Qt / LVGL / MiniGUI / 音视频 App     │
├─────────────────────────────────────────────┤
│  构建系统: OpenWrt Buildroot (Kconfig + Make) │
│           包管理: ipkg/opkg                   │
├─────────────────────────────────────────────┤
│  Linux 内核: 5.4.x (Tina) / 6.6+ (主线)       │
│  驱动: 全志 BSP 驱动 + 主线驱动                │
├─────────────────────────────────────────────┤
│  Bootloader: U-Boot 2018 + SPL (boot0)       │
├─────────────────────────────────────────────┤
│  T113-S3 硬件                                 │
└─────────────────────────────────────────────┘

10.2 环境准备 (Ubuntu 20.04/22.04)

# 安装必需依赖包
sudo apt update
sudo apt install -y build-essential git subversion wget curl \
  libncurses5-dev zlib1g-dev gawk flex bison quilt \
  libssl-dev xsltproc libxml-parser-perl mercurial \
  unzip device-tree-compiler python3 python3-pyelftools \
  python3-setuptools swig cpio ccache cmake pkg-config \
  libelf-dev bc lzop u-boot-tools

# 配置 git
git config --global user.name "Your Name"
git config --global user.email "your@email.com"

10.3 获取 SDK

# === 方式一:百问网 T113-S3 Tina SDK (推荐入门) ===
mkdir ~/t113-sdk && cd ~/t113-sdk
# 从百问网下载 100ASK_T113s3-PRO_TinaSDK5.tar.gz.00/.01/.02
cat 100ASK_T113s3-PRO_TinaSDK5.tar.gz.0* | tar xz

# === 方式二:repo 拉取 (需全志论坛账号) ===
mkdir tina && cd tina
repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git \
    -b master -m tina-d1-h.xml
repo sync -j4

# === 方式三:从厂商(米尔/飞凌/万象等)直接获取定制 SDK ===
# 购买开发板后由厂商提供 SDK 下载链接和文档

10.4 SDK 核心目录结构

Tina-SDK/
├── brandy/                     # ★ Bootloader 源码
│   └── u-boot-2018/           #   U-Boot 2018
├── linux-5.4/                  # ★ Linux 内核源码
├── buildroot/                  #   Buildroot 包管理系统
├── device/
│   └── config/
│       └── chips/t113/         # 芯片级配置
│           └── configs/        # 板级配置 (BoardConfig.mk)
├── target/                     # 目标平台工具链/库
├── package/                    # 应用软件包
├── tools/                      # 打包工具
│   └── pack/                   #   PhoenixSuit 打包
├── out/                        # 编译输出
├── build/envsetup.sh           # ★ 环境初始化脚本
└── build.sh                    # 编译入口脚本

11. U-Boot 开发详解

11.1 U-Boot 启动流程

BROM (片上 ROM)
    │
    ▼
boot0 (SPL — 初始化 DDR + 时钟)
    │
    ▼
U-Boot 主程序 (u-boot-sun8iw20p1.bin)
    │
    ▼
Linux 内核 (boot.img / Image)

11.2 双设备树设计

T113-S3 采用 U-Boot 与内核分离的设备树

设备树文件作用范围主要配置
uboot-board.dtsU-Boot 阶段内存映射、基础时钟、启动介质、调试串口
board.dtsLinux 内核完整外设配置(显示/音频/网络/CAN…)

11.3 常用 U-Boot 命令

# 查看环境变量
printenv
printenv bootcmd

# 设置启动参数
setenv bootargs "console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait"
setenv bootcmd "fatload mmc 0:1 0x41000000 boot.img; bootm 0x41000000"
saveenv

# 手动加载内核
fatload mmc 0:1 0x41000000 Image
fatload mmc 0:1 0x42000000 board.dtb
booti 0x41000000 - 0x42000000

# 查看内存信息
bdinfo

11.4 修改 U-Boot 调试串口

# 编辑 U-Boot 配置
# brandy/u-boot-2018/configs/sun8iw20p1_defconfig

CONFIG_BAUDRATE=115200
CONFIG_CONS_INDEX=1          # 1=UART0, 2=UART1, 3=UART2
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_BASE=0x02500000  # UART0 基地址
CONFIG_DEBUG_UART_CLOCK=24000000

12. Linux 内核与设备树配置

12.1 内核版本

分支版本状态
Tina SDK (官方 BSP)Linux 5.4.61✅ 全功能、最稳定、生产推荐
主线 Linux6.4+ ~ 6.12+✅ 基本支持、持续完善中

12.2 设备树 (Device Tree) 核心语法

T113-S3 的设备树文件通常位于 linux-5.4/arch/arm/boot/dts/

// 示例:配置 UART1 和 CAN0
&uart1 {
    pinctrl-names = "default";
    pinctrl-0 = <&uart1_pins>;
    status = "okay";
};

&can0 {
    pinctrl-names = "default";
    pinctrl-0 = <&can0_pins>;
    status = "okay";
};

// 示例:配置 LVDS 显示
&lvds {
    pinctrl-names = "default";
    pinctrl-0 = <&lvds_pins>;
    status = "okay";

    panel: panel {
        compatible = "simple-panel";
        width-mm = <154>;
        height-mm = <86>;
        data-mapping = "vesa-24";

        display-timings {
            native-mode = <&timing0>;
            timing0: timing0 {
                clock-frequency = <51200000>;
                hactive = <1024>;
                vactive = <600>;
                hfront-porch = <160>;
                hback-porch = <140>;
                hsync-len = <20>;
                vfront-porch = <12>;
                vback-porch = <20>;
                vsync-len = <4>;
            };
        };
    };
};

12.3 内核配置菜单

# 进入内核 Kconfig 菜单
make kernel_menuconfig

# 常用配置路径:
# Device Drivers → Network device support → CAN bus → Allwinner CAN
# Device Drivers → Graphics support → DRM → Allwinner Display Engine
# Device Drivers → Sound card support → ALSA → Allwinner Audio

13. 系统编译、打包与烧录

13.1 完整编译流程

cd ~/Tina-SDK

# 1. 初始化编译环境(每次新终端都要执行)
source build/envsetup.sh

# 2. 选择板级配置
lunch
# 在弹出的菜单中选择对应板卡,例如:
#   4. t113_100ask-tina

# 3. 全系统编译(首次约 20~40 分钟)
make -j$(nproc)

# 4. 打包生成固件镜像
pack

# 5. 生成的镜像位置
# out/t113-100ask/t113_100ask-tina.img

13.2 单独编译各组件

# U-Boot
mboot                    # 或 ./build.sh bootloader

# Linux 内核
mkernel                  # 或 ./build.sh kernel

# 设备树
mdtb

# 根文件系统
make                    # 自动根据变化增量编译

# 打包
pack

13.3 烧录方式

方式一:PhoenixSuit USB 线刷(推荐)
1. 安装 PhoenixSuit(位于 SDK 的 tools/ 目录或全志官网下载)
2. 按住开发板的 FEL 键不放
3. USB 连接电脑
4. PhoenixSuit 自动检测到设备 → 选择镜像 → "开始升级"
5. 烧录成功后自动重启
方式二:PhoenixCard TF 卡刷
1. 安装 PhoenixCard V2.8+
2. TF 卡插入读卡器
3. 选择镜像 → 选择模式:
   - "启动卡": 只从 TF 卡启动(不固化到 eMMC)
   - "量产卡": 上电自动将固件烧录到 eMMC/NAND
4. "烧录" → 完成
方式三:fastboot 烧录
# 在 U-Boot 命令行进入 fastboot 模式
fastboot 0

# PC 端
fastboot flash boot boot.img
fastboot flash rootfs rootfs.ext4
fastboot reboot

14. GPIO 与基础外设编程

14.1 sysfs 方式控制 GPIO(Shell)

# 导出 GPIO(计算 pin 号:GPIO 基址 + 偏移)
echo 34 > /sys/class/gpio/export

# 设置方向
echo out > /sys/class/gpio/gpio34/direction
echo in  > /sys/class/gpio/gpio34/direction

# 输出高低电平
echo 1 > /sys/class/gpio/gpio34/value
echo 0 > /sys/class/gpio/gpio34/value

# 读取输入
cat /sys/class/gpio/gpio34/value

# 释放 GPIO
echo 34 > /sys/class/gpio/unexport

14.2 libgpiod C 语言编程

#include <gpiod.h>
#include <stdio.h>

int main(void) {
    struct gpiod_chip *chip;
    struct gpiod_line *line;

    // 打开 GPIO 控制器
    chip = gpiod_chip_open("/dev/gpiochip0");
    if (!chip) {
        perror("gpiod_chip_open");
        return -1;
    }

    // 获取某引脚
    line = gpiod_chip_get_line(chip, 34);  // GPIO 编号

    // 设为输出,初始低电平
    gpiod_line_request_output(line, "myapp", 0);

    // 翻转 LED
    while (1) {
        gpiod_line_set_value(line, 1);
        sleep(1);
        gpiod_line_set_value(line, 0);
        sleep(1);
    }

    gpiod_line_release(line);
    gpiod_chip_close(chip);
    return 0;
}

编译:

arm-openwrt-linux-muslgnueabi-gcc -o gpio_test gpio_test.c -lgpiod

14.3 PWM 控制(背光调节)

# 导出 PWM
echo 0 > /sys/class/pwm/pwmchip0/export

# 设置周期 (ns) 和占空比 (ns)
echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/period    # 1kHz
echo 500000  > /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 50%

# 启用
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

15. CAN 总线开发实战

15.1 设备树配置

// 在 board.dts 中添加
&can0 {
    pinctrl-names = "default";
    pinctrl-0 = <&can0_pins>;
    status = "okay";
};

&can1 {
    pinctrl-names = "default";
    pinctrl-0 = <&can1_pins>;
    status = "okay";
};

15.2 Linux SocketCAN 配置

# 设置 CAN0 波特率 500kbps
ip link set can0 type can bitrate 500000

# 启用 CAN0
ip link set can0 up

# 查看 CAN 状态
ip -details -statistics link show can0

# 开机自动配置 (写入 /etc/network/interfaces 或 init.d 脚本)

15.3 CAN 收发测试

# 终端 A:接收
candump can0

# 终端 B:发送 (CAN ID=0x123, 数据=DEADBEEF)
cansend can0 123#DEADBEEF

15.4 C 语言 SocketCAN 编程

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <linux/can.h>
#include <linux/can/raw.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <unistd.h>

int main(void) {
    int s;
    struct sockaddr_can addr;
    struct ifreq ifr;
    struct can_frame frame;

    // 创建 CAN socket
    s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
    strcpy(ifr.ifr_name, "can0");
    ioctl(s, SIOCGIFINDEX, &ifr);

    addr.can_family = AF_CAN;
    addr.can_ifindex = ifr.ifr_ifindex;
    bind(s, (struct sockaddr *)&addr, sizeof(addr));

    // 发送 CAN 帧
    frame.can_id = 0x123;
    frame.can_dlc = 4;
    frame.data[0] = 0xDE;
    frame.data[1] = 0xAD;
    frame.data[2] = 0xBE;
    frame.data[3] = 0xEF;
    write(s, &frame, sizeof(frame));

    // 接收 CAN 帧
    int nbytes = read(s, &frame, sizeof(frame));
    if (nbytes > 0) {
        printf("CAN ID=0x%03X DLC=%d Data=", frame.can_id, frame.can_dlc);
        for (int i = 0; i < frame.can_dlc; i++)
            printf("%02X ", frame.data[i]);
        printf("\n");
    }

    close(s);
    return 0;
}

16. 串口与 RS485 开发

16.1 T113-S3 UART 与 RS485 的关系

T113-S3 的 6 路 UART 本身是 TTL 电平。要实现 RS485,需要外接 RS485 收发器芯片(如 MAX485 / SP3485),通过 GPIO 控制收发使能:

T113-S3 UART TX  ───→ DI (MAX485) ─→ A/B ──→ RS485 总线
T113-S3 UART RX  ←─── RO (MAX485) ←─ A/B
T113-S3 GPIO     ───→ DE + RE (MAX485) 收发使能

16.2 RS485 收发使能控制

// 在设备树中定义 RS485 控制 GPIO
// 或通过用户空间控制
#include <gpiod.h>

void rs485_set_tx_mode(struct gpiod_line *ctrl_pin) {
    gpiod_line_set_value(ctrl_pin, 1);  // 发送模式
}

void rs485_set_rx_mode(struct gpiod_line *ctrl_pin) {
    gpiod_line_set_value(ctrl_pin, 0);  // 接收模式
}

16.3 Modbus RTU 协议

RS485 最常见的应用是 Modbus RTU。T113-S3 上可以使用 libmodbus 库:

# 在 Buildroot 中启用 libmodbus
# make menuconfig → Target packages → Libraries → libmodbus

# 或在 SDK 中添加 package
#include <modbus.h>

modbus_t *ctx = modbus_new_rtu("/dev/ttyS1", 9600, 'N', 8, 1);
modbus_set_slave(ctx, 1);
modbus_connect(ctx);

uint16_t regs[10];
modbus_read_registers(ctx, 0, 10, regs);  // 读取寄存器
modbus_close(ctx);
modbus_free(ctx);

17. 显示与 LVDS/MIPI DSI 屏幕适配

17.1 屏幕适配流程

1. 从屏幕厂商获取规格书 (分辨率、时序参数、接口类型)
2. 在设备树中添加 panel 节点 (display-timings)
3. 配置显示引擎 (DE) 和接口 (LVDS/DSI/RGB)
4. 编译烧录 → 检查背光亮、图像正常
5. 如有偏色/偏移 → 调整 color-depth、时序 fine-tune

17.2 LVDS 屏幕适配示例

关键时序参数对照:

规格书参数设备树字段说明
Pixel Clockclock-frequency像素时钟 (Hz)
H Activehactive水平有效像素
H Front Porchhfront-porch水平前肩
H Back Porchhback-porch水平后肩
H Sync Widthhsync-len水平同步宽度
V Activevactive垂直有效行
V Front Porchvfront-porch垂直前肩
V Back Porchvback-porch垂直后肩
V Sync Widthvsync-len垂直同步宽度

17.3 Framebuffer 测试

# 查看 framebuffer 信息
cat /sys/class/graphics/fb0/modes
cat /sys/class/graphics/fb0/virtual_size

# 随机颜色填充测试
cat /dev/urandom > /dev/fb0

# 显示图片
ffmpeg -i test.jpg -pix_fmt bgra -f fbdev /dev/fb0

17.4 Qt / LVGL 图形框架

T113-S3 的 GPU 能力有限(无 3D GPU),推荐使用 Qt for Embedded Linux (eglfs/linuxfb)LVGL (轻量级嵌入式 UI)

# Buildroot 中启用 Qt5
make menuconfig
# Target packages → Graphic libraries → Qt5 → 选择所需模块

# 或启用 LVGL
# Target packages → Graphic libraries → lvgl

18. Buildroot 根文件系统定制

18.1 添加自定义应用

# 方法一:通过 make menuconfig 添加官方包
make menuconfig
# 搜索并勾选所需软件包
# 例如:openssh, iperf3, can-utils, i2c-tools

# 方法二:将自己的程序放入 rootfs
mkdir -p target/allwinner/t113-common/myapp/
cp myapp target/allwinner/t113-common/myapp/
# 在对应 Makefile 中安装到 /usr/bin/

18.2 常用 Buildroot 包推荐

包名用途
can-utilsCAN 总线调试工具
i2c-toolsI²C 设备读写
spi-toolsSPI 设备调试
libgpiodGPIO 控制库
opensshSSH 远程登录
iperf3网络性能测试
alsa-utils音频播放/录制
ffmpeg视频编解码/流媒体
lighttpd / nginxWeb 服务器
mosquittoMQTT Broker
libmodbusModbus 协议库

19. 实用项目:工业 HMI 人机界面终端

19.1 系统架构

┌──────────────────────────────────────────┐
│              T113-S3 HMI 终端             │
│                                          │
│  7"/10.1" LVDS LCD  ── 显示 UI (Qt)     │
│  电容触摸屏 (I²C)    ── 触摸交互          │
│  千兆以太网           ── 连接 PLC/SCADA   │
│  CAN × 2             ── 现场总线通信      │
│  RS485 × 2           ── Modbus 设备       │
│  USB Host            ── 键盘/鼠标/U盘     │
│  TF 卡               ── 数据记录/日志      │
│  RTC 电池            ── 掉电时钟保持       │
│  GPIO                ── LED 指示/蜂鸣器   │
└──────────────────────────────────────────┘

19.2 核心功能模块

// HMI 主程序伪代码
int main(void) {
    // 1. 初始化 CAN 与 RS485
    can_init("can0", 500000);     // CAN 500kbps
    rs485_init("/dev/ttyS1", 9600); // RS485 9600bps

    // 2. 初始化显示
    lvgl_fb_init("/dev/fb0");
    touchscreen_init("/dev/input/event0");

    // 3. 创建 LVGL UI
    create_main_screen();
    create_plc_status_page();
    create_alarm_page();

    // 4. Modbus 轮询任务
    pthread_create(&modbus_thread, NULL, modbus_poll_loop, NULL);

    // 5. 主循环
    while (1) {
        lv_timer_handler();
        usleep(5000);
    }
}

20. 实用项目:CAN/RS485 工业网关

20.1 系统架构

           ┌───────────────┐
CAN 总线 ◄─┤  CAN0  CAN1  ├─► CAN 总线
           │               │
Modbus ◄───┤ RS485 UART1   ├─► RS485 设备
           │    T113-S3    │
           │  千兆以太网    ├─► 局域网/云端 (MQTT/HTTP)
           │               │
           │  规则引擎      ├─► 协议转换 + 数据过滤
           │  本地存储      ├─► SQLite / 日志文件
           └───────────────┘

关键功能:

  • CAN ↔ Modbus TCP 桥接
  • CAN ↔ MQTT 云端上报
  • 报文过滤 + 转发规则
  • 本地 SQLite 数据缓存

21. 实用项目:智能商显广告机

21.1 架构

T113-S3 广告机
├── LVDS/MIPI DSI LCD (1080p) ← 广告画面
├── 千兆以太网 / WiFi (USB/SDIO) ← 远程更新内容
├── USB 2.0 Host ← U 盘内容更新
├── eMMC 8GB ← 本地素材存储
├── Audio DAC → Speaker ← 背景音乐
└── GPIO → 人体感应 (PIR) → 播放/待机切换

核心能力:

  • 1080p@60fps H.265 硬解,流畅播放高清广告
  • 定时开关屏 + PIR 节能
  • OTA 远程更新广告内容
  • Qt 叠加 OSD 信息(时间/天气)

22. 开发板与核心板选型指南

22.1 主流方案对比

厂商型号规格亮点参考价格适合场景
百问网东山Π T113s3-Industrial板载双 CAN+双 RS485+LVDS¥200~350工业快速验证
百问网东山Π T113s3-PROMIPI DSI+LVDS+音频¥150~250显示应用入门
米尔科技MYD-YT113S3邮票孔核心板+千兆网+CAN¥300~500产品级开发
米尔科技MYC-YT113X核心板 (37×39mm)¥100~180直接集成到产品
飞凌嵌入式FET113-i工业级 T113-i 核心板¥200~400真正工业级需求
NetCubeNagamimini PCIe 形态+ESP32¥150~300紧凑型 IoT
EbyteECB31-PBRaspberry Pi A 形态¥200~350树莓派替代

22.2 选型建议

你的开发阶段?

├── "刚开始评估,需要快速上手"
│   └── → 百问网东山Π T113s3-PRO 或 米尔 MYD-YT113S3
│        (文档完善,社区活跃,带屏幕)

├── "做工业产品,需要 CAN + RS485 + 工业级验证"
│   └── → 百问网 T113s3-Industrial 或 飞凌 FET113-i

├── "产品定型,需要核心板集成"
│   └── → 米尔 MYC-YT113X 核心板(邮票孔,直焊)

├── "自己做底板,只买芯片"
│   └── → T113-S3 eLQFP128,立创商城 ¥20~35
│        (2~4 层 PCB 即可,手工可焊!)

23. 常见问题与排障指南

23.1 编译与烧录

问题原因解决方法
source build/envsetup.sh 报错未在 SDK 根目录执行cd ~/Tina-SDK 后再执行
lunch 无可用选项板级配置未加载检查 device/config/chips/t113/configs/ 目录
make 编译错误 No such file缺少依赖软件包sudo apt install 补全缺失的包
编译到一半内存不够虚拟机内存不足给虚拟机至少 8GB 内存,或加 swap
PhoenixSuit 找不到设备未进入 FEL 模式 / 驱动未装按住 FEL 键再插 USB;装 PhoenixSuit 驱动
PhoenixSuit 烧录失败镜像不匹配 / USB 线质量问题检查镜像文件名;换短 USB 线

23.2 内核与驱动

问题原因解决方法
启动卡在 “Starting kernel…”内核 / 设备树不匹配检查 bootargs 和设备树文件名
外设不工作设备树 status≠okay检查 board.dts 中外设的 status = "okay"
CAN 初始化失败引脚复用冲突检查 pinctrl 配置是否与其他外设冲突
LVDS 无显示屏时序参数错误用示波器量 CLK,对比规格书微调
LVDS 花屏数据映射 (VESA/JEIDA) 错误修改 data-mapping 属性

23.3 硬件设计

问题原因解决方法
芯片不启动VCC_CORE (1.1V) 电压不对检查外部 DCDC 输出电压
芯片不启动32.768kHz 晶振不起振检查晶振 + 负载电容
DDR 不稳定VCC_DRAM 电压 / 退耦不足检查 1.35V/1.5V 供电纹波
以太网不识别 PHYMDIO 地址/复位时序不对检查 PHY 地址 strap,确认 reset 时序
模拟音频底噪大模拟地与数字地隔离不够单点接地 + VCCA 独立 LDO 供电

23.4 快速诊断命令

# 查看系统信息
cat /proc/cpuinfo        # CPU 信息
cat /proc/meminfo        # 内存信息
free -h                  # 内存使用
df -h                    # 磁盘使用

# 查看外设
ifconfig -a              # 网络接口
ip link show             # 所有网络设备
cat /proc/net/can/version # CAN 驱动版本

# 查看设备树
ls /proc/device-tree/    # 当前生效的设备树

# 查看 GPIO 状态
cat /sys/kernel/debug/gpio  # 需挂载 debugfs

# 查看内核日志
dmesg | tail -50
dmesg | grep -i error

# 查看中断
cat /proc/interrupts

24. 进阶学习路线

阶段 1:入门 (1~2 周)
├── 购买一块 T113-S3 开发板(推荐百问网或米尔)
├── 搭建 Tina Linux SDK 编译环境
├── 编译默认固件 → 烧录 → 启动!
├── 串口登录,熟悉 Linux 基本命令
└── 学习设备树基础概念

阶段 2:外设驱动 (2~3 周)
├── GPIO 控制(LED + 按键)
├── UART 通信(串口终端 + 数据收发)
├── I²C 传感器驱动(温度/湿度/加速度计)
├── PWM 输出(背光调节/舵机控制)
├── SPI Flash 读写
├── 千兆以太网联网通信
└── CAN 总线收发(SocketCAN)

阶段 3:显示与 UI (3~4 周)
├── 适配 LVDS 屏幕(时序配置 + 设备树)
├── 适配 MIPI DSI 屏幕
├── Framebuffer 图形测试
├── Qt for Embedded Linux 移植
├── LVGL 轻量级 UI 框架移植
├── 电容触摸屏驱动 + 校准
└── 多屏异显配置

阶段 4:应用开发 (4~6 周)
├── 视频播放 (H.265/H.264 硬解 + FFmpeg)
├── 摄像头采集 (CSI/MIPI + V4L2)
├── 音频录制与播放 (ALSA)
├── 网络应用 (MQTT / HTTP / WebSocket)
├── Modbus RTU/TCP 工业协议
├── SQLite 本地数据库
├── OTA 远程固件升级
└── 看门狗 + 异常重启恢复

阶段 5:产品化 (4~8 周)
├── 自主设计 PCB (2~4 层板,手工焊接 T113-S3)
├── 电源完整性 + 信号完整性验证
├── 低功耗优化 (CPUfreq + Suspend-to-RAM)
├── 安全启动 (Secure Boot + eFuse)
├── 量产烧录方案 (TF 卡量产 / USB 一拖多)
├── EMC/EMI 预测试与整改
├── FCC/CE 认证
└── 生产测试治具设计

25. 参考资料

官方文档

  1. 全志 T113-S3 数据手册 (Datasheet) — 全志科技 / 代理商获取
  2. 全志 T113-S3 用户手册 (User Manual) — 全志科技
  3. Tina Linux SDK 开发文档docs/ 目录
  4. 全志在线论坛bbs.aw-ol.com

社区与开源

  1. Linux-sunxi T113-s3 Wikilinux-sunxi.org/T113-s3
  2. 百问网东山Π文档docs.100ask.net
  3. 米尔科技 MYD-YT113X 文档myirtech.com
  4. CNX Software T113-S3 报导cnx-software.com
  5. 主线 Linux T113 支持 — kernel.org v6.4+

工具下载

  1. PhoenixSuit — 全志 USB 烧录工具
  2. PhoenixCard — 全志 TF 卡烧录工具
  3. 交叉工具链arm-openwrt-linux-muslgnueabi-gcc
  4. 全志 Image 打包工具imgrepacker

学习资源

  1. 全志 Tina Linux SDK 编译指南 — CSDN/博客园 社区文章
  2. Buildroot 官方手册buildroot.org
  3. Linux Device Tree 规范devicetree.org
  4. SocketCAN 编程文档 — Linux kernel Documentation/networking/can.rst

版权声明:本文由作者原创撰写,仅供学习和交流使用。文中技术参数来源于全志科技官方数据手册、Tina Linux SDK 文档及公开技术资料,如有疏漏欢迎在评论区指正。
转载声明:如需转载,请联系作者获得授权,并注明出处。
免责声明:本文所述代码示例和电路方案仅供学习参考,实际产品设计请以全志科技官方最新数据手册为准。


更多推荐