1.字符设备驱动介绍
\qquad
字符设备驱动是linux驱动中,最基本的一类设备驱动,字符设备就是按照一个字节一个字节的方式进行读写操作的设备。读写数据分先后顺序,我们常见的单片机外设,比如led灯、按键、I2C、SPI、LCD等等都属于字符设备,这些字符设备的驱动就是字符设备驱动。
\qquad
在linux程序中,驱动程序直接与硬件设备打交道,那么上层的应用程序如何与驱动程序打交道呢?
2.字符设备驱动的框架
\qquad 字符设备驱动的编写主要是open,close,read等函数的编写,在linux中,这些函数集成到file_operations结构体中,所以驱动的程序实现主要是对file_operations结构体的实现。
3.驱动模块的编写
\qquad
<linux/init.h>包含module_init()
和module_exit()
函数
\qquad
驱动模块编写的三要素:
\qquad
入口(加载)
module_init(入口函数名)
int __init xxx_func(void)
{
}
\qquad 出口(卸载)
module_exit(出口函数名)
void __exit xxx_func(void)
\qquad
GPL协议说明。MODULE_LICENSE("GPL")
\qquad
常用的驱动模块的编写框架
#include<linux/init.h>
#include<linux/module.h>
int __init demo_init(void)
{
printk("------%S--------%S------%D-------\n",__FILE__,__func__,__LINE__);
return 0;
}
void __exit demo_exit(void)
{
}
/*
模块的入口和出口
*/
module_init(demo_init);
module_exit(demo_exit);
MODULE_L ICENSE("GPL");