检查 T527 与 Avaota A1 的主线支持
移植并不等于从零编写四套代码。了解系统的启动顺序和构建关系后,再确认每个主线项目已经支持到哪一层:已有部分从官方文件继续验证,缺失部分才进入后续适配。
四个组件的主线支持情况
| 项目 | 官方版本 | Avaota A1/T527 现状 | 本课程要做什么 |
|---|---|---|---|
| TF-A | v2.15.0 | 没有 sun55i_a523 平台 | 引入开发平台代码并验证 BL31 |
| U-Boot | v2026.07 | 已有 defconfig 和板级 DTS | 从官方配置起步,解决实际启动问题 |
| Linux | v7.2 | 已有 A523 DTSI 和 Avaota A1 DTS | 复用已有描述,补充并验证板级差异 |
| Buildroot | 2026.05.1 | 没有 Avaota A1 板级配置 | 新建 defconfig、overlay 和镜像规则 |
这张表决定后面的学习顺序:TF-A 是第一个源码缺口;U-Boot 和 Linux 不从空文件开始;Buildroot 在启动固件可用后再建立整机配置。
准备四个官方版本
| 项目 | 版本资料 | 源码下载 |
|---|---|---|
| TF-A | 2.15.0 文档 | v2.15.0 源码包 |
| U-Boot | v2026.07 标签 | v2026.07 源码包 |
| Linux | v7.2 标签 | linux-7.2.tar.xz |
| Buildroot | 2026.05.1 标签 | buildroot-2026.05.1.tar.xz |
推荐使用 Git,因为后续需要反复查看提交、补丁和本地修改。
展开 Git 获取命令
mkdir mainline-a1
cd mainline-a1
git clone --depth 1 --branch v2.15.0 \
https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git \
trusted-firmware-a-v2.15.0
git clone --depth 1 --branch v2026.07 \
https://source.denx.de/u-boot/u-boot.git \
u-boot-v2026.07
git clone --depth 1 --branch v7.2 \
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git \
linux-v7.2
git clone --depth 1 --branch 2026.05.1 \
https://gitlab.com/buildroot.org/buildroot.git \
buildroot-2026.05.1
检查工作区时应看到四个同级目录:
mainline-a1/
├── trusted-firmware-a-v2.15.0/
├── u-boot-v2026.07/
├── linux-v7.2/
└── buildroot-2026.05.1/
下面的搜索必须在未修改的官方版本上执行。否则搜索结果只能代表本地工程,不能说明上游原本支持什么。
检查 TF-A 平台支持
TF-A 为 Linux 和 U-Boot 提供 EL3 固件与 PSCI。先列出 2.15.0 已收录的全志平台:
find trusted-firmware-a-v2.15.0/plat/allwinner \
-mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort
官方目录只有:
sun50i_a64
sun50i_h6
sun50i_h616
sun50i_r329
没有 sun55i_a523,搜索 A523/T527 也没有结果:
grep -RInE 'sun55i|a523|t527' \
trusted-firmware-a-v2.15.0/plat/allwinner
因此缺少的是 A523/T527 SoC 家族的平台实现,不是一个 Avaota A1 板级配置文件。后续需要补入 CPU 拓扑、内存映射和 PSCI 电源管理代码,才能生成 T527 使用的 bl31.bin。
检查 U-Boot 板级支持
在 U-Boot 中搜索板名:
find u-boot-v2026.07/configs \
-maxdepth 1 -iname '*avaota*' -print
find u-boot-v2026.07/dts/upstream/src/arm64/allwinner \
-maxdepth 1 -iname '*avaota*' -print
官方版本已经包含两处板级入口:
u-boot-v2026.07/
├── configs/avaota-a1_defconfig
└── dts/upstream/src/arm64/allwinner/
└── sun55i-t527-avaota-a1.dts
关键配置说明它已经选择 Avaota A1 设备树、A523/T527 公共 SoC 实现、SPL 和 eMMC:
| 配置 | 含义 |
|---|---|
CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun55i-t527-avaota-a1" | 使用 Avaota A1 板级 DTS |
CONFIG_MACH_SUN55I_A523=y | 复用 A523/T527 SoC 公共实现 |
CONFIG_SPL=y | 生成片内 SRAM 中运行的第一阶段 |
CONFIG_MMC_SUNXI_SLOT_EXTRA=2 | 启用额外 MMC 控制器 |
CONFIG_SUPPORT_EMMC_BOOT=y | 支持 eMMC 启动分区 |
结论不是“U-Boot 已经完全可用”,而是 不需要从零建立板级身份。是否能从 Avaota A1 的 eMMC 冷启动,仍要由镜像布局和串口日志验证。
检查 Linux 设备树支持
Linux 的 SoC 公共描述与板级描述分成两个文件:
linux-v7.2/arch/arm64/boot/dts/allwinner/
├── sun55i-a523.dtsi
└── sun55i-t527-avaota-a1.dts
| 文件 | 描述内容 |
|---|---|
sun55i-a523.dtsi | CPU、GIC、时钟、MMC、USB 等 SoC 内部控制器 |
sun55i-t527-avaota-a1.dts | Avaota A1 的电源、存储、网口、串口和板载器件连接 |
板级文件已经给出明确身份和调试串口:
/ {
model = "Avaota A1";
compatible = "yuzukihd,avaota-a1", "allwinner,sun55i-t527";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
这证明 Linux 7.2 已经收录 T527/Avaota A1 设备树,不能把后续工作描述成“新增整块板的 Linux 支持”。课程要做的是核对实际硬件、补充必要限制,并逐项验证驱动。
检查 Buildroot 板级配置
find buildroot-2026.05.1/configs buildroot-2026.05.1/board \
\( -iname '*avaota*' -o -iname '*t527*' \) -print
官方 Buildroot 2026.05.1 没有匹配结果。缺失的是整机集成入口:
buildroot-2026.05.1/
├── configs/avaota_a1_mainline_defconfig
└── board/avaota/a1-mainline/
├── linux.fragment
├── rootfs-overlay/
├── post-build.sh
└── genimage.cfg
Buildroot 负责组织工具链、Linux、根文件系统和最终镜像,不负责补齐 TF-A 或 U-Boot 的 SoC 启动代码。
确定需要完成的移植工作
TF-A 补入 A523/T527 平台代码,生成 BL31
↓
U-Boot 从官方 Avaota A1 配置开始,验证 SPL、FIT 与 eMMC
↓
Linux 复用官方设备树,补充并验证板级差异
↓
Buildroot 新建整机配置,组织 rootfs 与 eMMC 镜像
检查结果表明,指定 TF-A 版本缺少 T527 所需的平台实现。下一阶段先准备 BL31,再由 U-Boot 将它与 SPL、U-Boot proper 和设备树组合起来。
下一节:为 T527 准备 TF-A