设备的概念和总体框架

来源:互联网 发布:电子菜谱制作软件 编辑:程序博客网 时间:2024/06/01 08:20

整理资料,便于以后阅读

  CPU、内存 和 设备 是计算机最重要的三个基础。

  同常显卡网卡声卡等设备,都是插入计算机系统的PCI总线插槽,安装驱动之后,应用程序可以通过文件系统打开和读写设备文件。

  这个过程可以通过3个层面进行理解

1)设备本身的特性

2)总线和操作系统读设备的管理

3)设备的驱动层

后两个将在8章重点分析,67也有涉及;

  设备特性是理解设备的基础,也是正确理解其他层面的基础


1、设备的配置表

  PCI设备包含一个配置表

  PCI总线规范定义的PCI设备配置空间长度为256字节,配置信息按一定的顺序和大小依次存放,。配置空间的前64字节为配置头。  对所有的设备而言,配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式。  其余192字节为本地配置空间,主要定义卡上局部总线的特性、本地空间基地址 即 范围。


2、访问设备寄存器和设备内存

  x86系统为控制设备设置了一个地址空间,这个空间称为计算机的I/O 端口空间, 这个空间占据了65536个8位范围。

  不同的处理器对设备控制接口有不同的访问方式


  访问设备的内存空间, 设备内存不占用I/O端口空间,和系统内存占用一样的地址空间,内核读取设备内存基址,找到合适的内存空间,把设备和内存映射到内存空间,这样驱动就可以用标准的内存接口访问设备的内存。


3、设备中断和DMA

  设备是用来控制输入输出的,接到输入信息之后,通过中断来(CPU也可以轮询检查设备),通知主机CPU,每个设备都有自己的中断号(设备可以有多个中断)。

PCI设备,中断相关信息保存在设备的配置空间里面

  主机的CPU能访问内存,设备也能访问系统的内存。

  设备通过DMA方式访问系统内存,就必须知道内存的总线地址;

如何把内存的总线地址传送给设备?

  设备的寄存器里面有一个保存DMA地址的,驱动设备这个寄存器的内容,然后设备根据该地址启动DMA,访问主机内存。


4、总线对设备的扫描

  设备的配置信息提供了设备的信息 和 设备寄存器基址 以及 设备内存地址 。

因此首先要读到这些信息,然后操作系统才能探测到设备,理解设备的类型和型号,为设备安排正确的驱动,并为设备安排合适的I/O端口 和 I/O 内存。

  PCI总线读取设备的配置信息:

    保留8字节的I/O端口地址,即0xCF8 ~ 0xCFF 。要访问设备的配置信息,先往0xCF8地址写入目标地址信息,然后通过0xCFF地址读取数据,就可以获得这个配置信息。这里的 写 和 读 ,都是使用x86所持有的 I/O 指令。

  写入0xCF8 的目标地址信息, 包括总线号、设备号、 功能号 和 配置寄存器地址等综合信息。 当PCI总线读取到 设备信息, 系统就为设备创建一个PCI 设备对象,设备就这样被PCI总线扫描进来。---过程详见第8章讨论。


5、设备驱动管理

  完成对设备的扫描之后,接下来要为设备安装正确的驱动。设备对象创建后,要把设备注册到总线。 当设备注册到总线时,总要扫一遍总线,看能否为设备找到驱动。设备的配置表里包含了设备的厂商信息、 设备型号 和类型。 而设备的驱动也包含设备的型号和 类型信息, 如果两者匹配,则表明驱动是正确的,可以为这个设备服务。

  当驱动注册到总线的时候,也要扫描一遍总线,看能否找到合适驱动的设备。扫描的方式和设备注册扫描的方式一样。



阅读全文
0 0
原创粉丝点击