字符设备驱动

 

 

一个Linux软件系统的结构大致如下:

 

设备类型:

Linux将设备分为字符设备、块设备、和网络设备。

字符设备是指I/O传输中以一个字节为单位进行读写,是面向字节流的设备,例如鼠标、键盘、串口、控制台和LED设备等。

块设备:是以固定长度进行读写的设备,主要是存储设备,例如硬盘、Flash等。

操作字符设备和块设备的库函数是一样的。

网络设备读写的字节长度不固定,可以单个字节读写,也可以将若干字节的数据组成一帧来读写,网络设备有专用的调用接口,也就是大名鼎鼎的套接字(socket)。

 

Linux操控设备的一般流程

当应用程序调用open来打开一个文件时,从上到下的工作是:

  1. 应用程序使用open并传入相关参数;
  2. 库根据传入的参数,执行swi指令,引起内核异常,进入内核;
  3. 内核根据传入的参数,调用相关的异常处理函数,并找到相应的驱动程序;
  4. 驱动程序完成设备的初始化,并要求内核为该设备分配主设备号;
  5. 内核分配完主设备号后,再为该设备分配一个文件描述符并将该文件描述符传给库进而传给应用程序;
  6. 应用程序获得文件描述符后就可对该设备进行read、write等后续操作了。

 驱动框架

 

库为应用程序提供了open、read、write接口,驱动程序里面就要有相应的open、read、write函数来实现具体操作

posted on 2018-06-26 22:25  heartflying  阅读(139)  评论(0编辑  收藏  举报

导航