0
我對ARM引導程序有些疑問。爲什麼要在引導加載程序中啓用/禁用緩存?
- Bootloader中的緩存是啓用還是禁用?
- 爲什麼要在引導加載程序中啓用/禁用緩存?會發生什麼?
- 誰將在Bootloader中管理緩存?在什麼基礎上進行緩存輸入?
我對ARM引導程序有些疑問。爲什麼要在引導加載程序中啓用/禁用緩存?
中啓用或禁用引導程序緩存?
這一切都取決於引導加載程序的體系結構。但一般來說,啓用緩存(特定的指令緩存)允許「快速」執行。因此,如果boot-loader需要重複執行某些任務,例如破譯一個二進制等,然後'快速'執行將有所幫助。
爲什麼緩存需要在引導加載程序中啓用/禁用?會發生什麼?
這個問題的第一部分已經在上面回答了。
如果緩存被禁用,當然引導加載程序將表現得像一個正常的固件/裸機代碼。
但是,如果啓用,則引導加載程序需要向MMU提供正確的映射表,並且所有注意事項(例如SFR區域)都不應啓用緩存等。
誰將在Bootloader中管理緩存?在什麼基礎上進行緩存輸入?
緩存由MMU管理。但如上所述,映射需要由boot-loader或任何執行實體提供給MMU,以便根據地址範圍啓用或禁用緩存。 ARM爲內存映射提供了多級粒度,因此根據需要可以定義內存段,並可以精確控制緩存的行爲。
你可以參考下面的線程可能會幫助你http://stackoverflow.com/questions/21262014/arm-bootloader-disable-mmu-and-caches – vishnu