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] | 启动介质 | 典型用途 |
|---|---|---|---|
| QSPI32 | ON OFF OFF OFF | 板载QSPI Flash | 出厂固件、Boot Firmware更新 |
| SD1_LSHFT | OFF ON OFF OFF | microSD(SD1) | Ubuntu / PetaLinux启动 |
| JTAG | OFF OFF OFF ON | JTAG | 裸机调试、恢复 |
注意拨码方向以板上丝印“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通路是否正常。
整个流程走完后,建议记录一份最小验证清单:串口能登录、ip addr有地址、DP有显示、bootfw_status版本正确、./hello输出正常、gpioset能控制LED。这六项全部通过,说明KV260的基础环境已经可用,可以进入后续的DPU部署与Vitis AI例程。若其中某项失败,优先回到对应环节排查:串口无输出查拨码与线缆,网络不通查网线与netplan,GPIO无反应查引脚编号与电平定义。