我使用「ioremap」映射Ti AM3359數據表中GPIO端口的地址。 代碼運行良好。映射虛擬地址到物理地址的含義是什麼?
問題:
1>的問題是,爲什麼我們需要映射虛擬地址到物理地址的? 是因爲物理地址是我們想要訪問的硬件的真實地址嗎?
2>如果以上情況屬實,那麼爲什麼數據表不能直接給出物理地址。
3>「ioremap」返回的物理地址在不同RAM的RAM不同的情況下會不同?
我使用「ioremap」映射Ti AM3359數據表中GPIO端口的地址。 代碼運行良好。映射虛擬地址到物理地址的含義是什麼?
問題:
1>的問題是,爲什麼我們需要映射虛擬地址到物理地址的? 是因爲物理地址是我們想要訪問的硬件的真實地址嗎?
2>如果以上情況屬實,那麼爲什麼數據表不能直接給出物理地址。
3>「ioremap」返回的物理地址在不同RAM的RAM不同的情況下會不同?
至於你的第一個問題,你使用ioremap
的原因是因爲內核的地址空間不符合物理地址空間。您需要將物理頁面映射到虛擬地址空間,以便能夠解決它們。這是ioremap
所做的。
至於你的第二和第三個問題,我不知道你的數據表給出或不給。 :)
通常情況下,我希望硬件數據表給出物理地址,除非物理地址必須被發現或通過總線特定的機制配置。你的實際指定是什麼,如果不是這樣的話?
您可能想要了解更多信息,請閱讀this。
感謝您的精彩解說:) –
我們使用中的地址數據表作爲ioremap的輸入,所以它只能是虛擬地址?(實際上數據表中給出的地址總是偏移量) –
不,這意味着它實際上是一個物理地址。 'ioremap'給你一個虛擬地址。是什麼讓你覺得它不是? – Dolda2000
你是對的,我也證實了這一點,但事情是,爲什麼我們需要虛擬地址來訪問任何硬件? –