linux驱动编程(五)--最简linux驱动

一、最简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 卸载模块命令

猜你喜欢

转载自blog.csdn.net/liuxiaodong400/article/details/82217093