【问题标题】:what is the meaning of mapping virtual address to physical address?将虚拟地址映射到物理地址是什么意思?
【发布时间】:2014-02-07 09:12:29
【问题描述】:

我正在使用“ioremap”来映射 Ti AM3359 数据表中的 GPIO 端口的地址。 代码运行良好。

问题:

1> 问题是,为什么我们需要将虚拟地址映射到物理地址? 是不是因为物理地址才是我们要访问的硬件的真实地址?

2>如果上面是真的,为什么数据表不直接给出物理地址。

3> “ioremap”返回的物理地址在不同RAM数量的Board中是否会有所不同?

【问题讨论】:

    标签: linux memory-management linux-device-driver ioremap


    【解决方案1】:

    关于你的第一个问题,你之所以使用ioremap是因为内核的地址空间与物理地址空间不对应。您需要将物理页面映射到虚拟地址空间才能完全寻址它们。这就是ioremap 所做的。

    至于您的第二个和第三个问题,我不知道您的数据表提供或不提供什么。 :)

    通常,我希望硬件数据表提供物理地址,除非物理地址必须通过总线特定机制找到或配置。如果不是这样,您的实际指定的是什么?

    您可能想阅读this 了解更多信息。

    【讨论】:

    • 我们使用datasheet中给出的地址作为ioremap的输入,所以只能是虚拟地址?(其实data sheet中给出的地址都是偏移量)
    • 不,这意味着它实际上是一个物理地址。 ioremap 给你一个虚拟地址。是什么让你认为不是?
    • 你是对的,我也验证了这一点,但问题是我们为什么需要虚拟地址来访问任何硬件?
    • 因为您编写的所有代码都将在 MMU 的虚拟端运行。由于任何配备 MMU 的 CPU 的基本执行模型,您的代码处理的地址只是虚拟地址。如果您不通过 MMU 映射您的物理页面,您将无法访问它们。这就是 MMU 的作用。
    【解决方案2】:
    1. 因为内核在虚拟地址而不是物理地址上运行
    2. 在我的数据表中只有物理地址
    3. afaik ioremap 返回映射您的物理地址的虚拟地址

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2013-03-10
      相关资源
      最近更新 更多