wince系統(tǒng)開發(fā)實驗三(20210320110805)_第1頁
wince系統(tǒng)開發(fā)實驗三(20210320110805)_第2頁
wince系統(tǒng)開發(fā)實驗三(20210320110805)_第3頁
wince系統(tǒng)開發(fā)實驗三(20210320110805)_第4頁
wince系統(tǒng)開發(fā)實驗三(20210320110805)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、wince系統(tǒng)開發(fā)實驗三Document number AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG 實驗三、 Windows C E 驅(qū)動開發(fā)一、實驗?zāi)康?、學(xué)會使用WinCE操作系統(tǒng)開發(fā)工具2、熟悉開發(fā)環(huán)境3、了解嵌入式系統(tǒng)驅(qū)動開發(fā)的基本思想和開發(fā)過程二、實驗內(nèi)容學(xué)習(xí)使用Platform Builder 4.2集成開發(fā)環(huán)境,建立流驅(qū)動程序。了解WinCE基本系統(tǒng)體系架構(gòu)了解WINDOWS CE系統(tǒng)設(shè)備驅(qū)動基礎(chǔ)知識和方法學(xué)習(xí)使用Platform Builder 4.2集成開發(fā)環(huán)境,建立流驅(qū)動程序三、預(yù)備知識C語言基本知識,設(shè)備驅(qū)動基礎(chǔ)知識和方法,WinCE基本系統(tǒng)體系架

2、構(gòu)。四、實驗設(shè)備及工具硬件:PC 一臺P3以上(內(nèi)存不小于384MB,安裝完工具硬盤空間不得小于 600M) 、 ARM9實驗箱(包含NETARM2410-S實驗板、JTAG仿真器、各種串口線、并口線、網(wǎng) 線、光盤等) 一臺。軟件:PC操作系統(tǒng)Win2000以上、ADS1. 2集成開發(fā)環(huán)境、Platform Builder 4.2版本、Source Insight3. 0。五、實驗原理及說明1、WinCE驅(qū)動程序架構(gòu)II前WinCE擁有兩種驅(qū)動架構(gòu)模型,一種是本機設(shè)備驅(qū)動,另一種是流接口設(shè) 備驅(qū)動。其中本機設(shè)備驅(qū)動已經(jīng)被Microsoft開發(fā)并山系統(tǒng)直接支持,山GWES (圖形窗口及事件子系統(tǒng)

3、)統(tǒng)一管理和加載;流驅(qū)動則是山WinCE設(shè)備管理器 來管理的。這種組織形式相對于UNIX體系來說是比較復(fù)雜的。本機設(shè)備驅(qū)動適合于集成到CE平臺的設(shè)備。例如電源驅(qū)動,它們已經(jīng)成為了 GWES的一部分,不表現(xiàn)為單個的DLL使用。這些驅(qū)動程序通常和系統(tǒng)有著較為 緊密的聯(lián)系,所以通常是和系統(tǒng)一起加載的。流設(shè)備驅(qū)動山于具有較好的可移植性和可擴展性,被設(shè)備管理器獨立岀來管理 統(tǒng)籌。在本實驗中,將以一個示例的流驅(qū)動演示程序來講述簡單驅(qū)動的工作。下面的圖3-1中較為清楚的顯示了單片形式存在的驅(qū)動和分層方式的驅(qū)動在 WinCE中的組織情況。圖3-1驅(qū)動在WmCE中的組織情況2、流驅(qū)動程序流驅(qū)動程序通過流驅(qū)動接口

4、函數(shù)和設(shè)備管理器進行數(shù)據(jù)交互,并通過文件的形 式來組織,這一點和Unix平臺是很類似的。它以動態(tài)鏈接庫形式存在,具有同一組接 口并調(diào)用同一個函數(shù)集的。流驅(qū)動面向的是各種各樣的外設(shè),主要的任務(wù)是把外設(shè)的使用 傳遞給應(yīng)用程序來使用。在WinCE中設(shè)備文件通常是保存在固定的路徑Windows U錄下,通 過注冊表機制來完成特殊的命名慣例。雖然流借口驅(qū)動程序具有普遍的特性, 但是我們?nèi)耘f可以使用不同的方法來實現(xiàn)它們。例如有些內(nèi)部設(shè)備的驅(qū)動程序 就是使用的流接口。另外盡管流接口程序通常是山設(shè)備管理器程序加載和卸載 的,但是有時候應(yīng)用程序也執(zhí)行加載和卸載的任務(wù)。應(yīng)用程序通過文件系統(tǒng)的 API來調(diào)用流接口函

