WinCE OAL中的Memory函式介紹

2021-04-26 04:37:59 字數 1441 閱讀 2388

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

WinCE OAL中的RAM定製函式

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