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 配方编译后,产出引导固件、内核、设备树和根文件系统,最终打包为可烧录镜像。
五、常见误区与排障复盘
第一个误区是把 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 的启动链对应关系后,后续无论是裁剪内核、修改设备树,还是集成自定义应用,都能在正确的层次上动手,而不是在错误的目录里反复试错。