驱动基础01:Linux设备驱动概述

目录

一、设备驱动的角色 

二、有无操作系统时的设备驱动

(1)无操作系统时

 (2)有操作系统时

三、Linux设备分类

(1)字符设备

(2)块设备

(3)网络设备

四、Linux设备驱动在整个系统的关系

一、设备驱动的角色 

①充当硬件和应用软件之间的桥梁

②具体任务:读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射。

③应用软件调用驱动,驱使硬件完成要求的任务。

二、有无操作系统时的设备驱动

(1)无操作系统时

一般是以.h和.c来定义一个软件模块,这里应用软件直接访问设备驱动的接口。

驱动基础01:Linux设备驱动概述_第1张图片

 (2)有操作系统时

①无操作系统时的硬件操作还是必需的

②将驱动融入内核,设计面向操作系统内核的接口,对外呈现为操作系统的API,不再提供接口。

驱动基础01:Linux设备驱动概述_第2张图片

 注:应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。驱动为连接硬件和内核的桥梁

③操作系统的作用:处理多并发的任务以及存储管理方面的问题。

内核和设备系统之间关系详解图如下:

驱动基础01:Linux设备驱动概述_第3张图片

三、Linux设备分类

计算机系统的硬件主要由CPU、存储器和外设组成。Linux将存储器和外设分为三个基础大类,字符设备、块设备以及网络设备。

(1)字符设备

①串行顺序依次进行访问的设备。

②块设备不经过系统的快速缓冲

③触摸屏、磁带驱动器、鼠标等

(2)块设备

①可以按照任意顺序进行访问,以块为单位进行操作

②硬盘、eMMC等块设备上可以构建文件系统

③块设备经过系统的快速缓冲

(3)网络设备

①面向数据包的接收和发送而设计

②内核与网络设备的通信,主要还是用套接字接口。

四、Linux设备驱动在整个系统的关系

驱动基础01:Linux设备驱动概述_第4张图片

 (1)除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录,可以通过文件系统的系统调用接口(open/close/read/write)

(2)访问块设备有两种方式,如图一种原始方式,一种构建文件系统(FAT/EXT4/BTRFS)后通过文件访问。

(3)Linux块子系统 & MTD系统

①Linux块子系统面向磁盘 & MMC/SD工作,在其上可建立FAT/EXT等文件系统

②MTD系统面向Nor & Nand Flash工作,在其上可建立YAFFS2等文件系统

你可能感兴趣的:(嵌入式Linux驱动,linux,驱动开发)