您的位置:首页 > 其它

设备驱动之HelloWorld

2015-02-27 11:40 176 查看
早先接触设备驱动开发,便写过一个helloworld,今回首,突然发现不会写了,太可怕,熬夜伤脑啊,赶紧记下。

基本流程:

写hello.c 和 Makefile文件 --->make ——> sudo insmod hello.ko———> dmesg | tail 查看打印的文字 —-> lsmod查看 ———> sudo rmmod hello

插入模块后,/sys/module/下可以看到hello模块

hello.c文件:

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void){

printk(KERN_ALERT "Hello , World\n"); //内核空间里没有printf,用printk
return 0;

}

static void hello_exit(void){
printk(KERN_ALERT "Goodbye , World\n");
}

module_init(hello_init);
module_exit(hello_exit);


Makefile文件:

ifeq ($(KERNELRELEASE),)
#KERNELDIR ?= /home/liang/driverModel/linux-3.18.4 #下载的kernel,为编译,无效
KERNELDIR ?= /lib/modules/3.13.0-44-generic/build   #当前系统的kernel
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules      #make -c 内核路径 M=模块路径 modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
else
obj-m := hello.o
endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: