关于IO ports和IO memory
来源:互联网 发布:mac升级bootcamp 6.0 编辑:程序博客网 时间:2024/06/04 17:45
关于IO ports和IO memory
在IA32 Manuals-Basic Architecture中, 对于IO有二种寻址方式:1, IO Port(IO Address Space); 2,
Memory-Mapped IO.
1) IO Port方式.
使用体系结构相关的in/out指令来访问IO端口,并且能够保证每一条指令都在下一条之前完成,也就是in/out
指令是自然有序的。 一共有2^16(64K)个单独的8-bit端口,编号从0到FFFFH(其中从0F8H到0FFH被保留),任意两个连续
的8bit端口可以被看做是一个16bit端口,同样,任意4个连续的8bit端口可以被看做是一个32bit端口。
2) IO Address Space方式.
可以使用任意的mov、and、or等指令来访问,就象访问主存一样。
对于Linux内核来说,若想访问io ports,需要request_region来分配io ports, 返回之后的struct resource
就包含了start和end,在此之间的区域可以用in/out指令来访问。 /proc/ioports记录了目前已分配的所有IO端口。
对memory-mapped io来说,需要request_mem_region来分配IO内存(也就是外设的寄存器或者存储体),它也是
返回一个struct resource结构,其中有start和end字段,可以用来作为ioremap函数的参数。 对request_mem_region分配
的IO内存进行了ioremap之后,就可以在程序中象访问普通内存区那样来访问它们了。
IO Ports和IO Momory之间的转换,可以用ioport_map/ioport_unmap来实现。
- 关于IO ports和IO memory
- System.IO.Ports.SerialPort
- io port / io memory
- 关于io和nio
- powerpc memory和io访问原理
- System.IO.Ports.SerialPort 应用-没完成
- 关于IO和NIO区别
- 关于IO。。。
- 关于IO
- 关于IO
- 关于IO
- 关于IO
- 关于IO
- 关于IO
- Linux下memory和IO的读写工具
- Memory,CPU,IO Debug Tools
- 操作串口通信类(IO.Ports)-SerialPort
- 关于Blocking IO,non-Blokcing IO,async IO的区别和理解
- Linux下读硬盘序列号的程序
- ASP.NET WebService 程序执行权限问题解决
- Cstring转换成String
- 一文讲清楚Windows Mobile和Wince(Windows Embedded CE)的字符集问题
- LAMP安装脚本 未完待续...
- 关于IO ports和IO memory
- 使用Autotools生成Makefile
- JAVA性能优化及垃圾回收机制
- magento -- 搜索功能的后台管理技巧
- .net
- Context的作用
- 关于ORACLE分区表的概念及操作
- c++多字节与宽字节字符串转换(windows平台)
- EFI Shell 命令参考