2014-02-07 69 views
1

我使用“ioremap”映射Ti AM3359数据表中GPIO端口的地址。 代码运行良好。映射虚拟地址到物理地址的含义是什么?

问题:

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

2>如果以上情况属实,那么为什么数据表不能直接给出物理地址。

3>“ioremap”返回的物理地址在不同RAM的RAM不同的情况下会不同?

回答

1

至于你的第一个问题,你使用ioremap的原因是因为内核的地址空间不符合物理地址空间。您需要将物理页面映射到虚拟地址空间,以便能够解决它们。这是ioremap所做的。

至于你的第二和第三个问题,我不知道你的数据表给出或不给。 :)

通常情况下,我希望硬件数据表给出物理地址,除非物理地址必须被发现或通过总线特定的机制配置。你的实际指定是什么,如果不是这样的话?

您可能想要了解更多信息,请阅读this

+0

我们使用中的地址数据表作为ioremap的输入,所以它只能是虚拟地址?(实际上数据表中给出的地址总是偏移量) –

+0

不,这意味着它实际上是一个物理地址。 'ioremap'给你一个虚拟地址。是什么让你觉得它不是? – Dolda2000

+0

你是对的,我也证实了这一点,但事情是,为什么我们需要虚拟地址来访问任何硬件? –

1
  1. 因为内核虚拟地址,工作不是物理的人
  2. 在我的数据表有唯一的物理地址
  3. 据我所知的ioremap返回虚拟地址映射的物理地址
+0

感谢您的精彩解说:) –

相关问题