一、最简linux驱动
最简linux驱动,即最小模块
1.必备的头文件
#include<linux/module.h>
// 所有的linux代码必须遵循GPL协议
// 协议在module.h中
#include<linux/init.h>
// 包含初始化宏定义的头文件,代码中的函数module_init和module_exit在此文件中。
// 入口函数module_init(x)
// 出口函数module_exit(x)
2. 声明
MODULE_LINCESE("Dual BSD/GPL");
//声明是开源的,没有内核版本限制
//必须有
MODULE_AUTHOR(“Your Name”);
//声明作者
//可有可无
3.入口函数,出口函数
static int hello_init(void)
{
printk(KERN_EMERG "HELLO WORLD ENTER!\n");//有7种打印信息
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG "HELLO WORLD EXIT!\n");
}
module_init(hello_init);//宏,初始化函数
module_exit(hello_exit);//宏,卸载函数
二、编译及模块的Makefile文件
1.说明
一般是和源码放一块进行编译的,也可以拿出来单独编译
单独编译则需要写一个makefile文件
2.编译模块
编译流程:
执行make命令—> makefile文件 —> linux 模块.c—-> 搜集linux源码.c —-> .ko文件
编译后会生成.ko文件,.ko文件为驱动模块
三、加载、查看、卸载模块
insmod 加载模块命令
lsmod 查看模块命令
rmmod 卸载模块命令