WinCE下驅動開發入門記錄 一

2021-04-22 10:56:15 字數 1990 閱讀 9794

這兩天時間完全泡在ce的驅動開發中,學習學習,感覺就是資料不好找,難入門難上手,象我這樣僅僅只有evc4的更是沒法除錯沒法跟蹤,困難還是挺多的。學習了兩天,現在感覺有那麼點意思了,記錄一下與大家分享。

首先說明一下,我可能仍然是個門外漢,因為以前基本沒做過和硬體相關的東西,這方面知識缺乏的要命,現在公司要求做個驅動出來,也只有硬著頭皮上了,學習 研究了兩天,基本掌握了一些有用的資訊,所以認為自己入門了,但僅從自己的感覺出發都可以說我只是窺見了冰山之一角,還有很多很多都不懂。上次的帖子裡面 介紹了一些當時收集到的比較有用的資料,那個pb我也試著下了,下了一兩天沒多少,公司網太破,那個ftp又不支援斷點續傳,可害苦了我了,乙個個的檔案 包100多m,一掉線就得重來,最後我乾脆放棄了。那個弟兄有的,乾脆打個包把**發給我好了,謝謝了先。

好,怎們切入正題。首先介紹一下我的驅動目標,目的是為了使在pda上執行的應用程式能夠通過usb口和我們這個外設通訊,可以傳送指令給外設,也要求從 外設獲取資料,因此我把它定位在流介面上,這就引出第乙個概念,流介面,應該說這裡所說的流介面是wince上驅動的一種,象串列埠啊這樣的可以用 createfile開啟的都屬於這個範疇。其關鍵在於1)實現***_系列的函式2)登錄檔中定義prefix和dll。其中***就是登錄檔中 prefix的值,比如串列埠就是「com」。而登錄檔中的dll就是你的驅動程式dll(wince下的驅動就是乙個dll),載入驅動的時候,會到你的 dll中去找***_系列的函式,所以你的dll一定要匯出這些函式符號。

***_init

***_deinit

***_open

***_close

***_read

***_write

***_seek

***_iocontrol

***_powerdown

***_powerup

經過測試,其中前六個是必須實現且匯出的,否則是不能夠成功載入的。

好,先介紹了一些關於流介面驅動的相關知識,這部分在網上還是能夠找到不少資料的,我就不多說,回到我要開發的驅動上,說到底我這個還首先是個usb裝置,

被識別之後才能將它驅動成乙個流裝置。

說到usb驅動,就要先介紹一下usb驅動載入過程了。當usb裝置接到主機(usb host,因此你的pda必須是能夠作為usb host使用的)上時,系統就會根據它的資訊去從登錄檔裡查詢它的驅動相關資訊,在hklm/drivers/usb/loadclients下面會有一 些主鍵group1_id/group2_id/group3_id/deviceid,而deviceid下面有乙個字串 dll=driverfile.dll

注意,其中group1_id,group2_id,group3_id分別表示什麼,以及其匹配的優先級別,可以在《windowsce 驅動開發指南》一書中usb驅動開發一章去詳細研究。

如果找到匹配的登錄檔資訊,系統就會載入driverfile.dll,否則就會提示使用者輸入乙個驅動名稱。

那麼載入dll的時候會有些什麼動作呢?驅動程式dll和普通的dll是否具備不同的入口點呢?

先回答第二個問題,答案是否定的,其入口點和普通的dll沒有區別。但是載入的過程就不那麼簡單了。你可以理解系統已經作了一些事情,使得你可以用乙個普通的dll來作為驅動程式,但是顯然,你必須實現系統所要求的介面函式。

對於usb驅動程式來說,有這麼幾個介面函式是必須實現且匯出的:

bool usbdeviceattach(usb_handle hdevice,

lpcusb_funcs lpusbfuncs,

lpcusb_inte***ce lpinte***ce,

lpcwstr szuniquedriverid,

lpbool facceptcontrol,

lpcusb_driver_settings lpdriversettings,

dword dwunused);

bool usbinstalldriver(lpcwstr szdriverlibfile);

bool usbuninstalldriver();

下班了,明天再寫。 :p

WinCE下驅動開發入門記錄 三

之前公司由於專案需要讓我研究pda上的wince系統下的usb外設驅動開發,剛剛有點入門的感覺結果又終止了這個計畫,我也一直在鬱悶這個事情,不想現如今,機會又來了。我又開始了驅動開發的研究學習之旅,這裡將繼續記錄我的心得體會。之前的入門記錄 二 已經講到了usbdeviceattach函式,原形這裡...

WINCE下的USB驅動開發

首先usb載入式流介面驅動要點分析 為了支援不同型別的外圍裝置,wince平台提供了具有定製介面的流介面驅動程式模型。因為大部分usb外圍裝置由於功能性更適合流介面驅動的結構,所以一般都採用載入式流介面驅動程式模型來開發usb裝置驅動程式。1 usb系統結構分析 wince下usb系統軟體由兩層組成...

WINCE下的USB驅動開發

首先usb載入式流介面驅動要點分析 為了支援不同型別的外圍裝置,wince平台提供了具有定製介面的流介面驅動程式模型。因為大部分usb外圍裝置由於功能性更適合流介面驅動的結構,所以一般都採用載入式流介面驅動程式模型來開發usb裝置驅動程式。1 usb系統結構分析 wince下usb系統軟體由兩層組成...