【问题标题】:Protected mode and physical addresses保护模式和物理地址
【发布时间】:2013-10-27 20:05:31
【问题描述】:

当 CPU 处于保护模式时,它期望所有地址都是虚拟的。内核驻留在物理内存中,并将物理地址用于其内部目的。在开发驱动程序驱动程序框架例程时,必须访问具有特定物理地址的某些内存位置(关于该设备的内存映射地址)。那么什么机制允许在保护模式下使用物理地址呢?

【问题讨论】:

  • 我问的有点不对。我的意思是这个问题的硬件方面,而不考虑某些驱动程序框架的细节。 CPU 不能在保护模式下使用物理地址,所以它会向 DMA 控制器发送命令来进行数据传输吗?如果 DMA 使用物理地址,则它承认它的存在(事实上,当 DMA 管理 RAM 和端口访问时,CPU 可以执行一些计算)。除了 Linux 内核源代码之外,还有关于使用 DMA 的文档吗?

标签: driver cpu protected


【解决方案1】:

驱动程序框架或 API 会告诉您这些。我一直在使用 windriver (http://www.jungo.com/) 编写 PCI 驱动程序。当你使用这个 API 分配内存时,它会给你两个地址,一个是对应用程序有效的虚拟地址,另一个是你给设备的物理地址。其他框架/api 很可能会做类似的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2014-09-14
    • 2015-12-26
    相关资源
    最近更新 更多