- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
深入理解驱动程序
一直以来,发现很多搞上层软件的朋友没有时间了解 CPU、编 译
器、操作系统等底层技术,偶恰好在计算机微体系结构与集成电路 实验
室,有幸接触到这些底层的东东,所以想写一些自己以前学这些 东东的
感想,以消除对底层技术不熟悉的朋友对底层技术的神秘感, 同时想和
搞底层技术的朋友切磋切磋, 共同提高。当然偶所谈的内容 都不是先进
或深奥的,而是最直观和最容易理解的,偶所写的文章不 是阐述各个专
题的专著,而是入门读物,希望读者读完偶的文章后具 有读懂各个专题
专著的能力。
闲话少说,让我们切入正题。我们从驱动程序出发,慢慢讲 解
计算机的各个部分是如何各自为政, 而又互相协作,从而完全各种 复杂
功能的。本文的题目虽然叫《深入理解驱动程序》,但其实 文不 对题”
本文不具体阐述如何编写驱动程序,而是从体系结构的观点 着手,力争
用通俗易懂的语言阐述各种外设的共同特点, 使读者具备
举一反三、融会贯通、驾驭各种外设的能力。另外,笔者喜欢从不同 的
角度分析同一个问题,所以行文中难免出现重复的内容,累赘的阐 述,
笔者正是希望通过这种重复和累赘来加深读者对所述内容的理 解。计算
机发展到今天,其外设早已是五花八门,象硬盘、软盘、光 盘、U盘、
鼠标、键盘、声卡、网卡、SD卡、手柄等等,真是层出 不穷。五花八
门的外设给我们带来便利的同时也带来了许多问题, 比
如:主板上的接口个数有限,怎样保证各种离奇古怪的外设能连接主 板
并跟主机通信?怎样保证 CPU能一个不漏地控制外设工作? CPU能够
控制什么样的外设? CPU对外设的控制能达到什么程度?怎样
保证CPU不会误操作外设?怎样保证外设之间不会 打架”互相干 扰?
外设怎样向CPU报告处理结果?多个进程怎样共享外设?高级 语言怎
样支持驱动程序的编写?外设怎样给 CPU提供配置信息等
等,这些问题是否让各位看官头大了?不要紧张,且听我慢慢道来。
首先,讲讲外设的基本构成。每个外设都有一个控制器,这个控 制
器是数字电路,控制器里有一些叫 寄存器”的存储单元,这些东东 的物
理结构跟内存单元不一样,但作用跟内存单元一样,都能保存信 息。寄
存器各有各的作用,比如:软驱、硬盘上有保存磁头号、磁道 号、扇区
号等参数的寄存器,这些寄存器的值告诉硬盘这次读磁盘操 作要读的是
哪个盘面哪个磁道哪个扇区的数据。根据寄存器的作用, 可将寄存器分
为两类,分别叫控制寄存器和状态寄存器。 控制寄存器 用来告诉外设:
CPU要求它干什么活以及它干活时需要的参数;状 态寄存器用于外设向
CPU报告外设目前的状态,比如,外设目前在 干什么活,在干活的过程
中是否发生了错误, 外设是否还有能力接受 新任务等等,状态寄存器没
有能力主动告诉 CPU外设当前的状态, 而是被动地等待着CPU来取状
态信息,CPU把状态寄存器的值读出 来就能知道外设当前的工作状态。
当然,外设也有主动报告 CPU的
能力一一中断。寄存器有的是只写的,有的是只读的,还有的是可读 可
写的。一般而言,控制寄存器是只写或可读可写的,状态寄存器是 只读
的。除了控制器外,大多数外设还有一个用来具体干活的模拟电 路,如
硬盘有控制磁头移动、盘片转动的模拟电路,打印机有控制打
印纸滚动,控制喷墨或打印针击打打印纸的模拟电路, MP3有数模
转换器和功率放大器等等。控制器和模拟电路通常是集成在一块芯片
里,这种集成电路叫数模混合电路。数模混合电路是目前 IT领域颇
具挑战性的技术之一,如果某天你能设计数模混合电路了, 那么恭喜
你,这辈子你再也不用愁吃穿住行了!当然,也有纯数字电路的外设,
如DMA控制器。以前的外设由于技术不成熟,其控制器、模拟电路、
电机等部件是分离的,现在大多数外设把控制器、模拟电路及电机、 盘
片(如果有的话)等等各个部件集成在一起,如硬盘。有的外设只 是把
控制器、模拟电路及电机集成在一起,盘片是可移动的,如光驱、 软
驱。这种把控制器、模拟电路及电机等部件集成在
文档评论(0)