首页 > 其他 > 详细

写一个简单的hello字符驱动模块

时间:2020-10-31 23:52:13      阅读:43      评论:0      收藏:0      [点我收藏+]

今天写了一个非常简单的字符驱动模块,源程序问题不大,makefile脚本不知道哪出错了。试了一下午,竟然是少了个"$"来引用变量。特此记录下!

1.如下为源程序:

 1 #include <linux/init.h>
 2 #include <linux/module.h>
 3 #include <linux/kernel.h>
 4 MODULE_LICENSE("GPL");//许可权限的声明
 5 static int __init hello_init(void)
 6 {
 7     printk(KERN_DEBUG"hello world\n");//定义输出级别
 8     return 0;
 9 }
10 static void __exit hello_exit(void)
11 {
12     printk(KERN_DEBUG"byebye\n");
13 }
14 module_init(hello_init);//内核模块加载函数
15 module_exit(hello_exit);//内核模块卸载函数

2.如下为makefile脚本:

 1 #!/bin/bash
 2 ifneq ($(KERNELRELEASE),)
 3 obj-m := hello.o
 4 else
 5 PWD :=$(shell pwd)
 6 KDIR := /lib/modules/$(shell uname -r)/build
 7 all:
 8         make -C $(KDIR) M=$(PWD)
 9 clean:
10         rm -rf *.o *.ko *.mod.c *.symvers *.c- *-
11 endif

脚本最好在第一行用如下语句规定初始脚本:

#!/bin/bash

要不然有可能发生如下报错:

/bin/sh: -c: line 0 syntax error near unexpected token ‘(‘

我把第五行的  $  符号漏掉了。其余都是常规写法。

3.make一下。生成如下相关文件:

技术分享图片

 

 4.加载模块,查看模块,卸载模块。

技术分享图片

 

 5.通过dmesg命令查看内核输出信息。

1)装载模块

技术分享图片

 

 2)卸载模块

技术分享图片

 

写一个简单的hello字符驱动模块

原文:https://www.cnblogs.com/kunshanpipixia/p/13908109.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!