设备驱动之HelloWorld

早先接触设备驱动开发,便写过一个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

 

posted @ 2015-02-27 11:40  zyliang  阅读(327)  评论(0编辑  收藏  举报