4. Kria Starter Kit与KV260实战入门

KV260视觉AI入门套件(Kria KV260 Vision AI Starter Kit)是一块面向边缘视觉应用的开发板,核心是K26 SOM(System-on-Module),底板提供MIPI摄像头、DisplayPort、千兆以太网、USB、microSD以及40针Raspberry Pi兼容扩展口。拿到套件后,第一件事不是急着跑AI例程,而是把“板子能启动、能联网、能显示、能更新固件、能跑Hello World、能点灯”这条最小闭环走通。这条链路一旦打通,后面部署DPU、跑Vitis AI模型才有稳定基础。

开箱清单与上电前检查

标准套件包含:KV260底板、K26 SOM(已插在底板上)、12V/3A电源适配器、microSD卡(部分批次预装Ubuntu镜像)、USB Type-C数据线、散热片与风扇。上电前需要确认三件事:SOM与底板的连接器完全压紧、散热片已安装、启动模式拨码开关(SW1)位置正确。KV260的启动模式由SW1的4位拨码决定,常见模式如下:

模式SW1[1:4]启动介质典型用途
QSPI32ON OFF OFF OFF板载QSPI Flash出厂固件、Boot Firmware更新
SD1_LSHFTOFF ON OFF OFFmicroSD(SD1)Ubuntu / PetaLinux启动
JTAGOFF OFF OFF ONJTAG裸机调试、恢复

注意拨码方向以板上丝印“ON”为准,不同批次丝印位置略有差异,务必对照底板丝印确认。首次上电建议先用QSPI模式,确认出厂固件能正常启动,再切到SD模式安装Ubuntu。

启动模式与串口控制台

KV260的调试串口通过USB Type-C(J4,UART)输出,波特率115200,8N1,无流控。用USB线连接PC后,Linux下通常识别为/dev/ttyUSB0,Windows下为COMx。使用minicom或PuTTY连接后,上电即可看到U-Boot与内核日志。若串口无输出,先检查拨码是否在QSPI或SD模式、USB线是否插在UART口而非JTAG口、以及PC端串口驱动是否安装。

启动过程大致分为三段:BootROM从所选介质加载Boot Firmware(包含PLM、PMU Firmware、TF-A、U-Boot),U-Boot加载内核与设备树,内核挂载根文件系统并启动用户空间。观察串口日志中“Boot mode: QSPI32”或“SD1_LSHFT”字样,即可确认当前实际启动介质。

网络与显示接口

KV260底板有一个千兆以太网口(PS GEM3),Ubuntu镜像默认通过DHCP获取地址。登录后执行ip addr show eth0可查看IP。若需要固定IP,可编辑/etc/netplan/下的YAML文件,例如:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.50/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]

执行sudo netplan apply生效。显示方面,底板提供DisplayPort输出,Ubuntu桌面镜像默认输出到DP。若接HDMI显示器,需要DP转HDMI主动式转接头,被动线缆通常无输出。串口登录后可用xrandr查看当前显示模式,确认分辨率与刷新率。

预装固件更新

Kria SOM的Boot Firmware存放在QSPI Flash中,出厂版本可能较旧。更新方式有两种:一是通过Ubuntu下的xmutil工具,二是通过Xilinx提供的Boot Firmware更新镜像。推荐在Ubuntu中执行:

sudo xmutil bootfw_update -i k26-starter-kits-bootfw-vX.X.bin
sudo xmutil bootfw_status

更新完成后需断电重启,再次用bootfw_status确认版本号。注意:更新过程中不可断电,否则QSPI可能损坏,需要用JTAG恢复。若不确定当前版本,可先执行sudo xmutil bootfw_status查看。

第一个Hello World与GPIO控制实验

Ubuntu启动后,先用最简方式验证开发环境。创建hello.c:

#include <stdio.h>
int main(void){
    printf("Hello KV260!\n");
    return 0;
}

执行gcc hello.c -o hello && ./hello,看到“Hello KV260!”即表示编译链正常。接下来做GPIO控制。KV260的40针扩展口(J2)兼容Raspberry Pi引脚定义,其中GPIO可通过sysfs或libgpiod操作。以sysfs为例,先导出引脚:

echo 320 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio320/direction
echo 1 > /sys/class/gpio/gpio320/value
echo 0 > /sys/class/gpio/gpio320/value

这里320是示例编号,实际编号需根据设备树中GPIO控制器基址与引脚偏移计算。更推荐使用gpiod工具:gpiodetect列出控制器,gpioinfo查看引脚,gpioset设置电平。若在J2的物理引脚12(GPIO)接LED与限流电阻,执行gpioset 0 12=1可点亮,gpioset 0 12=0熄灭。观察LED亮灭即可判断GPIO通路是否正常。

KV260 最小启动与验证链路 启动介质 QSPI Flash / microSD SW1拨码选择 Boot Firmware PLM / PMU / TF-A U-Boot Linux内核 设备树 + 根文件系统 Ubuntu / PetaLinux 用户空间 串口/SSH Hello World 网络验证 ip addr show eth0 DHCP获取IP / netplan静态 ping 网关确认连通 显示验证 DisplayPort输出 xrandr查看模式 DP转HDMI需主动式 GPIO验证 gpiodetect / gpioinfo gpioset 0 12=1 J2引脚12 LED亮灭 预装固件更新(QSPI) sudo xmutil bootfw_update -i k26-starter-kits-bootfw-vX.X.bin sudo xmutil bootfw_status → 断电重启后确认版本

整个流程走完后,建议记录一份最小验证清单:串口能登录、ip addr有地址、DP有显示、bootfw_status版本正确、./hello输出正常、gpioset能控制LED。这六项全部通过,说明KV260的基础环境已经可用,可以进入后续的DPU部署与Vitis AI例程。若其中某项失败,优先回到对应环节排查:串口无输出查拨码与线缆,网络不通查网线与netplan,GPIO无反应查引脚编号与电平定义。