学linux也有段时间了,一直没什么条理。也不知道学了些什么做了些什么。现在一步步梳理一下linux驱动的学习过程。就从最简单的去看开始。
首先我们写一个最简单的模块。编辑hello_module.c
#include<linux/module.h> MODULE_LICENSE("GPL"); void text_cleanup(void) module_init(text_init);
|
编写Makefile
ifneq ($(KERNELRELEASE),) obj-m := hello_module.o else #KERNELDIR := /home/sinew/桌面/linux-2.6.30.4-ces2440 KERNELDIR := /usr/src/linux-headers-3.8.0-19-generic/ PWD:=$(shell pwd) all: make -C $(KERNELDIR) M=$(PWD) modules clean: rm -rf *.ko *.o *.mod.c *.mod.o *.symvers endif |
其中KERNELDIR需要设置成你的内核源码路径。
然后使用insmod 命令存入模块:insmod hello_nodule.ko
使用lsmod 就能看到你新插入的模块
使用rmmod移除模块:rmmod hello_module
最简单的驱动就完成了。