2. Kria开发环境搭建

Kria KV260/KR260 的开发与传统 FPGA 开发最大的区别在于:它是一块运行 Ubuntu 的嵌入式 Linux 边缘计算平台,因此开发环境天然分为“主机侧”和“板卡侧”两部分。主机侧负责运行 Vivado/Vitis 完成 PL 逻辑与加速器 IP 的编译,板卡侧负责运行 PetaLinux 生成的启动镜像与 Ubuntu 根文件系统。本节按“主机环境 → 工具链 → PetaLinux SDK → 板卡首次启动 → 网络与远程访问”的顺序,把这条链路完整走通。

一、Ubuntu 主机环境配置

AMD 官方推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS 作为主机系统,内存建议 32 GB 以上,磁盘预留 200 GB 以上(Vivado 单版本安装即占用约 60 GB)。首先安装基础依赖:

sudo apt update
sudo apt install -y build-essential git curl wget \
  libncurses5-dev libncursesw5-dev libssl-dev flex bison \
  libgtk2.0-0 libgtk-3-0 libtinfo5 libcanberra-gtk-module \
  python3 python3-pip python3-venv device-tree-compiler \
  u-boot-tools dos2unix net-tools openssh-server

# 将默认 shell 指向 bash(PetaLinux 对 dash 兼容性差)
sudo dpkg-reconfigure dash   # 选择 No

随后配置串口访问权限。KV260 通过 USB-UART 桥接芯片暴露 4 个串口,普通用户默认无权访问,需要把自己加入 dialout 组:

sudo usermod -aG dialout $USER
# 重新登录后生效,验证:
ls -l /dev/ttyUSB*

若使用 USB 转串口模块连接板载 40-pin 排针的 UART,还需确认 FTDI 驱动已加载。主机时间同步也很关键,Vivado 许可证校验对时间偏差敏感,建议启用 NTP:sudo timedatectl set-ntp true。

二、Vitis/Vivado 工具链安装

KV260 的 PL 侧开发使用 Vivado 2022.1 或更新版本(2022.2 起对 Kria 支持更完善)。从 AMD 官网下载 Xilinx_Unified_2022.2_1014_8888_Lin64.bin 统一安装器,赋予执行权限后运行:

chmod +x Xilinx_Unified_2022.2_1014_8888_Lin64.bin
./Xilinx_Unified_2022.2_1014_8888_Lin64.bin

安装向导中选择 Vitis 作为主产品,勾选 Vivado、Vitis HLS、Model Composer,并在器件选择页勾选 Zynq UltraScale+ MPSoC 系列(KV260 的器件型号为 xck26-sfvc784-2LV-c)。安装路径建议保持默认 /tools/Xilinx,避免路径含空格或中文。安装完成后设置环境变量:

source /tools/Xilinx/Vitis/2022.2/settings64.sh
source /tools/Xilinx/Vivado/2022.2/settings64.sh
# 建议写入 ~/.bashrc 以便每次登录自动加载

验证安装:vivado -version 应输出 Vivado v2022.2,vitis -version 同理。若提示 license 错误,需在 ~/.Xilinx/ 下放置有效的 Xilinx.lic,或通过 vlm 工具加载。

三、Kria PetaLinux SDK 部署

PetaLinux 用于生成 BOOT.BIN、Image、设备树与根文件系统。安装 PetaLinux 2022.2 需要先安装其依赖:

sudo apt install -y tofrodos iproute2 gawk gcc g++ make \
  libsdl1.2-dev xterm zlib1g-dev libssl-dev libncurses5-dev \
  autoconf libtool texinfo gcc-multilib libglib2.0-dev \
  libglib2.0-dev-bin libxml2-utils

# 安装 PetaLinux
./petalinux-v2022.2-10141622-installer.run --dir /opt/petalinux/2022.2
source /opt/petalinux/2022.2/settings.sh
echo $PETALINUX   # 应输出 /opt/petalinux/2022.2

Kria 的 BSP 与通用 Zynq 不同,官方提供 xilinx-kv260-starterkit-v2022.2-1014.bsp。创建工程:

petalinux-create -t project -s xilinx-kv260-starterkit-v2022.2-1014.bsp -n kv260_sdk
cd kv260_sdk
petalinux-config --get-hw-description=./   # 使用 BSP 自带硬件描述
petalinux-build
petalinux-package --boot --u-boot --force

