Linux设备驱动程序——字符设备驱动编程

字符设备

Linux对设备的操作与对文件的操作是一样的,可以看到一个设备所对应的文件。我们平时用的read、write等函数也可以用于设备文件。

字符设备:
- 以字符为单位
- 按照顺利操作
- 没有缓存区,故不支持随机读写

例外:帧缓存设备,如显卡,是可以随机访问的

设备号

设备号由主设备号与次设备号组成。

主设备号标识设备对应的驱动程序。不同的设备可以有相同的主设备号,主设备号相同的设备使用相同的主设备号,内核利用主设备号与相应的驱动程序对应。

可以把主设备号理解成设备驱动程序的标识,就是Program

次设备号

原来区分具体设备驱动程序的实例,就是instance

创建设备文件节点

mknod  /dev/char0 c 10 3

含义

mknod 创建设备节点
/dev 在...目录下创建
char0 设备名字
c 字符设备
10 主设备号
3  次设备号

在/dev目录下创建char0的设备,该设备文件对应的是字符设备,其主设备号是10,次设备号是3。

常见的设备号

file_operation结构体

file_operation是一个连接设备文件和文件操作的结构体,是一些函数指针的集合。每个文件都对应一个file_operation结构,用来执行对应的系统调用。

struct  file_operations {
    ssize_t (*read) (struct file* , char* , loff_t*);
    ......
}

猜你喜欢

转载自blog.csdn.net/qq_24118527/article/details/78701384