Linux外部设备的硬件接口
扫描二维码
随时随地手机看文章
计算机的外部设各通常由电气部分和机械部分两部分组成。电气部分是用来控制机械部分的,因此电气部分也叫做外部设各的控制器。
控制器通过计算机系统总线挂接到系统上。或者说,计算机系统就是通过控制器来控制和操作外部设备的。典型的方式是,把外部设各中的各个控制器看做是一组互不冲突的寄存器组,并赋予它们相应的地址,从而使处理器可以像访问存储器一样来访问控制器,并通过控制器来访问外部设各。
外部设各通常包含4组寄存器,即状态寄存器、控制寄存器、数据输入寄存器和数据输出寄存器。这些寄存器有各自的地址,这个地址叫做端口。这些寄存器的作用分别为:
·状态寄存器用来向处理器提供外部设备的工作状态。例如,设各的当前操作是否执行完毕,数据是否可被读出或写入以及错误提示等。
·控制寄存器是被用来管理外部设备工作模式的。也就是说,在设备初始化或运行时, 处理器可通过向控制寄存器写入命令来启动或改变设各工作模式。
·数据输入寄存器和数据输出寄存器是用来与处理器传递数据的。
外部设各与处理器关系示意图如图所示。
图 外部设备与处理器关系示意图
为了识别外部设各的这些寄存器,系统给这些寄存器都赋予了地址,于是外部设各寄存器占用的地址空间叫做I/O空间。对于I/O空间的处理,目前有两种方式:一种是与存储器统一编址,即在整个内存空间中划出一个范围作为I/O空间,这种方式的特点是处理器没有独立的I/O指令,而是把外部设各的寄存器作为存储单元来对待的;另一种方式是处理器具有单独的I/O指令,所以在这种方式中I/O地址空间是独立编址的。不管是统一编址还是独立编址,从逻辑上来看,外设的各寄存器就相当于一种存储装置,它可向处理器提供数据,也可接收处理器的数据,即处理器可对它们进行读/写操作。