WinCE OAL中的Memory函式介紹

2021-05-12 13:15:57 字數 866 閱讀 8867

在bsp開發中經常會用到實體地址與虛擬位址的轉換,一般都是基於實體地址獲得相應的虛擬位址來訪問硬體。在wince6.0中,可以在wince600/platform/common/src/inc/oal_memory.h檔案中找到相關的操作函式,這些函式用來虛擬位址與實體地址之間的轉換,它們都是基於oemaddresstable表的。也就是說,首先要在oemaddresstable中定義虛擬位址到實體地址之間的對映關係,然後才能使用這些函式。這些函式可以在oal中使用,也可以在eboot中使用,有時也會在驅動中使用。

函式都比較簡單,介紹一下:

void* oalcatoua(void *ca):

該函式根據cached的虛擬位址,返回uncached的虛擬位址

void* oalpatoca(uint32 pa):

該函式根據硬體實體地址,返回cached的虛擬位址

void* oalpatoua(uint32 pa):

該函式根據硬體實體地址,返回uncached的虛擬位址

void* oalpatova(uint32 pa,  bool cached):

該函式根據硬體實體地址,返回虛擬位址,虛擬位址是否為cached取決於引數cached,true表示cached,false表示uncached

void* oaluatoca(void *ua):

該函式根據uncached的虛擬位址,返回cached的虛擬位址

uint32 oalvatopa(void *va):

該函式根據虛擬位址,返回相應的硬體實體地址

函式用起來很簡單,無非是在實體地址,cached/uncached的虛擬位址之間轉換。但是實體地址必須在oemaddresstable中定義才可以。所以說白了,也是一種記憶體靜態對映。

WinCE OAL中的中斷處理

這張圖想必很多人都見過,主要這張圖太經典了,所以還是貼出來嘮叨幾句,硬體中斷產生以後,會導致核心isr的執行,然後由oal中的isr來處理相應的中斷,最後導致相對應的ist執行完成真正的中斷處理。所以在wince中,中斷處理由isr和ist共同完成。isr主要完成中斷源的確定,遮蔽該中斷並返回給核心...

WinCE OAL中的Memory函式介紹

在 bsp開發中經常會用到實體地址與虛擬位址的轉換,一般都是基於實體地址獲得相應的虛擬位址來訪問硬體。在 wince6.0 中,可以在 wince600 platform common src inc oal memory.h 檔案中找到相關的操作函式,這些函式用來虛擬位址與實體地址之間的轉換,它們...

WinCE OAL中的RAM定製函式

相關網帖 1 wince oal中的memory函式介紹 2 oemaddresstable介紹 在wince系統中,kernel是如何使用記憶體的,如何知道記憶體的大小?是通過config.bib檔案的描述,我們會在config.bib檔案中memory段定義wince核心所占用ram的起始位址和...