【发布时间】:2012-03-28 02:39:38
【问题描述】:
我已经了解了端口映射 IO 和内存映射 IO 之间的区别,但我无法弄清楚在现代操作系统(windows 或 linux)中如何实现内存映射 Io
我所知道的是,物理内存的一部分被保留用于与硬件通信,并且有一个 MMIO 单元参与处理总线通信和其他与内存相关的事情
驱动程序如何与底层硬件通信?驱动程序会使用哪些功能?与视频卡通信的地址是固定的,还是在使用它们之前有某种“协议”?
我还是比较迷茫
【问题讨论】:
-
让我们看看我是否得到它(在 linux 中):1)我在硬件生产商告诉我的地址上分配了一个内存 IO 区域 2)我使用 ioremap 将其从物理地址转换为虚拟地址地址(所以我想这解决了分段和分页) 3)我使用 iowrite/ioread 和类似的读取和写入该区域。这是正确的吗?
-
没错,使用后记得释放分配内存区域。
标签: operating-system linux-kernel kernel device-driver