inux设备驱动(二)

原创 2016-11-09 13:48:53 1120
摘要:1、linux设备驱动计算机系统硬件主要由CPU、存储器和外设组成。驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对从CPU核。linux将存储器和外设分为3个基础大类。字符设备块设备网络设备  字符设备指那些必须以串行顺序一次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。  块设备可以任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。  字符设备和块设备的不同点:

1、linux设备驱动

计算机系统硬件主要由CPU、存储器和外设组成。

驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对从CPU核。linux将存储器和外设分为3个基础大类。

  • 字符设备

  • 块设备

  • 网络设备

  字符设备指那些必须以串行顺序一次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。

  块设备可以任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。

  字符设备和块设备的不同点:字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。

  在linux系统中,网络设备面向数据包的接收和发送而设计的,它并不对应于文件系统的节点。内核与网络设备的通信与内核和字符设备、网络设备的通信方式完全不同。

2.linux设备驱动与整个软硬件系统的关系

  如下图所示,除网络设备外,字符设备与块设备都被映射到linux文件系统的文件和目录,通过文件系统的系统调用接口open(),write(),read(),close()等即可访问字符设备和块设备,所有的字符设备和块设备都被统一的呈现给用户。块设备比字符设备复杂,在它上面会首先建立一个磁盘/Flash文件系统,如FAT、EXT3、YAFFS2 、JFFS2、 UBIFS等。FAT、EXT3、YAFFS2 、JFFS2、 UBIFS定义了文件和目录在存储介质上的组织。

1059417-20161109133418702-1755238790.png

应用程序可以使用linux的系统调用接口编程,但也可以使用c库函数,处于代码可移植性的目的,后者更值得推荐。c库函数本身也通过系统调用接口而实现,如c库函数fopen(),fwrite(),fread(),fclose()分别会调用操作系统的API open(),write(),read(),close().

发布手记

热门词条