3. 开发环境搭建与SDK获取
在开始 Sitara 平台的 HMI 与边缘控制终端开发之前,必须先建立一套稳定、可复现的宿主机开发环境。本节围绕四件事展开:安装 Processor SDK Linux、配置交叉编译工具链、搭建 TFTP/NFS 启动环境,以及使用 CCS 与 Yocto 构建基础镜像。这四件事并非彼此独立,而是构成一条从"获取 SDK"到"在目标板上跑起自制镜像"的完整链路。理解它们之间的依赖关系,比记住每条命令更重要。
一、Processor SDK Linux 的获取与安装
TI 为 Sitara 系列(如 AM335x、AM437x、AM62x 等)提供统一的 Processor SDK Linux,它包含 U-Boot、Linux 内核、设备树、根文件系统、交叉编译器以及 Yocto 元数据层。获取方式有两种:一是从 TI 官网下载对应芯片的 SDK 安装包(形如 ti-processor-sdk-linux-soc-version-Linux-x86-Install.bin),二是通过 Yocto 从源码构建。对于初次搭建,建议先使用官方安装包,快速获得可用的预编译镜像与工具链。
安装时在 Ubuntu 宿主机(推荐 20.04/22.04 LTS,64 位)上执行安装脚本,指定安装目录,例如 /home/dev/ti-sdk。安装完成后,SDK 根目录下会出现 board-support/、linux-devkit/、filesystem/、bin/ 等子目录。其中 linux-devkit/ 就是交叉编译工具链,filesystem/ 内含预构建的根文件系统,bin/ 下有 create-sdcard.sh 等辅助脚本。安装前需确认宿主机已安装必要依赖,如 build-essential、git、python3、libssl-dev、flex、bison 等,否则后续编译会因缺少头文件或工具而中断。
二、交叉编译工具链的配置
Sitara 目标板通常运行 ARM 架构的 Linux,而宿主机是 x86_64,因此必须使用交叉编译工具链。SDK 自带的工具链位于 linux-devkit/ 下,通过执行其环境脚本即可激活:
cd /home/dev/ti-sdk/linux-devkit
source environment-setup
arm-linux-gnueabihf-gcc -v
执行后,CC、CXX、PATH 等变量会被自动设置,命令行中可直接调用 arm-linux-gnueabihf-gcc。验证方法很简单:写一个 hello.c,用交叉编译器编译,再用 file 命令查看输出文件架构,应显示为 ARM 而非 x86-64。这一步是后续编译内核模块、应用程序和 Yocto 配方的基础。若使用 Yocto 构建,工具链会由 Yocto 自动生成,位于 build/tmp/deploy/sdk/ 下,安装后同样通过 source 环境脚本激活。
三、TFTP 与 NFS 启动环境搭建
在开发阶段,频繁烧写 SD 卡效率很低。更高效的方式是让目标板通过 TFTP 从宿主机加载内核与设备树,再通过 NFS 挂载根文件系统。这样修改内核或应用后,只需重启目标板即可,无需重新烧录。
TFTP 服务端配置:在宿主机安装 tftpd-hpa,将 /etc/default/tftpd-hpa 中的 TFTP_DIRECTORY 指向存放镜像的目录,例如 /srv/tftp,并确保该目录权限为可读。把编译好的 zImage 和 .dtb 文件复制进去。NFS 服务端配置:安装 nfs-kernel-server,在 /etc/exports 中添加导出条目,例如:
/srv/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)
然后执行 exportfs -ra 并重启服务。目标板侧,在 U-Boot 中设置 serverip、ipaddr、bootargs 等变量,使内核命令行包含 root=/dev/nfs nfsroot=<宿主机IP>:/srv/nfs/rootfs。启动后若能看到内核日志中 NFS 挂载成功,并进入登录提示符,说明环境已通。常见故障包括防火墙拦截、IP 不在同一网段、NFS 版本不匹配等,可先用 ping 和 showmount -e 排查。
四、使用 CCS 与 Yocto 构建基础镜像
Code Composer Studio(CCS)主要用于应用层与驱动层的调试,支持连接 Sitara 目标板进行在线调试、断点、变量查看等。安装 CCS 时选择 Sitara 器件支持包,并配置好调试探针(如 XDS110 或板载 JTAG)。CCS 本身不负责生成完整 Linux 镜像,镜像构建交给 Yocto。
Yocto 构建流程如下:先安装 repo 工具,初始化 SDK 的 Yocto 元数据仓库,然后执行 oe-layersetup.sh 选择对应机器的配置(如 processor-sdk-linux 的 am335x-evm)。进入 build/ 目录后,执行:
MACHINE=am335x-evm bitbake core-image-minimal
首次构建耗时较长(数小时,取决于网络与 CPU),因为需要下载并编译大量配方。构建完成后,镜像位于 build/tmp/deploy/images/am335x-evm/ 下,包含 .wic、zImage、.dtb 等文件。若需要包含 HMI 图形栈,可改用 core-image-sato 或自定义 local.conf 添加 Qt、Weston 等配方。构建过程中若出现下载失败,可配置 DL_DIR 复用缓存;若编译报错,优先检查 conf/local.conf 中的 MACHINE 与 DISTRO 是否匹配。
no_root_squash 选项会影响目标板写入根文件系统的能力;若目标板启动后无法创建文件,优先检查 /etc/exports 与宿主机防火墙设置。