在oal
中有兩個和
cache
相關的函式,乙個是
oemarmcachemode
,另乙個是
oemcacherangeflush
函式,這兩個函式在
arm處理器上是必須實現的。
oemarmcachemode
函式用於設定基於
arm處理器頁表的
cache
模式,主要是設定
mmu頁表中的c,
b控制位,達到控制相應的儲存空間的緩衝特性的目的。一般預設c和
b控制位都被設定為
1,表示對
write-through
模式和write-back
模式採用
cache
和write buffer
技術。函式實現如下:
leaf_entry oemarmcachemode
mov r0, #0x0c
該函式已經被實現,在
platform
目錄下可以被搜尋到。預設情況下將c,
b都設定為
1,將值儲存在
r0暫存器中。
oemcacherangeflush
用於重新整理某個位址範圍內的
cache
和tlb
,會被wince
核心呼叫。在
oeminit
函式被核心呼叫以後,核心會呼叫該函式重新整理整個指令和資料
tlb。
函式定義如下:
void oemcacherangeflush(lpvoid paddr, dword dwlength, dword dwflags)
paddr
:要被重新整理的虛擬起始位址
dwlength
:被重新整理的大小
dwflags
:重新整理標記位,如下:
cache_sync_writeback
:寫回被
cache
的資料
cache_sync_discard
:寫回並重新整理被
cache
的資料
cache_sync_instructions
:重新整理所有的指令
cache資料
cache_sync_flush_i_tlb
:重新整理指令
tlb
cache_sync_flush_d_tlb
:重新整理資料
tlb
cache_sync_flush_tlb
:重新整理指令和資料
tlb
cache_sync_l2_writeback
:寫回二級
cache資料
cache_sync_l2_discard
:寫回並重新整理二級
cache資料
cache_sync_all
:做上面所有的操作
該函式也已經被實現,在
」platform/common」
目錄下可以搜尋到。一般來說上面兩個函式不需要再被實現了,我想只要知道這兩個函式,了解一下就可以了。
WinCE OAL中的中斷處理
這張圖想必很多人都見過,主要這張圖太經典了,所以還是貼出來嘮叨幾句,硬體中斷產生以後,會導致核心isr的執行,然後由oal中的isr來處理相應的中斷,最後導致相對應的ist執行完成真正的中斷處理。所以在wince中,中斷處理由isr和ist共同完成。isr主要完成中斷源的確定,遮蔽該中斷並返回給核心...
WinCE OAL中的Memory函式介紹
在bsp開發中經常會用到實體地址與虛擬位址的轉換,一般都是基於實體地址獲得相應的虛擬位址來訪問硬體。在wince6.0中,可以在wince600 platform common src inc oal memory.h檔案中找到相關的操作函式,這些函式用來虛擬位址與實體地址之間的轉換,它們都是基於o...
WinCE OAL中的Memory函式介紹
在 bsp開發中經常會用到實體地址與虛擬位址的轉換,一般都是基於實體地址獲得相應的虛擬位址來訪問硬體。在 wince6.0 中,可以在 wince600 platform common src inc oal memory.h 檔案中找到相關的操作函式,這些函式用來虛擬位址與實體地址之間的轉換,它們...