3. 安装libsophon
libsophon在不同的Linux发行版上提供不同类型的安装方式。请根据您的系统选择对应的方式,不要在一台机器上混用多种安装方式。 以下描述中“0.4.8”仅为示例,视当前实际安装版本会有变化。
请先卸载旧的BM1684 SDK的驱动:
进入SDK的安装目录,执行:
sudo ./remove_driver_pcie.sh
或者:
sudo rmmod bmsophon
sudo rm -f /lib/modules/$(uname -r)/kernel/drivers/pci/bmsophon.ko
如果使用Debian/Ubuntu系统:
安装包由三个文件构成,其中“$arch”为当前机器的硬件架构,使用以下命令可以获取当前服务器的arch:
uname -m
- 通常x86_64机器对应的硬件架构为amd64,arm64机器对应的硬件架构为arm64:
sophon-driver_0.4.8_$arch.deb
sophon-libsophon_0.4.8_$arch.deb
sophon-libsophon-dev_0.4.8_$arch.deb
其中:sophon-driver包含了PCIe加速卡驱动;sophon-libsophon包含了运行时环境(库文件、工具等);sophon-libsophon-dev包含了开发环境(头文件等)。 如果只是在部署环境上安装,则不需要安装sophon-libsophon-dev。
可以通过如下步骤安装:
安装依赖库,只需要执行一次:
sudo apt install dkms libncurses5
安装libsophon:
sudo dpkg -i sophon-*.deb
在终端执行如下命令,或者登出再登入当前用户后即可使用bm-smi等命令:
source /etc/profile
安装位置为:
/opt/sophon/ ├── driver-0.4.8 ├── libsophon-0.4.8 │ ├── bin │ ├── data │ ├── include │ └── lib └── libsophon-current -> /opt/sophon/libsophon-0.4.8
deb包安装方式并不允许您安装同一个包的多个不同版本,但您可能用其它方式在/opt/sophon下放置了若干不同版本。 在使用deb包安装时,/opt/sophon/libsophon-current会指向最后安装的那个版本。在卸载后,它会指向余下的最新版本(如果有的话)。
在使用deb包安装时,如果出现了下面的提示信息
modprobe: FATAL: Module bmsophon is in use.
需要您手动停止正在使用驱动的程序后,手动执行下面的命令来安装新的deb包里的驱动。
sudo modprobe -r bmsophon
sudo modprobe bmsophon
卸载方式:
注意:如果安装了sophon-mw及sophon-rpc,因为它们对libsophon有依赖关系,请先卸载它们。
sudo apt remove sophon-driver sophon-libsophon
或者:
sudo dpkg -r sophon-driver
sudo dpkg -r sophon-libsophon-dev
sudo dpkg -r sophon-libsophon
如果卸载时遇到问题,可以尝试如下方法:
手工卸载驱动: dkms status 检查输出结果,通常如下: bmsophon, 0.4.8, 5.15.0-41-generic, x86_64: installed 记下前两个字段,套用到如下命令中: sudo dkms remove -m bmsophon -v 0.4.8 --all 然后再次卸载驱动: sudo apt remove sophon-driver sudo dpkg --purge sophon-driver 彻底清除libsophon: sudo apt purge sophon-libsophon
如果使用Centos系统, 当前版本仅支持x86_64:
安装包由三个文件构成,其中“$arch”为当前机器的硬件架构,使用以下命令可以获取当前服务器的arch:
uname -m
- x86_64机器对应的安装包名称为:
sophon-driver-0.4.8-1.$arch.rpm
sophon-libsophon-0.4.8-1.$arch.rpm
sophon-libsophon-dev-0.4.8-1.$arch.rpm
安装前需要通过后面“卸载方式”中的步骤卸载旧版本libsophon,可以通过如下步骤安装:
安装依赖库,只需要执行一次: sudo yum install -y epel-release sudo yum install -y dkms sudo yum install -y ncurses* 安装libsophon: sudo rpm -ivh sophon-driver-0.4.8-1.x86_64.rpm sudo rpm -ivh sophon-libsophon-0.4.8-1.x86_64.rpm sudo rpm -ivh --force sophon-libsophon-dev-0.4.8-1.x86_64.rpm 在终端执行如下命令,或者登出再登入当前用户后即可使用bm-smi等命令: source /etc/profile
卸载方式:
sudo rpm -e sophon-driver
sudo rpm -e sophon-libsophon-dev
sudo rpm -e sophon-libsophon
如果使用其它Linux系统:
安装包由一个文件构成,其中“$arch”为当前机器的硬件架构,使用以下命令可以获取当前服务器的arch:
uname -m
- 通常x86_64机器对应的硬件架构为x86_64,arm64机器对应的硬件架构为aarch64:
libsophon_0.4.8_$arch.tar.gz
可以通过如下步骤安装:
注意:如果有旧版本,先参考下面的卸载方式步骤卸载旧版本。
tar -xzvf libsophon_0.4.8_$arch.tar.gz sudo cp -r libsophon_0.4.8_$arch/* / sudo ln -s /opt/sophon/libsophon-0.4.8 /opt/sophon/libsophon-current
接下来请先按照您所使用Linux发行版的要求搭建驱动编译环境,然后做如下操作:
sudo ln -s /opt/sophon/driver-0.4.8/$bin /lib/firmware/bm1684x_firmware.bin sudo ln -s /opt/sophon/driver-0.4.8/$bin /lib/firmware/bm1684_ddr_firmware.bin sudo ln -s /opt/sophon/driver-0.4.8/$bin /lib/firmware/bm1684_tcm_firmware.bin cd /opt/sophon/driver-0.4.8
此处“$bin”是bin文件全名, 对于bm1684x板卡,为a53lite_pkg.bin, 对于bm1684板卡,如bm1684_ddr.bin_v3.1.2-3dfbe057-221128和bm1684_tcm.bin_v3.1.2-3dfbe057-221128。
之后就可以编译驱动了(这里不依赖于dkms):
sudo make SOC_MODE=0 PLATFORM=asic SYNC_API_INT_MODE=1 \
TARGET_PROJECT=sg_pcie_device FW_SIMPLE=0 \
PCIE_MODE_ENABLE_CPU=1
sudo cp ./bmsophon.ko /lib/modules/$(uname -r)/kernel/
sudo depmod
sudo modprobe bmsophon
最后是一些配置工作:
添加库和可执行文件路径:
sudo cp /opt/sophon/libsophon-current/data/libsophon.conf /etc/ld.so.conf.d/
sudo ldconfig
sudo cp /opt/sophon/libsophon-current/data/libsophon-bin-path.sh /etc/profile.d/
在终端执行如下命令,或者登出再登入当前用户后即可使用bm-smi等命令:
source /etc/profile
添加cmake config文件:
sudo mkdir -p /usr/lib/cmake/libsophon
sudo cp /opt/sophon/libsophon-current/data/libsophon-config.cmake /usr/lib/cmake/libsophon/
卸载方式:
sudo rm -f /etc/ld.so.conf.d/libsophon.conf sudo ldconfig sudo rm -f /etc/profile.d/libsophon-bin-path.sh sudo rm -rf /usr/lib/cmake/libsophon sudo rmmod bmsophon sudo rm -f /lib/modules/$(uname -r)/kernel/bmsophon.ko sudo depmod sudo rm -f /lib/firmware/bm1684x_firmware.bin sudo rm -f /lib/firmware/bm1684_ddr_firmware.bin sudo rm -f /lib/firmware/bm1684_tcm_firmware.bin sudo rm -f /opt/sophon/libsophon-current sudo rm -rf /opt/sophon/libsophon-0.4.8 sudo rm -rf /opt/sophon/driver-0.4.8