Windows CE 下I O操作基礎

2021-05-01 04:19:36 字數 1175 閱讀 1180

對外設進行

i/o操作實際上也就是讀寫外設的暫存器,而我們通常使用的x86或者arm處理器在硬體上決定了wince系統啟動後,無法直接訪問實體地址,因此需要做一些工作來實現i/o操作.

首先要理解

windowsce

下的位址對映機制。

cpu硬體上的區別導致位址對映也不同。mips和sh

x處理器,不採用mmu,直接在cpu和核心裡定義

1g的實體地址;而x86和arm帶有

mmu單元,在

oemaddresstable

中定義實體地址到虛擬位址間的對映關係或者是os啟動後呼叫

和來實現從虛擬位址到實體地址的靜態對映.經過靜態對映的位址,可以由作業系統核心用於

isr訪問裝置。如果我們要在應用程式中訪問外設,必須在實體地址和虛擬位址間建立動態對映關係,我們可以使用

virtualalloc

和virtualcopy

(或者直接呼叫

mmmapiospace

函式)來實現。

其次,如果是操作通過匯流排掛接的

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 CE5 0 下I O操作基礎 1

對外設進行 i o 操作實際上也就是讀寫外設的暫存器,而我們通常使用的x86或者arm處理器在硬體上決定了wince系統啟動mmu後,os無法直接訪問實體地址,因此需要做一些工作來實現i o操作.其次,如果是操作通過匯流排掛接的 i o 或者儲存器,必須先把匯流排位址轉化成 cpu 上的系統位址,再...

多執行緒下的IO操作

今天考慮優化專案中檔案操作,專案中有許多批量刪除檔案的操作,當檔案很多時,刪除操作會比較費時 1s 2s的時間也顯得有點慢了 更何況10s以上,想要通過多執行緒來同時處理多個檔案的刪除,在程式中使用了threadpool和parallel想要加速刪除,但是效果並沒有預期的明顯,總耗時甚至還有所提公升...

Windows CE下AD驅動設計與實現

本文 http developer.51cto.com art 200907 136858.htm 引言 windows ce.net 是乙個32位 多工 多執行緒的完全搶占式的實時作業系統。它提供了眾多強大工具適應於快速構建新一代記憶體少 體積小的智慧型裝置,如工業控制器 手持式裝置等。該系統的特...