标签:
早先接触设备驱动开发,便写过一个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
标签:
原文地址:http://www.cnblogs.com/zhongyuan/p/4302966.html