转自:http://blog.chinaunix.net/uid-24264134-id-98061.html
Linux设备驱动会以内核模块的方式出现,因此,内核模块也成了我们编写驱动的入门知识,这是一个最简单的linux内核模块"Hello World",首先来看一下hello.c中的代码:
#include <linux/init.h> #include <linux/module.h>
MODULE_LICENSE ("Dual BSD/GPL");
static int hello_init (void) { printk (KERN_ALERT "Hello, This is my module!\n"); return 0; }
static void hello_exit (void) { printk (KERN_ALERT "Bye, This is my module!\n"); }
module_init(hello_init); module_exit(hello_exit);
|
这个模块只包含内核模块加载函数,卸载函数和对Dual BSD/GPL许可权限的声明及一些描述信息。
Makefile文件如下:
ifneq ($(KERNELRELEASE),) obj-m := hello.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif clean: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean -rm -I *.o
|
编译模块:在模块目录下输入make命令即可,编译后会生成hello.ko文件
插入模块:sudo insmod hello.ko
可以输入:dmesg查看日志信息,发现末尾多了一行Hello, This is my module! 这是我们在模块中写入的信息
删除模块:sudo rmmod hello
再看日志发现有多了一行:
Bye, This is my module!
OK,第一个模块完成,向驱动迈出了第一步。
[driver]简单地hello驱动加载
原文:http://www.cnblogs.com/aaronLinux/p/6979920.html