3. 工业Linux开发环境搭建

在开始调试 TI Sitara 平台之前,主机侧环境必须先具备“可编译、可构建、可复现”的能力。工业 Linux 与桌面 Linux 最大的差别在于:目标板通常使用 ARM 架构,主机是 x86_64,因此所有用户态程序、内核模块、设备树都必须经过交叉编译;同时,产品交付要求镜像可重复构建,所以需要 Yocto/OpenEmbedded 这类构建系统来管理配方、层和依赖。本节围绕 SDK 安装、工具链配置、Yocto 入门和主机依赖排查展开,目标是让读者能独立搭好一套可用的开发环境。

一、SDK 安装与目录结构

TI 为 Sitara 系列(如 AM335x、AM62x、AM64x)提供 Processor SDK,通常包含 Linux SDK 安装包和 Yocto 层。以 AM62x 为例,安装包命名类似 ti-processor-sdk-linux-am62xx-evm-09.01.00.08-Linux-x86-Install.bin。安装时建议指定独立目录,避免与系统路径混用:

chmod +x ti-processor-sdk-linux-am62xx-evm-09.01.00.08-Linux-x86-Install.bin
./ti-processor-sdk-linux-am62xx-evm-09.01.00.08-Linux-x86-Install.bin
# 安装路径示例:/opt/ti/am62xx-sdk-09.01.00.08

安装完成后,SDK 根目录下通常包含以下关键子目录:board-support/ 存放 U-Boot、Linux 内核源码及补丁;linux-devkit/ 是交叉编译工具链与环境脚本;filesystem/ 提供预编译的根文件系统;bin/ 放置创建 SD 卡、烧写等辅助脚本;yocto-build/ 或 sources/ 则对应 Yocto 构建所需的层与配方。理解这个结构后,后续定位内核、工具链和镜像就不会迷路。

二、交叉编译工具链配置

交叉编译工具链的核心是“在 x86 主机上生成 ARM 目标代码”。SDK 自带的工具链位于 linux-devkit/,通过环境脚本激活:

cd /opt/ti/am62xx-sdk-09.01.00.08
source linux-devkit/environment-setup
# 激活后可用:
echo $CC
# 典型输出:aarch64-oe-linux-gcc -mcpu=cortex-a53 ...

激活后,CC、CXX、LD、AR 等变量会自动指向交叉工具,并附带目标架构的编译选项。此时编译一个简单程序:

aarch64-oe-linux-gcc hello.c -o hello
file hello
# 输出应显示:ELF 64-bit LSB executable, ARM aarch64

如果 file 显示为 x86-64,说明没有正确激活环境或误用了主机 gcc。对于内核模块,还需要指定内核源码路径和架构:

make -C /opt/ti/am62xx-sdk-09.01.00.08/board-support/linux-6.1.xx \
     ARCH=arm64 CROSS_COMPILE=aarch64-oe-linux- M=$PWD modules

这里 ARCH=arm64 与 CROSS_COMPILE 前缀必须与工具链一致,否则会出现“无法识别目标文件格式”或“找不到头文件”的错误。

三、Yocto/OpenEmbedded 构建系统入门

Yocto 不是单一工具,而是一套基于 BitBake 的构建框架。它通过“配方(.bb)—层(layer)—配置(local.conf、bblayers.conf)”三层结构描述“如何从源码构建出完整镜像”。TI SDK 已经提供了 meta-ti、meta-arm、meta-arago 等层,用户只需在 build/conf/ 中声明机器和镜像类型。

典型初始化流程如下:

cd /opt/ti/am62xx-sdk-09.01.00.08/yocto-build
source oe-init-build-env build
# 编辑 conf/local.conf:
MACHINE = "am62xx-evm"
# 编辑 conf/bblayers.conf,加入 meta-ti、meta-arago 等层
bitbake tisdk-default-image

首次构建会下载大量源码,耗时较长。构建产物位于 build/tmp/deploy/images/am62xx-evm/,包括 tisdk-default-image-am62xx-evm.wic.xz、内核 Image、设备树 k3-am625-sk.dtb 等。判断构建是否成功,关键看 BitBake 是否以 NOTE: Tasks Summary 正常结束,以及 deploy 目录中是否生成了完整的 wic 镜像。

Sitara 工业 Linux 开发环境:主机侧构建链路 主机环境 (x86_64) Ubuntu 20.04/22.04 gawk / wget / git / diffstat python3 / chrpath / cpio 磁盘 ≥ 120 GB,内存 ≥ 16 GB Processor SDK 安装 board-support/ 内核与 U-Boot linux-devkit/ 交叉工具链 filesystem/ 根文件系统 yocto-build/ 构建目录 交叉编译工具链 aarch64-oe-linux-gcc CC / CXX / LD / AR ARCH=arm64 CROSS_COMPILE 前缀 Yocto / OpenEmbedded 构建系统 BitBake 解析 .bb 配方 → 层 (meta-ti / meta-arago / meta-arm) local.conf: MACHINE = "am62xx-evm" bblayers.conf: 声明依赖层 bitbake tisdk-default-image 构建产物 deploy/images/am62xx-evm/ tisdk-default-image-am62xx-evm.wic.xz | Image | k3-am625-sk.dtb | modules 判断成功:BitBake 正常结束 + wic 镜像完整生成 常见主机问题 缺少 gawk / chrpath 磁盘空间不足 工具链未 source 网络下载超时

四、主机环境依赖与常见问题排查

Yocto 对主机依赖非常敏感。官方推荐 Ubuntu 20.04/22.04,安装基础包:

sudo apt-get install gawk wget git diffstat unzip texinfo gcc build-essential \
  chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
  iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3

常见问题中,bitbake 报 “Please install gawk” 说明缺少 gawk;报 “chrpath not found” 则缺少 chrpath。若构建中途提示磁盘不足,需检查 build/tmp 所在分区,Yocto 完整构建通常需要 80~120 GB。若出现 “do_fetch” 超时,可配置代理或使用本地镜像源。另一个高频问题是工具链未激活:直接运行 aarch64-oe-linux-gcc 提示找不到命令,说明没有执行 source environment-setup。排查时建议按“依赖包 → 磁盘 → 网络 → 工具链环境 → 层配置”的顺序逐项确认,避免盲目重装。

建议在首次构建前执行 bitbake -k tisdk-default-image 的 dry-run 或先构建 core-image-minimal 验证环境,再切换到完整镜像,可显著减少排错时间。