南宁手机网站建设,wordpress 七牛云 cdn,宝安企业网站建设,关键词排名提升工具Linux驱动开发详细解析
驱动概念
驱动与底层硬件直接打交道#xff0c;充当了硬件与应用软件中间的桥梁。
具体任务 读写设备寄存器#xff08;实现控制的方式#xff09;完成设备的轮询、中断处理、DMA通信#xff08;CPU与外设通信的方式#xff09;进行物理内存向虚…Linux驱动开发详细解析
驱动概念
驱动与底层硬件直接打交道充当了硬件与应用软件中间的桥梁。
具体任务 读写设备寄存器实现控制的方式完成设备的轮询、中断处理、DMA通信CPU与外设通信的方式进行物理内存向虚拟内存的映射在开启硬件MMU的情况下
Linux系统主要部分内核、shell、文件系统、应用程序
内核、shell和文件系统一起形成了基本的操作系统结构它们使得用户可以运行程序、管理文件并使用系统分层设计的思想让程序间松耦合有助于适配各种平台驱动的上面是系统调用下面是硬件
驱动分类
Linux驱动分为三个基础大类字符设备驱动块设备驱动网络设备驱动。
字符设备(Char Device) 字符(char)设备是个能够像字节流类似文件一样被访问的设备。对字符设备发出读/写请求时实际的硬件I/O操作一般紧接着发生。字符设备驱动程序通常至少要实现open、close、read和write系统调用。比如我们常见的lcd、触摸屏、键盘、led、串口等等他们一般对应具体的硬件都是进行出具的采集、处理、传输。 块设备(Block Device) 一个块设备驱动程序主要通过传输固定大小的数据一般为512或1k来访问设备。块设备通过buffer cache(内存缓冲区)访问可以随机存取即任何块都可以读写不必考虑它在设备的什么地方。块设备可以通过它们的设备特殊文件访问但是更常见的是通过文件系统进行访问。只有一个块设备可以支持一个安装的文件系统。比如我们常见的电脑硬盘、SD卡、U盘、光盘等。 网络设备(Net Device) 任何网络事务都经过一个网络接口形成即一个能够和其他主机交换数据的设备。访问网络接口的方法仍然是给它们分配一个唯一的名字比如eth0但这个名字在文件系统中不存在对应的节点。内核和网络设备驱动程序间的通信完全不同于内核和字符以及块驱动程序之间的通信内核调用一套和数据包传输相关的函socket函数而不是read、write等。比如我们常见的网卡设备、蓝牙设备。
驱动程序的功能
对设备初始化和释放把数据从内核传送到硬件和从硬件读取数据读取应用程序传送给设备文件的数据和回送应用程序请求的数据检测和处理设备出现的错误