[driver]简单地hello驱动加载

Posted aaronGao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[driver]简单地hello驱动加载相关的知识,希望对你有一定的参考价值。

转自: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驱动加载的主要内容,如果未能解决你的问题,请参考以下文章

简单的Linux驱动程序以及如何加载/卸载驱动

Spring JDBC 无法加载 JDBC 驱动程序类 [oracle.jdbc.driver.OracleDriver]

无法加载 Driver do Microsoft Access (*.mdb) ODBC 驱动程序的安装例程,因为存在系统错误代码

Windows Driver开发_TraceEvents调试以及加载驱动的方法

Windows Driver开发_TraceEvents调试以及加载驱动的方法

用Java怎样访问数据库,用啥代码?