對外設進行 i/o 操作實際上也就是讀寫外設的暫存器,而我們通常使用的x86或者arm處理器在硬體上決定了wince系統啟動mmu後,os無法直接訪問實體地址,因此需要做一些工作來實現i/o操作.
其次,如果是操作通過匯流排掛接的 i/o 或者儲存器,必須先把匯流排位址轉化成 cpu 上的系統位址,再做實體地址到虛擬位址的對映。這裡需要查 cpu 的 datasheet ,找出所要操作的i/o位址.先呼叫 haltranslatebusaddress( )把匯流排位址轉化成cpu上的系統位址, 再呼叫 mmmapiospace 函式實現虛實對映;也可以使用 transbusaddrtovirtual
()直接把匯流排上的位址轉化成系統的虛擬位址。
第三,在一般的應用程式中訪問
i/o是訪問它的快取段虛擬位址,而驅動中必須訪問無快取段虛擬位址。簡單來說無快取段虛擬位址
=快取段虛擬位址
+0x20000000
。總結起來,如果是
wince
核心(如hal)訪問外部
i/o,只需要在
oemaddresstable
中定義實體地址到虛擬位址間的對映關係就可以了;如果是應用程式或者驅動要訪問
i/o,要做的工作包括:1。在
cpu實體地址和虛擬位址間做乙個動態對映,
2 。對虛擬位址進行操作。
Windows CE 下I O操作基礎
對外設進行 i o操作實際上也就是讀寫外設的暫存器,而我們通常使用的x86或者arm處理器在硬體上決定了wince系統啟動後,無法直接訪問實體地址,因此需要做一些工作來實現i o操作.首先要理解 windowsce 下的位址對映機制。cpu硬體上的區別導致位址對映也不同。和 x處理器,不採用 直接在...
Windows CE 5 0待機介面定製 概述
windows ce 5.0的預設介面如下 為了所產品有自己的特色,對windows ce 5.0的標準介面進行了修改,示例如下 開始選單中的內容看不清楚,但應該可以知道其中的內容已經被修改 定製過程,主要是對 wince500 public shell oak中源 與資源的修改。具體涉及到 1 工...
基礎IO操作(庫函式)
常用的檔案操作 fopen 檔名,開啟方式 開啟乙個檔案 開啟方式 r 開啟唯讀檔案,檔案必須存在 r 開啟可讀寫的檔案,檔案必須存在 w 開啟只寫檔案,若檔案不存在則建立檔案,檔案存在則清空原檔案內容 w 開啟可讀可寫檔案,若檔案不存在則建立檔案,檔案存在則清空原檔案內容 a 以附加的方式開啟只寫...