第1章--Linux设备驱动概述

设备驱动是硬件与软件间的桥梁,负责与硬件交互,实现数据传输。在无操作系统时,驱动直接对接应用软件;有操作系统时,驱动作为内核与硬件的接口。Linux设备驱动将设备分为字符、块和网络设备三类,并通过文件系统接口访问。编写Linux驱动需要深厚的硬件、C语言、内核及并发控制知识。
摘要由CSDN通过智能技术生成

一、设备驱动的作用

任何一个计算机系统的运转都是系统中软硬件共同努力的结果。
对设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA 通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。
由此可见,设备驱动充当了硬件和应用软件之间的纽带,应用软件时只需要调用系统软件的应用编程接口(API)就可让硬件去完成要求的工作。

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

在没有操作系统的情况下,设备驱动的接口被直接提交给应用软件工程师,应用软件没有跨越任何层次就直接访问设备驱动的接口。
驱动包含的接口函数也与硬件的功能直接吻合,没有任何附加功能。

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

当系统中存在操作系统的时候,驱动变成了连接硬件和内核的桥梁。
操作系统的存在势必要求设备驱动附加更多的代码和功能,把单一的“驱使硬件设备行动”变成了操作系统内与硬件交互的模块,它对外呈现为操作系统的 API,不再给应用软件工程师直接提供接口。

四、Linux设备驱动

1. 设备驱动的分类及特点

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

  • 字符设备:必须以串行顺序依次进行访问的设备。
  • 块设备:可以按任意顺序进行访问,以块为单位进行操作的设备。
  • 网络设备:面向数据包的接收和发送而设计。

2. 设备驱动与系统的关系

在Linux系统中,所有设备都被映射到 Linux 文件系统的文件和目录,
通过文件系统的系统调用接口 open()、write()、read()、close() 等访问。所有字符设备和块设备都统一呈现给用户。

3. 设备驱动的重点、难点

  • 编写 Linux 设备驱动要求工程师有非常好的硬件基础。
  • 编写 Linux 设备驱动要求工程师有非常好的 C 语言基础。
  • 编写 Linux 设备驱动要求工程师有一定的 Linux 内核基础。
  • 编写 Linux 设备驱动要求工程师有非常好的多任务并发控制和同步的基础。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值