构建完成后,images/linux/ 下会生成 BOOT.BIN、image.ub、boot.scr。若需自定义 PL 逻辑,则先用 Vivado 导出 .xsa,再执行 petalinux-config --get-hw-description=<xsa路径> 重新配置。

四、KV260/KR260 首次启动

首次启动需要一张 16 GB 以上的 microSD 卡。将卡插入主机,用 lsblk 确认设备名(如 /dev/sdb),然后写入官方 Ubuntu 镜像:

xz -dk ubuntu-22.04-desktop-kv260-2022.2.img.xz
sudo dd if=ubuntu-22.04-desktop-kv260-2022.2.img of=/dev/sdb bs=4M status=progress
sync

将 SD 卡插入板卡,连接 12 V 电源、USB-UART 与网线,拨动启动模式开关至 SD 启动(KV260 上为 SW1 的 1-ON、2-OFF)。打开串口终端:

sudo picocom -b 115200 /dev/ttyUSB1
# 退出:Ctrl+A 然后 Ctrl+X

上电后串口会依次打印 FSBL、U-Boot、Kernel 日志。首次启动约需 2–3 分钟,最终出现 kv260 login:。默认用户名/密码为 ubuntu/ubuntu,首次登录会强制修改密码。若串口无输出,优先检查启动模式开关、SD 卡是否插紧、电源是否达到 12 V/3 A。

Kria 开发环境搭建链路 Ubuntu 主机侧 Ubuntu 20.04/22.04 32GB RAM / 200GB 磁盘 依赖包 + dialout 组 串口权限 / NTP 同步 Vivado 2022.2 PL 逻辑综合/实现 Vitis 2022.2 加速器 IP / 应用编译 PetaLinux SDK 2022.2 petalinux-create / -config / -build / -package 输出:BOOT.BIN · image.ub · boot.scr KV260 / KR260 板卡侧 microSD 镜像写入 dd + sync 启动模式开关 SW1: 1-ON 2-OFF 串口 115200 /dev/ttyUSB1 首次启动 ubuntu/ubuntu 网络与远程访问 以太网 DHCP / 静态 IP · SSH · VNC · Jupyter kria-apps / xmutil 加载加速器 镜像 BOOT.BIN .xsa 启动日志关键节点(串口观察) FSBL U-Boot Kernel systemd login 提示符 SSH 可登录 判断依据:串口出现 login 提示符且主机能 ping 通板卡 IP,即视为环境搭建完成。

五、网络配置与远程访问

板卡启动后,默认通过 DHCP 获取 IP。在串口终端执行 ip addr show eth0 查看地址。若需固定 IP(工业现场常用),编辑 Netplan 配置:

sudo nano /etc/netplan/50-cloud-init.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, 114.114.114.114]

sudo netplan apply

随后在主机上验证连通性并建立远程访问:

ping 192.168.1.50
ssh ubuntu@192.168.1.50
# 传输文件
scp firmware.bin ubuntu@192.168.1.50:/home/ubuntu/

若需图形化调试,可在板卡上启用 VNC:sudo apt install tigervnc-standalone-server,启动 vncserver :1 -geometry 1920x1080,主机用 VNC Viewer 连接 192.168.1.50:5901。对于机器视觉应用,更常用的是 Jupyter Lab:Kria 官方镜像已预装,访问 http://192.168.1.50:8888 即可在浏览器中运行 Python 视觉推理脚本。

KV260 的 40-pin 排针与 Raspberry Pi 兼容,但 UART 电平为 3.3 V,切勿直接接 5 V 串口模块,否则可能损坏 SoC。

六、加速器加载与验证

Kria 的独特之处在于用 xmutil 动态加载 PL 加速器。以官方 Kria-PYNQ 为例:

sudo apt install xmutil
sudo xmutil listapps          # 列出可用加速器
sudo xmutil loadapp kria-pynq # 加载 PYNQ 加速器
sudo xmutil unloadapp         # 卸载

加载成功后,/dev/ 下会出现对应设备节点,Jupyter 中即可 import pynq 并调用 pynq.Overlay。至此,主机编译、SDK 构建、板卡启动、网络远程、加速器加载五步全部打通,可以进入后续的视觉算法开发环节。