当前位置: 代码迷 >> 综合 >> 【嵌入式Linux学习】Hello World 内核模块
  详细解决方案

【嵌入式Linux学习】Hello World 内核模块

热度:41   发布时间:2023-12-13 02:18:31.0

一、新建文件夹hello,创建hello.c和Makefile文件

hello.c

#include<linux/module.h>
#include<linux/kernel.h>
static int hello_init(void)
{printk(KERN_ALERT "Hello World\n");return 0;
}
static void hello_exit(void)
{printk(KERN_ALERT "Goodbye World\n");
}module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

Makefile

obj-m:=hello.o
CURRENT_PATH:=$(shell pwd)
VERSION_NUM:=$(shell uname -r)
LINUX_PATH:=/lib/modules/$(VERSION_NUM)/build
CONFIG_MODULE_SIG=n
all:make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules
clean:make -C $(LINUX_PATH) M=$(CURRENT_PATH) clean

二、在终端进入该文件夹

1、编译
make

在这里插入图片描述

2、加载驱动模块
sudo insmod hello.ko

查询模块是否被加载

lsmod | grep hello

在这里插入图片描述
查看模块被加载的打印信息

dmesg

在这里插入图片描述

3、卸载驱动模块
sudo rmmod hello

查看驱动模块是否被卸载

lsmod | grep hello

在这里插入图片描述
查看驱动模块被卸载打印信息

在这里插入图片描述


在实验过程中尝试了只有加载模块,没有卸载模块函数,这时候出现了不能正常卸载模块的现象。解决办法两种:1、参照这篇<博文> 2、重启电脑

  相关解决方案