设备驱动之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
"); //内核空间里没有printf,用printk
    return 0;

}

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

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
1、以专家为榜样,不必自己重新探索
2、解构技能,找出实现80%效果的那20%
3、不要一心二用
4、练习练习再练习!然后获得即时反馈
5、坚持,不要在低谷期放弃
原文地址:https://www.cnblogs.com/zhongyuan/p/4302966.html