gpio 驅動程式
在wince下能夠直接訪問的都是虛擬位址,不能直接訪問gpio埠,因此我們首先需要將gpio口的物理位址對映到虛擬位址上來。
分別使用virtualalloc和virtualcopy這兩個函式來完成對映!
這兩個函式的原型:
lpvoid virtualalloc( lpvoid lpaddress
, dword dwsize,
dword flallocationtype
, dword flprotect
); bool virtualcopy( lpvoid lpvdest
, lpvoid lpvsrc
, dword cbsize
, dword fdwprotect
); 如果這兩個函式執行成功,哪麼virtualalloc將返回乙個指標,使用這個指標我們就可以直接訪問gpio,通過讀寫相關位址暫存器,來控制gpio埠!
v_piopregs = (volatile iopreg *)virtualalloc(0, sizeof(iopreg), mem_reserve, page_noaccess);
if (v_piopregs == null)
else
}if (!retvalue)
v_piopregs = null;
}//else retailmsg (1, (text("::: pbt_initializeaddresses - success\r\n") ));
return(retvalue);
v_piopregs是乙個
iopreg結構,在
s2410.h中定義, //
// registers : i/o port
#define iop_base 0xb1600000 // 0x56000000
typedef struct iopreg;
0 給主人留下些什麼吧!~~
WinCE驅動程式的分類
最近有一些同學發郵件問我,驅動除錯助手到底能動態載入哪些驅動,為什麼在載入usb裝置驅動時總是失敗。要解釋這個問題,首先得弄清楚wince中驅動的相關概念。本文將主要介紹wince下驅動程式的分類。驅動程式是介於作業系統和裝置之間的乙個 層,它的主要作用是為作業系統提供乙個介面,以操作不同的硬體,包...
WinCE驅動程式的分類
發 布 時 間 2009 04 29 來 源 來自網路 作 者 匿名 瀏 覽 最近有一些同學發郵件問我,驅動除錯助手到底能動態載入哪些驅動,為什麼在載入usb 裝置驅動時總是失敗。要解釋這個問題,首先得弄清楚wince 下驅動程式的分類。驅動程式是介於作業系統和裝置之間的一 個 層,它的主要作用是為...
WinCE驅動程式的分類
最近有一些同學發郵件問我,驅動除錯助手到底能動態載入哪些驅動,為什麼在載入usb裝置驅動時總是失敗。要解釋這個問題,首先得弄清楚wince中驅動的相關概念。本文將主要介紹wince下驅動程式的分類。驅動程式是介於作業系統和裝置之間的乙個 層,它的主要作用是為作業系統提供乙個介面,以操作不同的硬體,包...