Hi,欢迎来到中国嵌入式培训高端品牌 - 在线365bet<北京总部官网>,专注嵌入式工程师培养13年!
当前位置: > 嵌入式学院 > 嵌入式学习 > 讲师博文 > Linux系统将设备驱动分为三种类型:
Linux系统将设备驱动分为三种类型:
时间:2017-06-08作者:华清远见

1)字符设备

字符设备是能够像字节流(比如文件)一样访问的设备,由字符设备驱动从程序来实现这种特性,通过/dev下的字符设备文件来访问。字符设备驱动程序通常至少需要实现open、close、read和write等系统调用所对应的、对该硬件进行操作的功能函数。

应用程序调用system call,将会导致操作系统执行上层功能组件的代码,这些代码会处理内核的一些内部事务,为操作硬件做好准备,然后就会调用驱动程序中实现的对硬件进行物理操作的函数,从而完成对硬件的驱动,然后返回操作系统上层功能组件的代码,做好内核内部的善后事务,最后返回应用程序。

由于应用程序必须使用/dev/目录下的设备文件,所以该设备文件必须事先创建。

2)块设备

块设备通常是按照块为单位来访问数据,比如一块为512KB。

块设备也是通过/dev目录下的文件系统节点来访问,块设备和字符设备区别仅仅在于内核内部管理数据的方式,也就是内核和驱动程序的接口不同。

块设备除了给内核提供和字符设备一样的接口外,还提供了专门面向块设备的接口,块设备的接口必须支持挂装文件系统,通过此接口,块设备能够容纳文件系统,因此应用程序一般通过文件系统来访问块设备上的内容,而不是直接和设备打交道。

3)网络设备

网络设备驱动不同于字符设备和块设备,不在/dev下以文件节点代表,而是通过单独的网络接口来代表。

任何网络事务都要通过一个网络接口,即一个能够和其他主机交换数据的设备,通过接口代表一个硬件设备,但也可能是个纯软件设备。

内核和网络驱动程序间的通信完全不同于内核和字符设备驱动以及块设备前驱动程序之间的通信,内核调用一套与数据包传输相关的函数。


发表评论

全国咨询电话:400-706-1880,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(619366077), 余老师QQ(2657985593), 李老师QQ(2814652411), 徐老师QQ(1462495461)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2017 华清远见教育集团 版权所有 ,沪ICP备10038863号,京公海网安备110108001117号