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.git1.2 编译构建
1.2.1 升级bingo工具
bingo upgrade1.2.2 编译构建
在component_drivers根目录下执行,bingo会自动处理依赖拉取与编译
bingo build1.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_18222 场景一:新增一款同代次的网卡驱动
首先,您需要安装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/SP6703 场景二:新增一款跨代次的网卡驱动
跨代次协议可能需要变更,需要新增驱动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