目录
1.设备控制器
什么是设备控制器呢?
它是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和处理器之间的数据交换.
它是CPU与I/O设备之间的接口,它通过控制总线接收从CPU发来的命令并去控制I/O设备工作.控制器相当于
CPU与外设打交道的一个助理,让处理器从繁杂的设备控制事务中解放出来.
2.I/O空间的管理
设备通常会提供一组寄存器来控制设备,读写设备以及获取设备的状态,这些寄存器就是
控制寄存器,数据寄存器和状态进村器,它们位于控制器中.
从编址方式来说:
如果IO空间与内存在一起编址,对应的内存空间被称为IO内存,如图左边所示;
如果IO空间单独编址,就位于IO空间,通常被称为IO端口,如图右边所示.
3.I/O端口及I/O内存和I/O端口的访问
什么是I/O端口?
设备驱动程序要直接访问外设或者其接口卡上的物理电路,通常以寄存器的形式出现访问.
外设寄存器也称为I/O端口,通常包括控制寄存器,状态寄存器和数据寄存器.
如何访问I/O内存和I/O端口?
访问I/O内存的方式一般是通过访问一般内存的指令就可以访问I/O内存;
访问I/O端口的方式一般是通过外设寄存器的读写专门设置的指令来进行访问.
4.I/O内存资源的访问
用于I/O指令的地址空间相对来说是很小的,自从P3(??)总线出现后,无论是CPU的设计是采用
I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上就是采用
了虚拟内存的手段,这样的映射是通过为ioremap()这个专门的函数来建立的,该函数如图所示,
其中的参数含义也如图.
5.I/O端口的访问
在读写I/O端口的时候需要注意的一点就是大多数平台区分8位,16位和32位端口,
其中port参数指定端口空间中的端口地址,在大多数平台上,它都是无符号的短整型,
其他的平台上是无符号的整型,显然端口地址的类型是由端口空间的大小来决定的.