2. Kria硬件平台与开发环境搭建

Kria SOM(System-on-Module)是AMD面向边缘AI与嵌入式视觉推出的核心板形态,它把Zynq UltraScale+ MPSoC、DDR4内存、eMMC、QSPI Flash、电源管理、时钟与以太网PHY等关键资源集成在一块邮票孔/连接器模块上,再通过载板(Carrier Card)扩展出具体的外设接口。理解KV260与KR260的差异,是后续部署Vitis AI模型、加载DPU固件、选择启动介质与配置开发主机的前提。

KV260与KR260:定位与资源差异

KV260(Kria Vision AI Starter Kit)面向视觉AI入门与原型验证,核心器件通常为K26 SOM,搭载Zynq UltraScale+ MPSoC,包含四核ARM Cortex-A53应用处理器、双核Cortex-R5实时处理器、Mali-400 GPU以及可编程逻辑(PL)。其载板提供HDMI输入/输出、MIPI CSI摄像头接口、千兆以太网、USB 3.0、microSD、DisplayPort等,适合智能相机、视频分析、缺陷检测等场景。KR260(Kria Robotics Starter Kit)则面向机器人与工业控制,核心为K26 SOM,载板强调实时工业以太网(如EtherCAT、PROFINET)、CAN、RS-485、Pmod、Raspberry Pi兼容接口以及多路GPIO,更适合运动控制、传感器融合与低延迟闭环控制。

两者共享同一SOM架构,因此DPU固件、Vitis AI运行时、PetaLinux BSP在软件层面高度相通;差异主要体现在载板外设、默认设备树与参考设计上。选择平台时,若任务以视频流推理为主,优先KV260;若需要实时总线与多轴控制,优先KR260。

Kria SOM 架构与载板接口对比 K26 SOM 核心 Zynq UltraScale+ MPSoC 4×Cortex-A53 + 2×Cortex-R5 Mali-400 GPU + PL 可编程逻辑 DDR4 / eMMC / QSPI / PMIC DPU 可编程逻辑加速器 KV260 视觉AI载板 HDMI 输入 / 输出 MIPI CSI 摄像头接口 千兆以太网 / USB 3.0 microSD / DisplayPort Pmod / 40-pin 扩展 典型场景:智能相机、视频分析 缺陷检测、行为识别 启动介质:microSD / QSPI / eMMC KR260 机器人载板 EtherCAT / PROFINET 工业以太网 CAN / RS-485 现场总线 多路 GPIO / Pmod / RPi 接口 千兆以太网 / USB 3.0 microSD / DisplayPort 典型场景:运动控制、传感器融合 低延迟闭环、机器人视觉 启动介质:microSD / QSPI / eMMC

启动方式:Ubuntu与PetaLinux的选择

Kria SOM支持从microSD、QSPI Flash或eMMC启动。开发阶段最常用的是microSD启动,因为它便于反复烧写与替换镜像。AMD官方为Kria提供两类主流镜像:Ubuntu桌面/服务器镜像与PetaLinux BSP镜像。Ubuntu镜像适合快速验证Vitis AI运行时、Python推理脚本与DPU固件加载;PetaLinux则更适合需要深度定制设备树、裁剪根文件系统或集成自定义PL逻辑的工程。

以KV260为例,制作启动卡的典型流程是:从AMD官网下载对应版本的Ubuntu镜像(如22.04 LTS for Kria),使用Balena Etcher或dd写入microSD;将卡插入SOM,连接USB-UART(通常为/dev/ttyUSB0或/dev/ttyUSB1,波特率115200)、网线与电源;上电后通过串口或HDMI观察启动日志。首次启动会自动扩展根分区并重启,随后可用默认账号ubuntu登录。若使用PetaLinux,则需先安装PetaLinux工具链,通过petalinux-config --get-hw-description导入XSA,再petalinux-build生成BOOT.BIN与image.ub,最后打包为WIC镜像写入SD卡。

串口连接建议使用picocom -b 115200 /dev/ttyUSB0或minicom;若无法看到启动日志,先确认USB-UART驱动与端口号,再检查电源指示灯与SD卡是否插紧。

Vitis AI运行时与DPU固件加载

Vitis AI运行时(VART)是主机与DPU之间的软件桥梁,负责模型加载、张量调度与硬件加速调用。在Kria上,DPU以PL中的IP核形式存在,需要对应的DPU固件(.xclbin或.bit+.hwh)与设备树覆盖(dtbo)配合。典型安装步骤包括:更新APT源,安装vitis-ai-runtime与xrt相关包;将DPU固件与shell.json放入/lib/firmware/xilinx/目录;使用xmutil listapps查看可用加速器,xmutil loadapp kv260-dpu-benchmark加载对应固件。加载成功后,/dev/dri/renderD128等设备节点会出现,xrt信息中可看到DPU IP。

sudo apt update
sudo apt install -y vitis-ai-runtime xrt
sudo xmutil listapps
sudo xmutil loadapp kv260-dpu-benchmark
xrt-smi examine

若xmutil loadapp报错,常见原因是固件版本与BSP不匹配、dtbo未正确放置或PL时钟未使能。此时应核对/lib/firmware/xilinx/下的目录结构,确认shell.json中device与platform字段与当前SOM一致,并检查dmesg中是否有fpga_manager或zynqmp-fpga相关错误。

开发主机环境配置

开发主机通常使用Ubuntu 20.04/22.04,需安装Vitis AI Docker镜像或本地工具链。推荐使用Docker方式,避免依赖冲突。主机侧需要:安装Docker与nvidia-container-toolkit(若使用GPU加速量化);拉取xilinx/vitis-ai-pytorch或xilinx/vitis-ai-tensorflow2镜像;将模型、校准数据集与脚本挂载到容器内;使用vai_q_pytorch或vai_q_tensorflow2完成量化,再用vai_c_xir编译为DPU可执行的.xmodel。主机与Kria之间通过SSH或SCP传输.xmodel与测试图片,在Kria上运行python3 resnet50.py等示例验证推理结果。

网络配置方面,建议将Kria与主机置于同一网段,Kria默认通过DHCP获取IP,可用ip a查看;若需固定IP,可修改/etc/netplan/下的YAML文件并执行sudo netplan apply。主机侧可用ssh ubuntu@<kria-ip>登录,默认密码为ubuntu,首次登录会强制修改。

DPU固件与Vitis AI运行时版本必须匹配。例如Vitis AI 3.0运行时通常对应DPU-P2/P3固件,混用可能导致xrt初始化失败或推理结果异常。升级前先备份原固件目录。

环境验证与常见问题

完成上述步骤后,可通过以下方式确认环境就绪:串口能正常登录;xmutil listapps列出DPU应用;xrt-smi examine显示DPU设备;运行Vitis AI示例(如resnet50)能输出分类结果与推理耗时。若推理耗时明显偏高,检查DPU时钟频率与PL供电;若模型加载失败,检查.xmodel是否由匹配版本的vai_c_xir编译生成。

整体而言,Kria平台的环境搭建可以概括为“选镜像—写启动卡—配串口与网络—装VART—载DPU固件—主机量化编译—传输验证”这一条主线。KV260与KR260在SOM层面一致,差异集中在载板外设与参考设计,因此掌握其中一款后,迁移到另一款主要工作是替换BSP与设备树覆盖,并重新确认接口映射。