I/O端口 与 I/O内存

来源:互联网 发布:大码女装淘宝店 百度 编辑:程序博客网 时间:2024/04/27 10:12

    MIPS、ARM和PowerPC等平台的I/O和主存采用的是统一编址的方式,它们将I/O空间映射到内存,采用与内存相同的汇编指令(load和store)来读写设备,这种方式称为I/O内存;x86平台的I/O和主存采用的是独立编址的方式,CPU有专门的线路来访问I/O,而且有专门的汇编指令(in和out)来读写设备,这种方式称为I/O端口。

    Linux系统在各种平台(不管是MIPS、ARM、PowerPC,还是x86)上,都提供了文件/proc/ioports和/proc/iomem。可以cat这两个文件来查看I/O端口的分配情况和I/O映射到内存的空间范围。另外Linux还提供了相应的两个设备文件/dev/port和/dev/mem,可以读写这两个文件来访问相应的端口和内存。尽管MIPS等平台采用的是I/O内存的方式,但是也提供了ioports等文件,即可以通过函数inb()、outb()等同类函数来读写I/O端口,其实这些函数仅仅是个外壳,通过查看Linux内核源代码可以发现它们最终也是转换成readb()和writeb()来读写内存;对于x86平台,其inb()、outb()等同类函数是通过汇编指令in、out的形式来完成的。

      这部分内容可以查阅《Linux设备驱动程序 第三版》第9章的相关内容来深入学习。

本文来自:http://blog.csdn.net/lanshixiong/article/details/4647253