1、设备驱动的作用:

  计算机系统的运行是软硬件共同作用的结果。如果应用程序直接访问硬件,会造成应用程序与硬件耦合度过高(了解面向对象的读者会很容易想到,降低对象与对象之间的耦合度最有效的方法是通过接口对类进行抽象,抽象度越高,耦合度越低,抽象硬件的任务就成了驱动的任务)。驱动是直接和硬件交互的一类程序,负责对硬件进行抽象。

2、设备的分类及特点:

  计算机系统的硬件由CPU、存储器和外设组成,随着芯片的集成度越来越高,在CPU内部就集成了存储器和外设适配器。ARM、PowerPC、MIPS等处理器都集成了UART、USB控制器、SDRAM控制器等。有的处理器还集成了片内RAM和Flash。

  驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对CPU核。

  Linux将存储器和外设分为3类:

  (1)字符设备:指必须以串行顺序依次进行访问的设备,比如触摸屏,磁带驱动器,鼠标,键盘等;

  (2)块设备:可以用任意顺序进行访问,以块为单位进行操作,如磁盘,软驱等;

  字符设备不经过系统的快速缓冲,块设备经过系统的快速缓冲,但是两者之间并没有明显界限,如Flash设备符合块设备的特点,但也可以把它当作一个字符设备来访问。

  字符设备和块设备的驱动设计有很大的差异,但对用户而言,它们都使用文件系统(Linux通过文件系统访问驱动)的操作接口open、close、read、write等函数进行访问;

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

  另外,USB驱动,PCI驱动,LCD驱动等大体归入上述三类设备,但对于这些复杂的设备,Linux还定义了独特的体系结构。

1.6Linux设备驱动的更多相关文章

  1. Linux字符设备驱动框架

    字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l ...

  2. 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  3. 《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载

    注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》-4.设备驱动管理器的设计

    目       录 第四章           设备驱动管理器的设计... 2 4.1           接口定义... 2 4.2           设备容器... 7 4.3          ...

  5. [连载]《C#通讯(串口和网络)框架的设计与实现》-3.设备驱动的设计

    目       录 第三章           设备驱动的设计... 2 3.1           初始化设备... 4 3.2           运行设备接口设计... 4 3.3        ...

  6. 【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    通讯机制说明 通讯的总体机制采用呼叫应答方式,就是上位机软件主动发送请求数据命令,下位机终端接 ...

  7. 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...

  8. 嵌入式Linux驱动学习之路(二十)USB设备驱动

    USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...

  9. 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动

    平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bu ...

随机推荐

  1. Home键状态保存运用场景

    当我们在一个Activity中有接收Intent过来的值,或者当前Activity有保存数据时候,如果此时不小心按到了Home键,然后没有及时回来而是运行了其它应用程序,当你想起来的时候,恐怕已经是几 ...

  2. 不容错过错的xcode 插件 转至于cocoachina

    古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!以下是搜集的一些有力的XCode插件.   1.全能搜索家CodePilot 2.0 你要找的是文件?是文件夹? ...

  3. 漫谈刑事辩护 z

    各位律师,各位助理: 大家好!今天的律师沙龙由我来给大家谈一谈刑事辩护方面的问题.这次我谈的,主要是我这么多年来办理刑事案件,从事刑事辩护中的一些体会. 刑事辩护,大家最关心的莫过于收费问题了.我认为 ...

  4. java小程序

    1.水仙花数 这个数等于它的每位数的立方和 (三位数) 示例一: int i; int j; int k; for (i=1;i<=9;i++) { for (j=0;j<=9;j++){ ...

  5. [Flex] ButtonBar系列——flex3 ButtonBar各项之间的间距调整

    <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...

  6. Prevent Adding Component More than once

    Question: I'm developing a C# component, I want to prevent the user from adding this component to th ...

  7. echart 图表 在.net中生成图片的方法

    经过中午近两个小时的努力,终于可以实现了:echart 图表 在.net中生成图片 以下源代码: 前台页面: <!DOCTYPE html><html><head> ...

  8. 找不到方法"Boolean System.Threading.WaitHandle.WaitOne(TimeSpan)"的解决方案

    找不到方法"Boolean System.Threading.WaitHandle.WaitOne(TimeSpan)" http://www.microsoft.com/down ...

  9. 303. Range Sum Query - Immutable

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...

  10. openssl rsa 私钥 PKCS8私钥 公钥

    上文配置好 openssl 运行 => cmd => cd C:\usr\local\ssl\bin => 执行 openssl