1 环境搭建

可参考openUBMC环境搭建。首先,您需要准备一个Linux编译服务器

1.1 拉取源码

1.1.1 配置ssh公钥

ssh-keygen -t rsa -b 2048 -C 个人邮箱地址

不要输入,一路回车

cat ~/.ssh/id_rsa.pub

添加到gitcode上

1.1.2 拉取源码

git clone https://gitcode.com/openUBMC/devmon.git
git clone https://gitcode.com/openUBMC/component_drivers.git
git clone https://gitcode.com/openUBMC/libmcpp.git

1.2 编译构建

1.2.1 升级bingo工具

bingo upgrade

1.2.2 编译构建

在component_drivers根目录下执行,bingo会自动处理依赖拉取与编译

bingo build

1.3 运行测试

bingo test

打开另一个终端,登录到容器,设置环境变量

export DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus_test_Y2SmMZ/dbus.socket

查看资源协作路径

busctl --usr tree bmc.kepler.devmon
busctl --user introspect bmc.kepler.devmon /bmc/dev/Systems/1/PCIeNicCard/hisi_1822

2 场景一:新增一款同代次的网卡驱动

首先,您需要安装Visual Studio Code

2.1 编辑器准备

2.1.1 方式一:下载安装Remote-SSH插件(连接远程容器)

2.1.2 Remote-SSH登录容器

ssh root@192.168.0.144 -p 40906

(1)输入容器的root密码 (2)打开component_drivers工程目录

2.1.3 方式二:使用WSL(连接本机容器)

适用于容器运行在WSL环境的情况,无需SSH: (1)在Windows的WSL终端中启动docker容器并进入

docker start openubmc_hls
docker exec -it openubmc_hls /bin/bash

(2)编写并执行代码,直接访问/root/workspace下的工程目录 (3)在VSCode中全部重新加载,使用容器内已安装的工具进行开发调试

2.2 新增csr

同代次协议不需要变更,驱动复用现有的so,不需要修改,仅需要增加csr即可

2.2.1 拷贝一份同代次的网卡csr到csr目录

2.3 运行测试

(1)拉起devmon服务

meson test -C builddir -v --timeout=0

(2)加载csr配置:添加新的csr到devmon服务中

busctl --user call bmc.kepler.devmon /bmc/dev bmc.dev AddDevice sa{sv} “~/workspace/devmon/tests/tests_data/csr/14140130_19e50222_19e500a2.sr” 3 Position i 2 SystemId i 1 Slot i 2

(3)查看资源协作路径: 打开另一个终端,登录到容器,设置环境变量

export DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus_test_Y2SmMZ/dbus.socket

查看资源协作信息

busctl --usr tree bmc.kepler.devmon
busctl --user introspect bmc.kepler.devmon /bmc/dev/Systems/1/PCIeNicCard/SP670

3 场景二:新增一款跨代次的网卡驱动

跨代次协议可能需要变更,需要新增驱动so和csr

3.1 新增驱动

3.1.1 拷贝一份上代次的驱动

3.1.2 修改编译脚本

(1)在drivers/pcie_nic_card/hisi/meson.build的subdir()中增加hi185x (2)修改drivers/pcie_nic_card/hisi/hi185x/meson.build与实际源文件一致

3.1.3按需修改差异点

例如,需要单独修改bmc.dev.PCIeCard的Name字段,可以在start函数增加差异处理

3.2 新增csr

3.2.1 拷贝一份上代次的网卡csr到csr目录

Compatible需要修改为与drivers/pcie_nic_card/hisi/hi185x/meson.build中的配置一致

3.2.2按需修改差异点

例如,修改bmc.dev.PCIeDevice的DeviceName字段为“SP699”

3.3 运行测试

打开另一个终端,登录到容器,设置环境变量

export DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus_test_Y2SmMZ/dbus.socket

查看资源协作路径

busctl --usr tree bmc.kepler.devmon
busctl --user introspect bmc.kepler.devmon /bmc/dev/Systems/1/PCIeNicCard/SP699