这是一个简单的字符驱动程序,在初始化和退出的时候显示一段话
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int __init hello_init(void)
{
printk("hello world!/n");
return 0;
}
void __exit hello_exit(void)
{
printk("bye!/n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
//
以下是我写的Makefile
ifneq ($(KERNELRELEASE),)
obj-m:=test.o
else
KERNELDIR=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *.mod.c *.mod.o *.ko
endif
/
我make出test.ko文件 然后sudo insmod test.ko 加载驱动,之后在/dev文件下面用sudo mknod test c 254 0 ,来创建节点,这样驱动就加载好了,但后写一个简单到不能再简单的测试程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <linux/i2c.h>
#include <linux/fcntl.h>
int main()
{
int fd;
if((fd=open("/dev/test",O_RDWR))==-1)
{
printf("opened!/n");
}
else
{
printf("Fail!/n");
}
}