5、數(shù),然后山流接口驅(qū)動程序調(diào)用本機驅(qū)動或者通過設(shè)備管 理器與系統(tǒng)內(nèi)核外圉設(shè)備通訊交互,最后直接驅(qū)動相關(guān)硬件執(zhí)行動作。3、流接口驅(qū)動程序的一般標準入口流接口驅(qū)動程序通常都具有如下的函數(shù),具有一個統(tǒng)一的操作標準如表3-1所 示:表3-1流接口驅(qū)動程序的函數(shù)函數(shù)名稱描述XXX.Close驅(qū)動程序關(guān)閉時候調(diào)用XXX.Open打開一個設(shè)備驅(qū)動時調(diào)用XXX.Demit設(shè)備管理器或者應(yīng)用程序卸載驅(qū)動時調(diào)用XXX.Init設(shè)備管理濡初始化設(shè)備時調(diào)用XXX.IOContro 1上層軟件進行10控制調(diào)用XXX.PowerDown系統(tǒng)掛起前調(diào)用XXX.PowerUp系統(tǒng)重新啟動時調(diào)用XXX.Read打開設(shè)備時候進行的

6、讀操作XXX.Wnte打開設(shè)備時候進行的寫操作XXX.Seek對設(shè)備抬針進行操作時凋用XXX.Remit設(shè)備重復(fù)打開時調(diào)用其中XXX代表驅(qū)動文件名,由驅(qū)動類型的3個大寫字母縮寫而成,規(guī)則由系統(tǒng) 約定。詳細規(guī)則請參考幫助文檔和MSDN的說明。了解了這些函數(shù)的功用,就可以開始著手建立起來一個最簡單的流驅(qū)動程序。 它的功能是向緩沖區(qū)中讀寫字符。六、實驗步驟1、建立模擬器工程運行Platform Builder,建立一個基于X86體系的模擬器。下面的驅(qū)動程序建 立都可以在仿真器中模擬實現(xiàn)。注意需要在Applications & Services Development 選項中選擇Active Temp

7、le Library(ATL), C libraries &Runtimes, Message Queuing(MSMQ), Microsoft Foundation Classes(MFC), Standard SDK for Windows CE. net這兒個選項,這樣可以確保將來調(diào) 試的驅(qū)動和調(diào)用的應(yīng)用程序具有足夠的庫和服務(wù)可以享用。詳細的建立過程和方法可以仿照實驗二里面的步驟來做,這里不再贅述。2、創(chuàng)建驅(qū)動程序工程在PB中新建一個工程,單擊菜單中的File選擇建立New Project or F訂e Name彈出如下圖3-2的對話框。圖3-2新建工程在這里選擇Project標簽選擇W

8、CE Dynamic-Link Library即WinCE DLL并在右 側(cè)輸入工程名和存放位置(會默認)。點擊“0K”確認。圖3-3生成DLL的類型在對話框中選擇生成DLL的類型,可以選擇An empty project來創(chuàng)建一個空的 dll,也可以選擇A simple Windows CE DLL project,創(chuàng)建一個簡單的WinCE動態(tài)鏈接 庫工程,這個工程只帶有簡單的DLL入門函數(shù)。A DLL that exports some symbols用來生成簡單的輸岀函數(shù)。點“Finish”完成創(chuàng)建。如圖3-3。創(chuàng)建完P(guān)B的主界面上會切換到該工程,如圖3-4所示。圖3-4工程根目錄再次點

