4. TI Processor SDK

在 AM62x 的 BSP 开发中,TI Processor SDK 是贯穿始终的“总入口”。它并不是一个单一软件包,而是把引导固件、Linux 内核、设备树、根文件系统、工具链、示例程序与构建系统打包在一起,形成一套可复现、可裁剪、可扩展的交付集合。理解 SDK 的组件划分,以及 Yocto/Arago 在其中的角色,是后续做定制镜像、裁剪驱动、集成应用的前提。

一、Processor SDK 的组件分层

从开发者视角看,AM62x 的 Processor SDK Linux 可以拆成四层:最底层是 SoC 相关的引导与固件(如 tiboot3.bin、tispl.bin、u-boot.img、ATF、OP-TEE、DM 固件);其上是 Linux 内核与设备树;再往上是根文件系统与用户态库;最外层是构建系统与开发工具。SDK 安装后通常呈现为 board-support/、bin/、filesystem/、linux-devkit/、source/ 等目录,分别对应源码、预编译镜像、根文件系统、交叉工具链和 Yocto 元数据。

其中 board-support/ 是 BSP 工程师最常打交道的目录,里面包含 U-Boot、Linux 内核、设备树源码以及 TI 提供的补丁集。SDK 的版本号(如 09.01.00)与 Yocto 的发布代号(如 kirkstone)绑定,意味着内核版本、U-Boot 版本、工具链版本是成套验证过的,不建议随意混用不同 SDK 的组件。

二、Yocto 与 Arago 构建系统

Yocto Project 是一套构建嵌入式 Linux 发行版的框架,核心是 BitBake 与 OpenEmbedded 元数据。它通过“配方(recipe)—层(layer)—配置(conf)”的机制,把源码拉取、打补丁、编译、打包、生成镜像串成流水线。Arago 则是 TI 在 Yocto 之上维护的发行版配置层,它定义了 TI 特有的机器配置、内核配方、U-Boot 配方、SDK 镜像目标以及工具链打包方式。可以简单理解为:Yocto 是引擎,Arago 是 TI 为自家 SoC 写好的“车型配置”。

在 AM62x 上,典型构建流程如下:先安装依赖并初始化环境,再通过 oe-layersetup 拉取指定 release 的层组合,最后用 BitBake 构建目标镜像。常用命令如下:

# 1. 获取并初始化层配置
git clone https://git.ti.com/git/arago-project/oe-layersetup.git
cd oe-layersetup
./oe-layersetup.sh -f configs/processor-sdk/processor-sdk-kirkstone-chromium-config.txt

# 2. 进入构建环境
cd build
source conf/setup-host-check.sh
bitbake-layers show-layers

# 3. 构建基础镜像与 SDK
bitbake tisdk-base-image
bitbake tisdk-default-image
bitbake meta-toolchain-arago-tisdk

构建产物通常位于 build/arago-tmp-external-arm-glibc/deploy/images/am62xx-evm/ 下,包括 tisdk-default-image-am62xx-evm.wic.xz、tiboot3.bin、tispl.bin、u-boot.img 以及内核与设备树文件。理解这些产物的对应关系,才能在烧录和启动排障时快速定位问题。

三、Board Support Package 的组成

BSP 是“让一块板子跑起来”的最小完整集合。对 AM62x EVM 或自定义板而言,BSP 通常包含:引导链(ROM 代码 → tiboot3.bin → tispl.bin → u-boot.img)、Linux 内核镜像与模块、设备树(k3-am625-sk.dtb 等)、根文件系统、交叉工具链,以及烧录工具与启动脚本。设备树是 BSP 定制中最关键的部分,它描述引脚复用、外设地址、时钟、电源域和板级差异;同一颗 AM62x,换一块底板往往只需要改设备树和 U-Boot 环境变量。

BSP 最小验证闭环:串口能打印 U-Boot SPL 日志 → U-Boot 能识别 eMMC/SD → 内核能挂载根文件系统 → 登录后 ip link 能看到网口 → dmesg 无致命报错。这五步通过,说明 BSP 基本可用。

四、组件关系与构建数据流

下图把 SDK 组件、Yocto/Arago 构建系统与 BSP 产物之间的数据流关系画在一起,便于建立整体认知:源码层经 BitBake 配方编译后,产出引导固件、内核、设备树和根文件系统,最终打包为可烧录镜像。

AM62x Processor SDK 组件与构建数据流 源码与元数据层 U-Boot / ATF / OP-TEE Linux Kernel + DTS Yocto Recipes / Layers Arago 发行版配置 Yocto / Arago 构建 BitBake 任务调度 do_fetch → do_compile do_package → do_image tisdk-default-image BSP 可烧录产物 tiboot3.bin / tispl.bin / u-boot.img Image + k3-am625-sk.dtb tisdk-default-image.wic.xz linux-devkit 交叉工具链 AM62x 启动链与 BSP 对应关系 Boot ROM SoC 内部固化 tiboot3.bin SPL + R5 固件 tispl.bin ATF + OP-TEE + DM u-boot.img U-Boot 主程序 Kernel + DTB + RootFS Linux 运行环境 BSP 定制关注点 • 设备树:引脚复用、外设使能、电源域 • U-Boot:环境变量、启动介质顺序、DDR 参数 • 内核:驱动裁剪、模块加载、启动参数 • 根文件系统:软件包裁剪、systemd 服务、OTA 预留

五、常见误区与排障复盘

第一个误区是把 SDK 当成“一个可以直接烧的镜像”。实际上 SDK 安装包提供的是源码、预编译产物和构建环境,真正要烧录的 .wic 镜像往往需要自己用 BitBake 构建,或使用官方发布的预构建镜像。第二个误区是混用不同版本的 U-Boot、内核和设备树,导致启动阶段卡在 Starting kernel ... 或设备树解析失败。第三个误区是只改设备树却忘了同步 U-Boot 的引脚配置,出现“内核里外设存在但引脚无输出”的现象。

排障建议:遇到启动失败时,先确认串口日志停在哪个阶段。若停在 SPL,检查 tiboot3.bin 与 DDR 配置;若停在 U-Boot,检查环境变量与启动介质;若停在 kernel,检查设备树与根文件系统挂载参数。不要一上来就重装 SDK,先定位阶段能节省大量时间。

六、组件速查清单

组件 典型路径/文件 作用
引导固件 tiboot3.bin / tispl.bin / u-boot.img 完成 SoC 初始化并加载内核
Linux 内核 board-support/linux-*/ 提供驱动、调度、文件系统支持
设备树 k3-am625-sk.dtb 描述板级硬件资源与引脚复用
根文件系统 tisdk-default-image-*.wic.xz 提供用户态库、工具与应用程序
交叉工具链 linux-devkit/ 在主机上编译目标板程序
Yocto/Arago oe-layersetup + build/ 组织配方、层与镜像构建流程

掌握 SDK 的组件边界、Yocto/Arago 的构建逻辑以及 BSP 的启动链对应关系后,后续无论是裁剪内核、修改设备树,还是集成自定义应用,都能在正确的层次上动手,而不是在错误的目录里反复试错。