1. Marvell DPU 开发环境搭建与固件烧录

Marvell DPU 开发环境搭建与固件烧录 学习卡片

环境搭建目标与硬件拓扑

本案例在实验主机(x86 服务器,Ubuntu 22.04)上完成三件事:安装 Marvell OCTEON DPU SDK 与工具链、通过 PCIe 将固件烧录到 DPU 的 eMMC/SPI、验证主机与 DPU 之间的基本通信。实验拓扑如下:主机通过 PCIe 插槽连接 DPU 卡,主机侧使用 lspci 识别设备,DPU 侧通过 RSHIM(Remote System Host Interface)或 UART 串口进入控制台。

Marvell DPU 开发环境硬件拓扑与固件烧录通路 实验主机 (x86 Host) Ubuntu 22.04 SDK / 驱动 / 工具链 lspci · rshim · mstflint PCIe Root Complex PCIe Gen4 x16 Marvell OCTEON DPU ARM64 多核 + 加速引擎 eMMC / SPI Flash RSHIM 控制通道 DPU 固件运行环境 UART 串口终端 115200 8N1 固件烧录与验证流程 1. 安装 SDK 依赖 + 工具链 2. 识别设备 lspci 确认 3. 烧录固件 rshim / mstflint 4. 验证通信 ping / ssh 就绪 ✓

SDK 与工具链安装

Marvell 提供两种获取方式:官方 SDK 安装包(.run 或 .deb)和源码编译。推荐使用官方安装包,避免依赖冲突。以下命令在 Ubuntu 22.04 上执行:

# 1. 安装基础依赖
sudo apt update
sudo apt install -y build-essential linux-headers-$(uname -r) \
    libusb-1.0-0-dev libpci-dev python3-pip git

# 2. 安装 Marvell DPU SDK(假设安装包已下载到 /opt)
cd /opt
sudo chmod +x marvell-dpu-sdk-*.run
sudo ./marvell-dpu-sdk-*.run --install

# 3. 加载内核驱动
sudo modprobe rshim
sudo modprobe mlx5_core   # 若使用兼容模式

# 4. 验证工具链
which mstflint rshim bfb-install
mstflint --version
若 rshim 模块加载失败,检查内核版本是否匹配 SDK 要求。Marvell DPU SDK 通常要求内核 5.15 或更高版本。

设备识别与固件烧录

安装完成后,用 lspci 确认 DPU 已被主机识别。Marvell OCTEON DPU 的 PCIe Vendor ID 通常为 177d(Cavium/Marvell)。

# 识别 DPU 设备
lspci -nn | grep -i marvell
# 预期输出示例:
# 01:00.0 Processing accelerators [1200]: Marvell Technology Group Ltd. Device [177d:a0f0]

# 查看 RSHIM 设备节点
ls /dev/rshim*
# 预期:/dev/rshim0

# 烧录固件(以 BFB 镜像为例)
sudo bfb-install -d /dev/rshim0 -b /opt/firmware/dpu-firmware.bfb

# 或使用 mstflint 烧录 SPI Flash
sudo mstflint -d 01:00.0 -i /opt/firmware/dpu-fw.bin burn
烧录过程中不要断电或重启主机。BFB 镜像烧录通常需要 3–8 分钟,期间 DPU 会多次重启。可通过 dmesg -w 观察进度。

基本通信验证

烧录完成后,DPU 会以 ARM64 Linux 系统启动。通过 RSHIM 网络接口或串口登录 DPU,验证主机与 DPU 的连通性。

# 主机侧:查看 RSHIM 网络接口
ip addr show rshim0
# 预期:rshim0 获得 192.168.100.1/24

# 主机侧:ping DPU 管理地址
ping -c 3 192.168.100.2
# 预期:3 packets transmitted, 3 received, 0% packet loss

# 通过 SSH 登录 DPU
ssh root@192.168.100.2
# 登录后确认 DPU 系统信息
uname -a
cat /etc/os-release
lspci | head
验证项命令通过条件
PCIe 识别lspci -nn | grep 177d输出包含 Marvell 设备
RSHIM 节点ls /dev/rshim0设备节点存在
固件版本cat /dev/rshim0/misc显示固件版本号
网络连通ping -c 3 192.168.100.20% packet loss
SSH 登录ssh root@192.168.100.2成功进入 DPU shell

常见问题与排查

  • lspci 无输出:检查 PCIe 插槽是否供电、BIOS 中是否启用 Above 4G Decoding 和 SR-IOV。
  • rshim 模块加载失败:确认内核头文件已安装,执行 sudo dkms status 查看驱动状态。
  • 烧录卡住:检查 BFB 镜像完整性(md5sum),确认 USB/PCIe 连接稳定。
  • ping 不通:确认主机 rshim0 接口已启用,DPU 侧防火墙未拦截 ICMP。
完成以上步骤后,实验主机与 DPU 之间的 PCIe 通道、RSHIM 控制通道和网络通道均已打通,后续案例可直接在 DPU 上部署 OVS、下发流表并验证硬件卸载效果。