2014-02-07 106 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

感謝您的精彩解說:) –

相關問題