2. i.MX 95硬件平台与开发环境搭建
i.MX 95是NXP面向边缘AI视觉应用推出的异构多核处理器,其硬件平台与开发环境的搭建质量,直接决定了后续模型部署、图像采集与推理调优的效率。本节围绕EVK板卡接口、电源与启动模式、Yocto/BSP构建、交叉编译工具链以及串口与网络调试环境五个方面展开,目标是让读者能够独立完成一块i.MX 95 EVK从开箱到可远程登录、可编译、可部署的完整开发环境。
2.1 EVK板卡接口与硬件资源
i.MX 95 EVK(Evaluation Kit)通常以核心板加底板的形式提供。核心板上集成i.MX 95 SoC、LPDDR5内存、eMMC以及PMIC电源管理芯片;底板上则引出各类外设接口。对于边缘AI视觉工程,需要重点关注的接口包括:
- MIPI CSI-2摄像头接口:用于连接图像传感器,是视觉系统的输入通道,通常支持多路摄像头输入。
- MIPI DSI/HDMI显示接口:用于本地预览或调试显示。
- 千兆以太网口:用于远程登录、文件传输和网络推理服务。
- USB 3.0/2.0接口:用于U盘、摄像头或调试设备。
- MicroSD卡槽:用于从SD卡启动系统,是开发阶段最常用的启动介质。
- 调试串口(UART):通过USB转串口芯片引出,用于查看启动日志和登录控制台。
- JTAG接口:用于底层调试和烧录。
在实际操作前,应先确认板卡版本、丝印标识与配套原理图,避免接口误接。尤其是摄像头排线的方向和电源跳线,接错可能损坏器件。
2.2 电源与启动模式配置
i.MX 95 EVK一般通过12V直流电源适配器供电,板上有电源指示灯和复位按键。上电前需要确认电源跳线处于正确位置,并检查是否有短路风险。
i.MX 95的启动模式由BOOT_MODE引脚和启动配置引脚共同决定。常见启动方式包括:
- SD卡启动:开发阶段最常用,便于反复烧写和替换系统镜像。
- eMMC启动:量产或固化系统时使用。
- 串行下载模式:用于通过USB将镜像烧录到板载存储。
启动模式通常通过拨码开关或跳线帽设置。以SD卡启动为例,需要将BOOT_MODE设置为内部启动,并将启动设备选择拨到SD卡对应位置。上电后,如果串口终端能看到U-Boot打印信息,说明启动模式配置正确。
2.3 Yocto/BSP构建
NXP为i.MX 95提供基于Yocto Project的BSP(Board Support Package)。Yocto通过配方(recipe)和层(layer)机制组织软件包,最终生成可直接烧录的镜像文件。构建流程大致如下:
- 安装依赖工具,如git、repo、gcc、make、python3等。
- 使用repo工具同步NXP官方BSP仓库,获取Yocto元数据。
- 执行环境初始化脚本,设置构建目录和配置文件。
- 选择目标机器(如imx95evk)和镜像类型(如core-image-minimal或fsl-image-qt5)。
- 运行bitbake命令开始构建,首次构建耗时较长,需保证网络和磁盘空间充足。
构建完成后,在tmp/deploy/images目录下会生成镜像文件,包括U-Boot、内核、设备树和根文件系统。使用dd命令或NXP提供的烧录工具将镜像写入SD卡,即可启动系统。
# 示例:同步BSP并初始化构建环境
repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
repo sync
DISTRO=fsl-imx-xwayland MACHINE=imx95evk source imx-setup-release.sh -b build-imx95
bitbake core-image-minimal
上述命令中的分支、版本号和镜像名称仅为示例,实际应以NXP官方发布的最新BSP文档为准。
2.4 交叉编译工具链
在x86主机上为ARM64架构的i.MX 95编译程序,需要使用交叉编译工具链。NXP BSP中已经集成了对应的工具链,也可以通过Yocto生成SDK,获得独立的交叉编译环境。
生成SDK的典型命令为:
bitbake core-image-minimal -c populate_sdk
生成的SDK安装脚本位于deploy/sdk目录下,执行安装后,通过source环境脚本即可使用aarch64-poky-linux-gcc等工具。交叉编译时需要注意:
- 指定目标架构为aarch64。
- 使用SDK中的sysroot,确保头文件和库与目标系统一致。
- 对于依赖OpenCV、TensorFlow Lite等库的程序,应先在Yocto中将这些库加入镜像或SDK。
2.5 串口与网络调试环境配置
串口是调试i.MX 95最基础也最可靠的手段。将板卡调试串口通过USB线连接到主机后,Linux下通常识别为/dev/ttyUSB0,Windows下识别为COM端口。使用minicom、picocom或PuTTY等工具,配置波特率115200、8位数据位、无校验、1位停止位,即可看到U-Boot和内核启动日志。
# Linux下使用picocom连接串口
sudo picocom -b 115200 /dev/ttyUSB0
网络调试方面,建议将板卡与主机接入同一交换机或路由器。板卡启动后,通过串口执行ifconfig或ip addr查看IP地址。若使用DHCP,板卡会自动获取IP;若需要静态IP,可修改/etc/network/interfaces或使用nmcli配置。
确认网络连通后,可通过SSH远程登录板卡,使用scp传输文件,或通过NFS挂载主机目录,方便快速迭代程序。对于边缘AI视觉应用,还可以在板卡上启动HTTP或gRPC服务,由主机端发送图像或请求,验证推理结果。