3. 开发环境搭建:安装Linux开发环境(Ubuntu 22.04);配置交叉编译工具链;安装DPU SDK与文档;连接DPU开发板并验证
好,咱们正式开始动手了。
这一章,说白了就是给你的电脑和DPU开发板「牵线搭桥」。环境搭不好,后面全是白忙活。我见过太多新手卡在这一步,其实没那么玄乎,跟着我一步步来就行。
3.1 为什么选Ubuntu 22.04?
你可能会问:为什么非得用Linux?Windows不行吗?
嗯,我个人的习惯是——做嵌入式开发,尤其是DPU/SmartNIC这种底层硬件,Linux是绕不开的。DPU的SDK、交叉编译工具链,几乎都是为Linux量身定做的。你在Windows上折腾WSL,最后还是会发现原生Linux最省心。
Ubuntu 22.04 LTS,是目前最稳的选择。我去年给一个客户搭环境,试了20.04和22.04,最后还是22.04的驱动兼容性最好。说白了,选它,就是选省事。
核心要求:
- Ubuntu 22.04 LTS(64位)
- 至少预留50GB磁盘空间(SDK+工具链+项目文件)
- 内存建议16GB以上(编译DPU固件时很吃内存)
3.2 安装Ubuntu 22.04
这一步我就不啰嗦了,网上教程一大堆。我只说几个关键点:
- 双系统还是虚拟机? 我个人建议直接装双系统。虚拟机做DPU开发,USB透传和PCIe直通会出各种幺蛾子。我曾经在VMware上折腾了三天,最后发现是虚拟化层把DPU的DMA请求给过滤了……
- 分区怎么搞? 至少分三个区:
/(根目录)30GB,/home20GB,swap跟内存一样大。如果你要存大量数据集,/home可以再大点。 - 安装时断网。 嗯,这个技巧是我踩坑换来的。联网安装会下载更新,慢得要死,还容易中途失败。断网装完,再换国内源更新,快得多。
3.3 配置交叉编译工具链
交叉编译,说白了就是「在PC上编译,在DPU上运行」。为什么?因为DPU的CPU架构通常是ARM,而你的PC是x86。你不能直接在DPU上跑gcc,那太慢了。
我习惯用 aarch64-linux-gnu- 这套工具链。安装很简单:
sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
装完后验证一下:
aarch64-linux-gnu-gcc --version
如果看到版本号,说明成了。
小技巧: 你可以写个简单的hello.c,用交叉编译器编译,然后丢到DPU上跑。如果跑通了,说明工具链没问题。我每次搭新环境都这么干,省得后面出问题到处找原因。
3.4 安装DPU SDK与文档
SDK是DPU的灵魂。不同厂商的SDK不一样,但套路差不多。我这里以最常见的NVIDIA BlueField系列为例(其他厂商类似)。
下载SDK包(通常是一个 .deb 或 .tar.gz):
wget https://example.com/dpu-sdk-22.10.tar.gz
tar -xzf dpu-sdk-22.10.tar.gz
cd dpu-sdk-22.10
sudo ./install.sh
安装过程中,脚本会自动配置环境变量。你可以在 ~/.bashrc 里看到类似这样的内容:
export DPU_SDK_PATH=/opt/dpu-sdk
export PATH=$PATH:$DPU_SDK_PATH/bin
记得 source ~/.bashrc 让它生效。
文档呢?我建议你把SDK自带的 docs/ 目录整个拷贝到本地。别指望每次查东西都去官网翻,离线文档才是真香。我曾经在客户现场没网,全靠本地文档救场。
注意: SDK版本一定要跟DPU开发板的固件版本匹配。不匹配的话,轻则API调用失败,重则DPU直接不认你的程序。我见过有人拿SDK 21.10去连固件22.04的板子,折腾了两天……
3.5 连接DPU开发板并验证
终于到了最激动人心的一步——把板子连上电脑。
连接方式通常有两种:
- USB转串口:用于查看启动日志、进入uboot
- 以太网:用于SSH登录、传输文件、远程调试
我一般先接串口线,确认板子能正常启动。用 screen 或 minicom 连上去:
sudo screen /dev/ttyUSB0 115200
上电后,你会看到一串启动日志。如果看到 login: 提示,说明板子活了。
然后配置网络。给板子设一个静态IP(比如 192.168.1.100),你的电脑设成同网段(比如 192.168.1.10)。用网线直连,或者通过交换机。
验证网络连通:
ping 192.168.1.100
通了之后,SSH登录:
ssh root@192.168.1.100
默认密码一般是 root 或 admin,具体看厂商文档。
最终验证: 在DPU上跑一个你之前交叉编译好的hello程序。如果输出正常,恭喜你——环境搭建成功!
3.6 本章知识体系一览
下面这张图,帮你把整个流程串起来。别嫌简单,环境搭建就是「搭桥」——桥搭好了,后面才能跑车。
3.7 避坑指南
最后,分享几个我亲身踩过的坑:
- 「板子连不上」:我曾经折腾了一下午,最后发现是串口线是坏的。换一根线就好了。所以,先怀疑硬件。
- 「交叉编译的程序跑不起来」:大概率是动态链接库版本不对。用
file命令看看可执行文件的架构,再用ldd检查依赖。我习惯静态编译,省心。 - 「SDK安装报错」:先看日志。SDK安装脚本一般会写日志到
/tmp/或/var/log/。别瞎猜,看日志是最快的。
嗯,环境搭建就这些。别怕麻烦,这一步稳了,后面就顺了。