如何解决Io 地址是如何分配的?
最近我一直在研究内存映射 IO 和端口映射 IO(又名 IO 映射 IO)。关于端口映射 IO,我正在努力理解 IO 端口和 IO 地址之间的区别。如果有人能澄清差异,那将是一个巨大的帮助。
在计算机上,每个 IO 控制器(AKA 外设)或 IO 设备都有一个 IO 地址,范围从 DMA、GPU、网卡、声卡等......我知道 x86-64 IBM 兼容 PC(漂亮几乎每台未嵌入的台式机/笔记本电脑)都有 IBM PC 标准,用于定义哪些地址范围适用于哪些设备。例如,如果 BIOS 正在寻找键盘,它会搜索包含键盘地址的 IO 地址范围。这个 IBM PC 标准存储在哪里?如果有人能告诉我或引导我找到一些文档,那就太好了!
哪些设备有 IO 地址?我知道 Io 控制器获得 IO 地址,但是从它们分支出来的设备也获得地址吗?让我澄清一下这个问题。
假设我有一个 USB 控制器和从它们分出的 3 个 USB 端口。我知道 USB 控制器有一个 IO 地址,但是从它们分支出来的 USB 端口会有 IO 地址吗?如果我在控制器端口连接一个USB扩展集线器,集线器和它的USB端口是否都有IO地址?
还有一件事。这些 IO 地址是否由制造商预设,因为他们知道它是什么类型的设备并且他们可以将 IO 地址与 IBM PC 标准对齐?或者 BIOS(或其他实体)是否会根据设备类型分配 IO 地址,然后根据 IBM PC 标准分配适当的地址?
类 UNIX 系统中的设备驱动程序如何知道特定设备的 IO 地址(对于端口映射 IO)或内存地址(对于内存映射 IO)是什么?
几乎所有这些问题实际上都涉及内存映射和端口映射 IO。
一些清晰度会很有帮助! 谢谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。