2015-11-17 66 views
0

我使用Linaro在Juno板r1上提供的Trusted Firmware Image(LSK和Android文件系統)。就我而言,我只想在EL3中進行一些簡單的測試,例如讀取特定的內存。爲了使事情更容易,我沒有做任何事情,直到系統完全啓動。然後我加載一個發送SMC指令的內核模塊,SMC異常將在BL3-1中由自定義處理程序處理。在處理程序中,我禁用了EL3的MMU,並試圖直接訪問物理地址。但是我發現如果物理地址大於0xffffffff(4G),我得到的內容將全部爲0.低於0xffffffff的物理地址完美工作。如果我將該物理地址映射到小於0xffffffff的虛擬地址(Linaro的EL3僅支持低於0xffffffff的虛擬地址),它也可以工作。 那麼,爲什麼我在EL3禁用MMU之後無法獲得大於0xffffffff的物理地址的正確內容?如何在juno板上訪問Linaro提供的Trusted固件中大於4G的物理地址

有沒有人知道細節? 非常感謝您的幫助!

回答

0

股票Juno固件設置TrustZone控制器,從而從0x0ff0000000x0ffffffff的16MB DRAM被保留給安全世界,其餘僅爲非安全。特定的TZC配置使非安全區域讀取爲零,並忽略寫入安全訪問而不是中止寫入。

因此,這並不是說你不能訪問物理地址本身高於4GB,它只是在那裏發生的唯一的事情是DRAM,這是安全世界明確拒絕訪問的東西多數的。

固件源的相關部分can be found here

+0

非常感謝。這樣可行。我還有一個關於內存映射的問題。我不認爲禁用MMU是訪問某些物理內存的完美想法,因此我試圖動態地將一些內存映射區域添加到轉換表中。但不幸的是,我沒有得到一個正確的方法來做到這一點。你知道當我在EL3中時是否可以動態地將一些內存映射區域添加到翻譯表中? –

相關問題