一、linux操作系统的设备驱动
硬件、设备驱动、操作系统、应用程序的关系
操作系统作用:复杂的软件系统需要处理并发多任务,需要操作系统才易于实现并发多任务。
二、linux设备分类
Linux将存储器和外设分为3个基础大类。
1、字符设备
必须以串行访问的设备。如触摸屏
、磁带驱动器
、鼠标
。
2、块设备
可以按任意顺序访问的设备,以块为单位操作。如硬盘
、eMMC
。
3、网络设备
用于面向数据包的接收和发送。内核于网络设备通信方式主要为套接字(socket)
三、Linux设备驱动与整个软硬件系统的关系
(1)、 除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录。
(2)、 针对磁盘或者Flash设备的FAT
、EXT4
、YAFFS2
、JFFS2
、UBIFS
等文件系统定义了文件和目录在存储介质,Linux的虚拟文件系统统一对它们进行了抽象。
(3)、 应用程序都可以统一使用操作系统API函数open()
、write()
、read()
、close()
进行访问操作。
四、源代码阅读
1、Windows阅读内核源码工具
Source Insight
2、linux下阅读内核源码工具
vim+cscope或者vim+ctags