《Linux设备驱动开发详解》笔记:linux设备驱动概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zztingfeng/article/details/82860426

一   设备的分类及特点

驱动针对的对象是 存储器和外设(包括 CPU 内部集成的存储器和外设),而不是针对 CPU 核。 Linux将存储器和外设分为3个基础大类:字符设备;块设备;网络设备。

字符设备:

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

块设备:

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

网络设备:

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

 

二   Linux设备驱动与整个软硬件系统的关系(如图1所示)

除网络设备外,字符设备与块设备都被映射到 Linux 文件系统的文件和目录,通过文件系统的系统调用接口 open()、 write()、 read()、 close()等函数即可访问字符设备和块设备。

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

                                                

                                                            图1 Linux 设备驱动与整个软硬件系统的关系

 

 

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/82860426
今日推荐