I_O空间通俗易懂

I_O空间通俗易懂

ID:40748252

大小:134.84 KB

页数:6页

时间:2019-08-07

I_O空间通俗易懂_第1页
I_O空间通俗易懂_第2页
I_O空间通俗易懂_第3页
I_O空间通俗易懂_第4页
I_O空间通俗易懂_第5页
资源描述:

《I_O空间通俗易懂》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、I/O空间-----I/O端口和I/O内存   首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间。                                  设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。  一类CPU(如M68K,PowerPC,ARM,Unicore等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指

2、令进行,所以,这种CPU没有专门用于设备I/O的指令(可以以此判定体系为哪种)。这就是所谓的“I/O内存”方式。  另一类CPU(如X86)将外设的寄存器看成一个独立的地址空间,所以访问内存的指令不能用来访问这些寄存器,而要为对外设寄存器的读/写设置专用指令,如IN和OUT指令。这就是所谓的”I/O端口”方式。但是,用于I/O指令的“地址空间”相对来说是很小的。事实上,现在x86的I/O地址空间已经非常拥挤。  但是,随着计算机技术的发展,单纯的”I/O端口"方式无法满足实际需要了,因为这种方式只能对外设中的几个寄存器进行操作。而实际上,需求在不断发生变化,例如,在PC上可以插上一块图形

3、卡,有2MB的存储空间(设备内存),甚至可能还带有ROM,其中装有可执行代码。自从PCI总线出现后,不管CPU的设计采用I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上是采用了虚存空间的手段,这样的映射是通过ioremap()来建立的。  1.CPU是i386架构的情况在i386系列的处理中,内存和外部IO是独立编址,也是独立寻址的。MEM的内存空间是32位可以寻址到4G,IO空间是16位可以寻址到64K。  2.在Linux内核中,访问外设上的IOPort必须通过IOPort的寻址方式。而访问IOMem就比较罗嗦,外部MEM不能和主存一样访问,虽然大小上

4、不相上下,可是外部MEM是没有在系统中注册的。访问外部IOMEM必须通过remap映射到内核的MEM空间后才能访问。为了达到接口的同一性,内核提供了IOPort到IOMem的映射函数。映射后IOPort就可以看作是IOMem,按照IOMem的访问方式即可。  3.CPU是ARM或PPC或Unicore架构的情况:  在这一类的嵌入式处理器中,IOPort的寻址方式是采用内存映射,也就是IObus就是Membus。系统的寻址能力如果是32位,IOPort+Mem(包括IOMem)可以达到4G。  访问这类IOPort时,我们也可以用IOPort专用寻址方式。至于在对IOPort寻址时,内核

5、是具体如何完成的,这个在内核移植时就已经完成。在这种架构的处理器中,仍然保持对IOPort的支持,完全是i386架构遗留下来的问题,在此不多讨论。而访问IOMem的方式和i386一致。  RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址空间,外设I/O端口成为内存的一部分。此时,CPU可以象访问一个内存单元那样访问外设I/O端口,而不需要设立专门的外设I/O指令。 I/O端口编址方式         先有个概念,I/O端口是CPU对外部设备的抽象。对一个CPU来说,所有它所管理(或访问)的资源无非包括:  1.寄存器组。粗糙的划分通常包括通用寄存器组(x86中

6、就是你用的ex,bx等寄存器),特殊寄存器组(如标志寄存器,timer,interrupt等,当然这些设备你可以看作外部设备)。  2.存储器。粗糙的划分通常包括程序存储器,数据存储器。  3.外部设备。比如打印机,PCI桥,USB等等。另外上面timer,interrupt等等有时也按外部设备处理。 把这些资源统统放在一个大的集合中,就构成了CPU所管理的资源集。CPU管理这些资源时需要为这个集合中每个元素分配一个标志来区分。这个标志就是地址。 编码地址由下面几个要素组成: 地址={资源类别,资源大小};   对CPU指令来说,通常资源类别编码在指令码中(如i独立编址),也有编码在地址

7、码中(如统一编址),还有直接硬件区分(如哈佛结构的程序存储器与数据存储器分开)。比如x86的in,inp,outp指令,实际上指令码本身就编码有资源类别信息。资源大小编码在地址码中。  按照上面的模型,那么CPU所有资源都可以以地址:{资源类别,资源大小}来找到。  这里I/O端口就对应实际的物理设备,而I/O空间地址就是该物理设备对应的标志码及设备地址。可以这样说,I/OSpace代表所有I/O设备集合,而I/O端口是该集合中的一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。