9、擊File,選擇New Project or F訂e Name”,在向?qū)υ捒蛑羞x擇 Files 標簽,如下圖3-5所示。如圖3-5選擇File選擇建立C+ Source F訂e,同時添加文件名,存儲路徑并將文件添加到DLL工 程中。加入“windows, h”,“tchar.h”頭文件和動態(tài)鏈接庫的入口函數(shù)(標準函 數(shù))DllEntryPoint (),建立好一個簡單的動態(tài)鏈接庫的架子,添加相應(yīng)的處理。詳見各種 說明文檔。3、編寫驅(qū)動程序的代碼DWORD STR.Init(DWORD dwContext)DWORD dwReturn = 0;RETAILMSG (1,TEXT( wMYSTR

10、INGS:STR.Inittnv );memset (achBuffer, 0, BUFSI2E * sizeof (WCHAR);dwReturn = 1;return dwReturn;BOOL STR.Deimt (DWORD hDeviceContext)BOOL bReturn = TRUE;RETAILMSG(1, (TEXT(MYSTRINGS:STR_Deimttnn );return bReturn;DWORD STR_0pen (DWORD hDeviceContext,DWORD AccessCode,DWORD ShareMode)DWORD dwReturn = 0;

11、RETAILMSG (1,TEXT( “MYSTRIGS:STR_Opent);dwReturn = 1:return dwReturn;BOOL STR.Close(DWORD hOpenContext)BOOL bReturn = TRUE;RETAILMSG(1, CTEXT(MYSTRrGS:STR_Closetrr );return dwReturn;BOOL STR_IOControl(DWORD hOpenContext,DWORD dwfode,PBYTE pBufln,DWORD dwLenln,PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwA

12、ctualOut)BOOL bReturn = TRUE;RETAILMSG(1, (TEXT(MYSTRINGS:STR_IOControltrT );return bReturn;void STR_PowerDown (DWORD hDeviceContext)RETAILMSG(1, (TEXT(MYSTRINGS:STR_PowerDown);void STRPowerUp(DWORD hDeviceContext)RETAILMSG(1, (TEXT(MSTRINGS:STR.PowerUptn );DWORD STR.Read(DWORD hOpenContext,LPVOID p

13、Buffer,DWORD Count)DWORD darter = 0;RETAILMSG (1,TEXT( “MYSTRINGS:STR_Readtd );DWORD cbBuffer = wcslen ( achBuffer);dwReturn = min(cbBuffer, Count);wcsncpy(LPWSTR)pBuffer, achBuffer, dwReturn); return dwReturn;DWORD STR.Seek(DWORD hOpenContext,Long Amount,DWORD Type)DWORD dwReturn =0;RETAILMSG(1, (T

14、EXT(MYSTRINGS:STR_Seektnw ):Return dwReturn;DWORD STR.Write(DWORD hOpenContext,LPCVOID pSourcdBytes,DWORD NumberOfBytes)DWORD dwReturn =0;RETAILMSG(1, (TEXT(MYSTRINGS:STR_Writetnv );dwReturn = min(BUFSIZE, NumberOfBytes);wcsncpy (achBuffer, (LPWSTR) pSourceBytes, dwReturn);Return dwReturn;確定編寫完畢保存。如

15、果不想編寫,也可以直接拷貝光盤中的MyDriver. cpp文 件到工作目錄下。4、準備配置文件Def文件。復(fù)制光盤中的String. Def文件到工作目錄下。Reg文件。復(fù)制光盤中的StringReg. reg文件到工作口錄下。Cec文件。復(fù)制光盤中的MyDriver. cec文件到工作目錄下。Makefile文件和Sources文件。復(fù)制makefile和sources文件到工作U 錄下。這些文件是DLL工程編譯必須具備的配置文件,它們說明了關(guān)于驅(qū)動如何鏈 接,編譯路徑,和系統(tǒng)注冊等等重要的匸作,在編寫新的DLL時一般都需要進行改動其至 重寫。這里直接拷貝光盤中的文件來實現(xiàn)。有興趣的也可以

16、使用文本查看軟件(如UltraEdit32,WinHEX等)來打開這些文件,看看文件內(nèi)部是如何配置的。拷貝完畢后,在PB下導(dǎo)入CEC文件。將MyDriver. cec拷貝到PB當前工程口錄 下(模擬器口錄下),打開File菜單,選擇Manage Catalog Features彈出一 個屬性對話框,如圖3-6。圖3-6屬性對話框在右側(cè)按鈕中點擊Import,選中MyDriver. cec導(dǎo)入當前工程LI錄,然后單擊 “0K” 確認完成。導(dǎo)入方法和導(dǎo)入平臺BSP的方法是相同的。可以發(fā)現(xiàn)驅(qū)動被添加到工程組件窗口中,在組件上點擊右鍵,選擇Add to Platform, 完成系統(tǒng)的驅(qū)動添加。5、編譯內(nèi)核和實驗一的編譯方法一樣,點擊埜來實現(xiàn)編譯。特別注意現(xiàn)在是在使用模擬器,所以在編譯選項中應(yīng)該選中“EMULAT0R:X86 WIN32。編譯之前,在Build Option選項標簽中確保Enable CE Target Control System , uEnable Kernel DebuggernEnable KITL” 被選定,這些選項允許內(nèi)核向PB傳送調(diào)試信息。單擊“0K”確定。如圖3-7所示:圖3-7編譯6、加載驅(qū)動內(nèi)核編譯完畢后開始在模擬器下加載。單擊Target下面選擇Configue

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論