编译并生效新增用户驱动
前提条件
编译驱动文件
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具或其他工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至服务器的“/home/ubuntu24_04/squashfs-root/opt”目录下。详细操作请参见使用WinSCP传输文件。
- 切换根系统。
cd /home/ubuntu24_04
chroot squashfs-root
- 执行如下命令,进入源码包所在目录。
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文件的配置参考如下所示。KERNEL_DIR :=$(srctree) obj-m += drv_hello.o EXTRA_CFLAGS += -Wall -Werror ifneq ($(filter $(HELPER_KERNAL), openeuler),) EXTRA_CFLAGS += -DHELPER endif ifneq ($(HELPER_KERNAL),) EXTRA_CFLAGS += -DHELPER_KERNAL endif modules:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules modules_install:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean:$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean drv_hello-objs := hello.o .PHONY: modules modules_install clean
配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,新增CMakeLists.txt。
vim CMakeLists.txt
CMakeLists.txt文件的配置参考如下所示。add_device_ko(LOCAL_MODULE drv_hello KO_SRC_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} )配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
- 执行如下命令,进入顶层目录下的“driver/cmake/config”。
cd /opt/Ascend310B-source/driver/cmake/config/
- 执行如下命令,修改“driver_config_ascend310Brc.cmake”文件。
- 执行如下命令,返回“Ascend310B-source”目录。
cd /opt/Ascend310B-source
- 执行如下命令,编译驱动模块。
bash build.sh driver
出现如下回显表示编译成功。
generate /opt/Ascend310B-sdk/Ascend310B-source/output/driver_modules success! make driver success!
编译后drv_hello.ko在“Ascend310B-source/output/driver_modules/”目录下。
- 执行如下命令,退出根系统。
exit
- 在“/home/ubuntu24_04/squashfs-root/opt/Ascend310B-source/output/driver_modules”目录下获取编译后的驱动文件。
生效驱动文件
- 登录Atlas 200I A2 加速模块系统环境。
- 使用“WinSCP”,将编译后的drv_hello.ko文件上传至任意目录下,例如“/run”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入“run”目录,再生效drv_hello.ko文件。
cd /run
insmod drv_hello.ko
- 执行如下命令,查看驱动模块是否加载成功。
lsmod |grep drv_hello
出现以下回显表示加载成功。drv_hello 12288 0
父主题: 编译驱动

