嵌入式linux之LED驱动(杂项设备)

简单介绍下linux最简单的杂项设备驱动:
1、 定义LED驱动的入口和出口函数,以及license;
入口出口函数分别注册、释放了一个杂项设备;
嵌入式linux之LED驱动(杂项设备)_第1张图片
这里有两个结构体定义miscdevice和file_operations:

struct miscdevice {
int minor; //次设备号 通常为MISC_DYNAMIC_MINOR 动态分配
const char *name; //设备为的名字
const struct file_operations *fops;//函数操作集
struct list_head list;
struct device *parent;
struct device *this_device;
const char *nodename;
umode_t mode;
};

在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。
嵌入式linux之LED驱动(杂项设备)_第2张图片
file_operations是一个对设备进行操作的抽象结构体。linux内核为设备建立一个设备文件,这样就使得对设备文件的所有操作,就相当于对设备的操作。用户程序可以用访问普通文件的方法访问设备文件,进而访问设备。

2、编写file_operations结构特的open、close和ioctl函数,实际上这个程序比较简单,open和close什么都没做,直接ioctl设置一下引脚的值就完了;
嵌入式linux之LED驱动(杂项设备)_第3张图片
3、史上最简单的makefile:
嵌入式linux之LED驱动(杂项设备)_第4张图片
好了,到这里最简单的LED驱动和makefile已经写完了。

你可能感兴趣的:(linux驱动)