WinCE OAL中的Cache操作函式介紹

2021-04-25 01:03:48 字數 1747 閱讀 9425

在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 檔案中找到相關的操作函式,這些函式用來虛擬位址與實體地址之間的轉換,它們...