1. T113平台初探:认识这颗芯片
做嵌入式Linux开发这么多年,我接触过不少SoC。全志T113这颗芯片,说实话第一次拿到时我还有点不以为然——双核Cortex-A7,看起来中规中矩嘛。但真正用起来才发现,这玩意儿在性价比上确实有两把刷子。
咱们这门课就是围绕T113展开的。第一章,先带你把平台摸清楚。
1.1 全志T113处理器概览
T113是颗啥芯片?说白了,它是全志针对工业控制、智能家居、车载电子这些场景推的一款高集成度SoC。我习惯把它理解成「一颗能跑Linux的MCU」——功耗低、外设全、成本控制得死死的。
| 参数项 | 规格 |
|---|---|
| CPU核心 | 双核 Cortex-A7 @ 1.2GHz |
| GPU | Mali-400 MP2 |
| 内存接口 | DDR3/DDR3L/LPDDR3,最大2GB |
| 存储接口 | SD/MMC、NAND Flash、SPI NOR |
| 视频编解码 | H.264 1080p@60fps 解码 |
| 显示接口 | RGB/LVDS/MIPI DSI |
| 网络 | 百兆以太网 + 内置WiFi/BT |
| 封装 | BGA 282,13mm x 13mm |
嗯,这里要注意:T113的DDR控制器只支持到DDR3,别想着往上怼DDR4。我在一个项目里就吃过这个亏,采购那边图便宜买了DDR4颗粒,结果焊上去根本点不亮。
1.2 芯片架构:内部长啥样
咱们来看看T113的内部结构。我画了张图,把主要模块串起来,你一看就明白。
从图上能看出来,T113的架构其实挺清晰的。两个Cortex-A7核共享256KB的L2缓存,通过AXI总线连到各个外设。我个人觉得这设计最聪明的地方是把百兆以太网的PHY也集成进去了——省掉一颗外部PHY芯片,BOM成本能降不少。
关键点:T113没有硬件视频编码器,只有解码器。如果你要做视频推流或者录像功能,得靠CPU软编码。1080p的H.264软编码大概能吃掉60%-80%的CPU资源,设计时心里要有数。
1.3 开发板资源介绍
市面上T113的开发板不少,我手头用的是全志官方的T113-S3参考板。咱们课程里所有的例程和调试方法,都是基于这块板子验证过的。
| 板载资源 | 说明 |
|---|---|
| SoC | T113-S3 (双核A7 @ 1.2GHz) |
| 内存 | 512MB DDR3 (可扩展至1GB) |
| 存储 | 8GB eMMC + SPI NOR Flash |
| 网络 | 百兆RJ45 + 板载WiFi/BT天线 |
| 显示 | 7寸LVDS屏接口 + HDMI输出 |
| 调试接口 | UART0 (3.3V TTL电平) + JTAG |
| 扩展接口 | 40pin GPIO排针 (含I2C/SPI/UART/PWM) |
| 电源 | 5V DC供电,支持USB供电 |
我的习惯:拿到一块新开发板,第一件事不是上电,而是拿万用表量一下电源对地阻抗。T113的VCC_IO和VCC_DDR如果短路,上电瞬间就可能烧芯片。别问我怎么知道的……
1.4 搭建最小系统
所谓最小系统,就是让T113能跑起来、能打印、能交互。你需要准备这几样东西:开发板、USB转串口模块(推荐FT232或CP2102)、5V/2A电源、一张TF卡(用于烧录系统)。
搭建步骤其实不复杂,我列个清单:
- 连接串口:把USB转串口的TX/RX/GND分别接到开发板的UART0对应引脚。波特率设115200,8N1,无流控。
- 准备启动介质:T113支持从SD卡、eMMC、SPI NOR启动。咱们先用SD卡,方便调试。
- 烧录Boot0:全志的启动流程是Boot ROM → Boot0 → U-Boot → Kernel。Boot0是固化在芯片里的,但你需要把U-Boot写到SD卡的特定偏移位置。
- 烧录U-Boot:用dd命令写到SD卡8KB偏移处。
- 烧录Kernel和DTB:放到SD卡的FAT分区里。
- 上电启动:插上SD卡,上电,看串口输出。
# 烧录U-Boot到SD卡(假设SD卡设备是/dev/sdb)
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
# 创建FAT分区并拷贝内核
sudo mkfs.vfat /dev/sdb1
sudo mount /dev/sdb1 /mnt
sudo cp zImage /mnt/
sudo cp sun8i-t113-s3.dtb /mnt/
sudo umount /mnt
注意:dd命令的seek=8这个参数千万别写错。我曾经手抖写成seek=0,直接把SD卡的分区表干掉了。全志的启动协议要求U-Boot必须放在8KB偏移处,这是Boot ROM硬编码的。
上电后,串口应该能看到类似这样的输出:
U-Boot 2023.07 (Jan 15 2024 - 14:30:00 +0800) Allwinner Technology
CPU: Allwinner T113 (SUN8I)
DRAM: 512 MiB
MMC: mmc@4020000: 0
Loading: zImage ... done
Starting kernel ...
看到这行输出,说明你的最小系统已经跑起来了。嗯,到这里,T113平台算是初步认识了。
小结一下:这一章我们看了T113的芯片规格、内部架构、开发板资源,还亲手搭了个最小系统。后面的章节,咱们会一个一个啃它的外设驱动——从GPIO开始,到I2C、SPI、UART、PWM、音频、显示……每个外设我都会带着你写驱动、做测试、踩坑、填坑。