HelloWorld
代码
mini_module.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL"); //遵循BSD和GPL开源许可
MODULE_AUTHOR("TAXUE"); //模块作者
static int hello_init(void){
printk(KERN_EMERG "HELLO World enter!\n"); //KERN_EMERG代表打印的等级
return 0;
}
static void hello_exit(void){
printk(KERN_EMERG "HELLO World exit!\n");
}
module_init(hello_init); //模块入口,加载驱动时执行参数内的函数
module_exit(hello_exit); //模块出口,卸载模块时执行参数内的函数
Makefile
#!bin/bash
#通知编译器使用哪个脚本语言
obj-m += mini_module.o
#将c文件编译成同名的.o文件
KDIR := /work/kernel/iTop4412_Kernel_3.0
#内核代码的路径
PWD ?= $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
#执行make命令时,默认来找all选项
#make -C 调用执行的路径,也就是接下来的KDIR变量
#modules表示将驱动编译成模块
clean:
rm -rf *.o
#all和clean下一行的命令,一定要以【Tab】开头
操作
执行make编译驱动,得到mini_module.ko文件,即是驱动模块,将驱动模块拷贝至板卡上
insmod mini_module.ko
#加载驱动模块
rmmod mini_module.ko
#卸载模块
dmesg
#查看模块加载和卸载时的打印信息