1. 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 串口进入控制台。
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.2 | 0% 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、下发流表并验证硬件卸载效果。