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

迈不过友情╰ 2022-06-04 03:28 538阅读 0赞

字符设备

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

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

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

设备号

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

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

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

次设备号

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

创建设备文件节点

  1. mknod /dev/char0 c 10 3

含义

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

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

常见的设备号

file_operation结构体

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

  1. struct file_operations {
  2. ssize_t (*read) (struct file* , char* , loff_t*);
  3. ......
  4. }

发表评论

表情:
评论列表 (有 0 条评论,538人围观)

还没有评论,来说两句吧...

相关阅读