驱动源码编译
简介
发布包中提供了驱动源码包{soc version}-driver-{software version}-minios.aarch64-src.tar.gz,用户可自行根据需要进行驱动的定制或配置文件的修改。若用户对驱动源码包中的任何文件进行了定制修改,定制完成后,都需要参考本章节进行源码编译(如:已参考修改AI CPU和Ctrl CPU配比修改Ctrl CPU和AI CPU配比);若未对驱动源码包中的文件进行任何修改,则此章节可跳过。
源码编译依赖于HCC编译器,HCC编译器存在于toolkit安装包的toolchain目录下。
操作步骤
- 执行以下命令切换到root用户,后续操作都需要以root用户执行。
su - root
- 解压软件包获取中的驱动源码包{soc version}-driver-{software version}-minios.aarch64-src.tar.gz。
例如在/usr/local/software/目录下执行如下解压命令:
tar -zxvf {soc version}-driver-{software version}-minios.aarch64-src.tar.gz
若已执行过此操作,此步骤可跳过。
- 在解压后的/usr/local/software/driver下的source目录,安装相关依赖并进行源码编译。
- 安装依赖bison与flex。
例如当操作系统为CentOS/BClinux时,可使用如下命令进行安装:
yum install bison flex
例如当操作系统为Ubuntu时,可使用如下命令进行安装:
apt-get install bison flex
说明:请根据实际操作系统版本选择依赖的安装命令,如果执行编译驱动中的编译命令时提示缺少其他依赖,请根据提示自行安装。
- 进入驱动源码目录。
- 编译驱动。
make driver_device product=mini CROSS_COMPILE=${INSTALL_DIR}/toolkit/toolchain/hcc/bin/aarch64-target-linux-gnu- KERNEL_DIR=/usr/local/software/driver/source/kernel/linux-5.10 KERNEL_DEFCONFIG=/usr/local/software/driver/source/kernel/linux-5.10/arch/arm64/configs/mini_defconfig build_device=true
- CROSS_COMPILE:为HCC交叉编译器所在目录,需要配置为绝对路径,其中${INSTALL_DIR}为CANN软件安装后文件存储路径,请根据实际路径替换。
- KERNEL_DIR:驱动源码文件存储路径,需要配置为绝对路径,/usr/local/software/请更换为驱动源码包所在目录。
- KERNEL_DEFCONFIG:驱动源码配置文件存储路径,需要配置为绝对路径,/usr/local/software/请更换为驱动源码包所在目录。
- 其他请保持不变。
若进行源码编译时,一直循环提示类似如下信息:
请检查当前系统时间是否早于source/kernel/linux-5.10/scripts下的文件创建时间,若是,则请更改当前系统时间,然后重新进行编译操作。
命令执行成功后,会在source目录的out/device/文件夹下生成内核对象文件。
说明:
内核对象的源码都在driver/source/目录下。在driver/source/目录下通过grep -r xx.ko命令,通过对应的module.mk文件,找到源码所在的文件夹,示例如下:
则drv_pcie.ko对应的源码文件夹为drivers/ai_sdk/arc/linux/kernel_space/src/drv_pcie_device/pcie_slave。
- 安装依赖bison与flex。
- 替换文件系统中的相关内核对象文件。
拷贝编译生成的*.ko到解压后的文件系统的var目录下。
cd /usr/local/software/driver/source/out/device
cp -rf *.ko /usr/local/filesys_modify/tempdir/var/