(可选)驱动源码编译
简介
发布包中提供了驱动源码包{soc version}-driver-{software version}-minios.aarch64-src.tar.gz,用户可自行根据需要进行驱动的定制。定制完成后,可参考本章节进行源码编译。
源码编译依赖于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
若已执行过此操作,此步骤可跳过。
- 进入驱动源码包解压后的driver目录,例如/usr/local/software/driver。
- 进入/usr/local/software/driver下的source目录,安装相关依赖并进行源码编译。
- 安装依赖bison与flex。
yum install bison flex
或者
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-4.19 KERNEL_DEFCONFIG=/usr/local/software/driver/source/kernel/linux-4.19/arch/arm64/configs/mini_defconfig build_device=true
- CROSS_COMPILE:为HCC交叉编译器所在目录,其中${INSTALL_DIR}为CANN软件安装后文件存储路径,请根据实际路径替换。
- KERNEL_DIR与 KERNEL_DEFCONFIG:/usr/local/software/为驱动源码包所在目录。
- 其他请保持不变。
命令执行成功后,会在source目录的out/device/文件夹下生成如下表所示的内核对象文件。
表1 内核对象文件列表 内核对象
描述
ascend_event_sched.ko
事件调度,提供TS、DVPP等事件与AICPU间的调度。
drv_devdrv.ko
设备驱动模块,涉及驱动与TS模块交互,驱动将上层下发下来的计算任务传递给TS模块,由TS模块进行调度计算。
drv_devmm.ko
内存管理模块,设备侧的内存申请释放等功能的实现。
drv_devmng.ko
设备管理模块,提供获取设备信息、设置设备配置等管理类功能。
drv_dfm.ko
提供黑匣子异常注册功能,上报接口给其他内核调用。
drv_dvpp.ko
图像处理驱动,提供图像编解码能力。
drv_e2prom.ko
e2prom驱动模块,驱动上的e2prom。
drv_fan.ko
风扇驱动模块,驱动风扇功能。
drv_gmac.ko
物理网口驱动,提供网络连接功能。
drv_i2c.ko
I2C驱动模块,提供I2C通讯功能。
drv_log.ko
日志模块,提供日志采集功能,将日志传到host侧。
drv_mdio.ko
总线驱动,提供rgmii网口管理面。
drv_nor_flash.ko
flash驱动模块,驱动上的flash。
drv_pca6416.ko
GPIO扩展模块,提供GPIO扩展能力。
drv_pcie_hdc.ko
提供统一、高效的Host与Device通信功能。对外提供类似Socket的接口,如Send/Recv/Close等,内部利用DMA,实现快速的内存搬移。
drv_pcie.ko
提供PCIe通讯功能,设备PCIe初始化,执行镜像搬移流程,提供PCIe消息功能和DMA功能给其他模块使用。
drv_pcie_vnic.ko
提供虚拟网口功能,用户可通过标准ssh流程访问设备。
drv_platform.ko
平台模块。
drv_prof.ko
数据采集模块,提供数据采集通道。
drv_ts.ko
Task Schedule与AI CPU交互事件的mailbox通道和datadump通道。
drv_upgrade.ko
升级模块,提供升级内核态功能。
ipc_drv.ko
IPC通信模块,IPC消息发送接收等。
mntn_bbox.ko
提供黑匣子相关功能。
tee_drv.ko
可信执行环境驱动,提供可信校验相关功能,对启动文件进行安全校验。
说明:
以上内核对象的源码都在driver/source/目录下。在driver/source/目录下通过grep -r xx.ko命令,通过对应的module.mk文件,找到源码所在的文件夹,如下所示:
则drv_pcie_hdc.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/
异常处理
若进行源码编译时,一直循环提示类似如下信息:
请检查当前系统时间是否早于source/kernel/linux-4.19/scripts下的文件创建时间,若是,则请更改当前系统时间,然后重新进行编译操作。