作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
什么是i/o端口,i/o端口地址?当驱动程序想要与硬件通信时,例如并行端口 (0x378)。那个端口地址(0x378)是RAM地址还是别的?
最佳答案
这最终取决于系统的架构。
x86 处理器及其后代的 8080(最终是 8008)使用一种称为 I/O 映射
的方案,其中来自处理器的特殊控制信号指示对 I/O 的访问端口而不是常规的内存位置。此类访问必须使用相应的特殊指令。
许多其他处理器 - 尤其是当今在移动和嵌入式设备中广泛使用的 ARM 内核 - 遵循不同的设计传统,其中 I/O 端口在与普通端口相同的统一地址空间内内存映射
内存。这意味着它们显示为常规内存位置(在特殊的保留地址区域中)并且可以使用相当正常的指令进行访问。然而,需要注意的是,有时只允许特定宽度的访问——例如,32 位嵌入式 ARM 芯片可能需要使用 16 位内存访问指令访问特定端口,即使保留了完整的 32 位总线字
最终,有关特定处理器的信息可在其数据表或程序员手册中找到。具有连接片外外围设备的总线的系统 - 特别是桥接总线 - 可能会增加额外的限制。
关于linux - 什么是 I/O 端口,I/O 端口地址?该地址是RAM的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888520/
我是一名优秀的程序员,十分优秀!