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

举报
ReCclay 发表于 2022/02/21 23:09:28 2022/02/21
【摘要】 一、新建文件夹hello,创建hello.c和Makefile文件 hello.c #include<linux/module.h> #include<linux/kernel.h&...

一、新建文件夹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");

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

二、在终端进入该文件夹

1、编译
make

  
 
  • 1

在这里插入图片描述

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

  
 
  • 1

查询模块是否被加载

lsmod | grep hello

  
 
  • 1

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

dmesg

  
 
  • 1

在这里插入图片描述

3、卸载驱动模块
sudo rmmod hello

  
 
  • 1

查看驱动模块是否被卸载

lsmod | grep hello

  
 
  • 1

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

在这里插入图片描述


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

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/102839921

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。