编译并生效新增用户驱动
前提条件
- 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
- Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake、rpm2cpio与交叉编译工具链。

- 所有的依赖必须用root用户进行安装。
- 用户可以通过如下命令进行安装上述依赖。
apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake rpm2cpio
- 交叉编译工具链安装请参见安装工具链。
编译驱动文件
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具或其他工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在目录,例如“/opt”。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
- 执行如下命令,进入“drivers”目录。
cd Ascend310B-source/driver/drivers
- 执行如下命令,创建并进入“usr”目录。
mkdir usr
cd usr
- 执行如下命令,新增hello.c。
vim hello.c
hello.c文件的配置参考如下所示。#include <linux/module.h> #include <linux/kernel.h> int __init myhello_init(void) { printk("==========user hello mod init=========\n"); return 0; } void __exit myhello_exit(void) { printk("===========user hello mod exit=========\n"); } MODULE_LICENSE("GPL"); module_init(myhello_init); module_exit(myhello_exit);
配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,新增Makefile。
vim Makefile
Makefile文件的配置参考如下所示。ccflags-y += -Wall -Werror -Wtrampolines $(WDATE_TIME) -Wfloat-equal -Wvla -Wundef -funsigned-char -Wformat=2 -Wstack-usage=2048 -Wcast-align ccflags-y += -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-missing-field-initializers obj-m += myhello.o myhello-objs := hello.o
配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,新增module.mk。
vim module.mk
module.mk文件的配置参考如下所示。LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myhello LOCAL_KO_SRC_FOLDER := $(LOCAL_PATH) LOCAL_INSTALLED_KO_FILES := myhello.ko include $(BUILD_DEVICE_KO)
配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,进入“product_modules”目录。
cd /opt/Ascend310B-source/driver/build/product_modules
- 执行如下命令,修改device-ctrlcpu.mk文件。
vim device-ctrlcpu.mk
新增DRIVER_DEVICE_MODULES += myhello.ko
配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,返回“Ascend310B-source”目录。
cd /opt/Ascend310B-source
- 执行如下命令,编译驱动模块。
bash build.sh driver
出现如下回显表示编译成功。
### build driver_device modules successfully ### generate /opt/Ascend310B-sdk/Ascend310B-source/output/driver_modules success! make driver success!
编译后myhello.ko在“Ascend310B-source/output/driver_modules/”目录下。
生效驱动文件
- 登录Atlas 200I A2 加速模块系统环境。
- 使用“WinSCP”,将编译后的myhello.ko文件上传至任意目录下,例如“/run”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入“run”目录,再生效myhello.ko文件。
cd /run
insmod myhello.ko
- 执行如下命令,查看驱动模块是否加载成功。
lsmod |grep myhello
出现以下回显表示加载成功。myhello 16384 0
父主题: 编译驱动