開發(fā)手冊 - 圖文-_第1頁
開發(fā)手冊 - 圖文-_第2頁
開發(fā)手冊 - 圖文-_第3頁
開發(fā)手冊 - 圖文-_第4頁
開發(fā)手冊 - 圖文-_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 WINDOWS CE開發(fā)手冊基于ARM9AT920芯片S3C2410文檔編號:項目參考編號:支持單位:香港理工大學ISM研究院清華大學電工電子技術中心版權所有嚴禁翻印 2007年3月第1章Windows CE簡介 (41.1智能設備與微軟嵌入式系統(tǒng) (41.2 Windows CE (4第2章 Windows CE開發(fā)平臺的構建與配置 (72.1 目標設備平臺介紹 (72.2 操作系統(tǒng)開發(fā)平臺 (82.3應用程序開發(fā)平臺 (12第3章Windows CE操作系統(tǒng)創(chuàng)建 (163.1創(chuàng)建操作系統(tǒng)平臺設計 (163.2 目標平臺的下載 (22第4章 WINDOWS CE驅動程序開發(fā) (314.1

2、驅動設備的分類 (314.2 流接口設備驅動 (32第5章 WINDOWS CE應用程序開發(fā) (415.1 本地應用程序與可托管應用程序 (415.2本地應用程序開發(fā) (425.3 智能設備托管應用程序的開發(fā) (46附錄:光盤內容清單 (49本頁特意留作空白頁IDETCO大學計劃方案第1章Windows CE簡介1.1 智能設備與微軟嵌入式系統(tǒng)隨著計算機技術以及信息技術不斷成熟與發(fā)展,人們的消費需求和消費心理都發(fā)生了巨大變化,人們已經(jīng)不再一味追求PC的大容量和高速度而是轉而設法將計算機應用與日常生活的方方面面,追求個性化的產品和消費.近幾年以來一軟硬件組成為顯著特征,以消費電子類產品為主導的智

3、能設備以超乎人們想象的速度獲得了前所未有的發(fā)展,在這個過程中,微軟公司也是首當其沖.一臺智能設備從本質上講仍然是一臺計算機,因為它具有一般計算機的典型特征,它仍然由軟件和硬件組成,在智能設備中既有CPU,存儲器,系統(tǒng)時鐘和外部接口等,也有OS和應用軟件.和一般的通用計算機相比,它更像一臺專用的計算機,是看不見的計算機.智能設備也叫嵌入式智能設備,這是相對于一般的PC而言的,每臺智能設備都是一個典型的嵌入式軟硬件系統(tǒng),智能設備的開發(fā)也就是對嵌入式軟硬件進行裁剪,定制和開發(fā)的過程.就嵌入式硬件來說,其處理器有8位,16位和32位等不同類型,其架構也有X86,ARM,MIPS,SHx等不同類型.就嵌

4、入式系統(tǒng)來講,目前市場上主流的有windows CE,Vxworks,Linux,ONX,pSOS等.目前32位微處理器硬件和實時多任務OS軟件相結合是嵌入式系統(tǒng)發(fā)展的主流.4.2版本.1.2 Windows CEMicrosoft Windows CE是一個開放的,可裁剪的,32位的實時嵌入式操作系統(tǒng).和其他桌面版窗口操作系統(tǒng)相比,他具有可靠性好,實時行高,內核體積 小的特點,所以被廣泛用于各種嵌入式智能設備的開發(fā),是當今應用最多,增長最快的嵌入式操作系統(tǒng).Windows CE的設計目標如下:1. 模塊化和小內存占用Windows CE是為小型設備如掌上電腦和嵌入式系統(tǒng)設計的,由于此類設備通

5、常只有有限的資源,所以Windows CE必須能適應這種限制.典型的wicne設備只有8-32M的ROM,而Windows CE的最小內核只有500KB.Windows CE被設計成高度模塊化的一種操作系統(tǒng),以適應不同類型的智能設備對于操作系統(tǒng)映象大小不同的要求.Windows CE被分成一些不同的模塊,其中內核,圖形窗口子事件,文件系統(tǒng)和通信模塊是4個主要模塊.2.多種有線與無線連接支持Windows CE在很大程度上是為移動手持設備而設計的,所以Windows CE提供了豐富而靈活的無線通信支持和有線網(wǎng)絡支持.無線支持包括紅外,藍牙和802.1x,有線支持包括串并口通信,以太網(wǎng)通信,撥號網(wǎng)

6、絡等,另外還支持GPS,GPRS,ISDN,ADSL,CDMA等多種通信方式,同時Windows CE還允許遠程授權,認證,管理和更新Windows CE設備上應用程序或服務.3.強大的實時性能力Windows CE被設計成一個RTOS,它強大的中斷和線程調度機制和內核操作系統(tǒng)服務保證它為一個硬實時操作系統(tǒng),能滿足不同設備對于時間關鍵性任務的時間和性能的要求.4.豐富的多媒體和多語言支持Windows CE允許創(chuàng)建基于.NET的智能設備個性化程序,并提供最新的多媒體的支持.從Windows CE 4.0開始,完全支持創(chuàng)建中文的操作系統(tǒng),并提供微軟拼音,雙拼等中文輸入法.5.強大的開發(fā)工具支持

7、第2章 Windows CE開發(fā)平臺的構建與配置2.1 目標設備平臺介紹通過下圖我們可以大概了解到這塊芯片提供那些資源.例如I2C,I2S,UART等. 這些資源包括:一個LCD控制器,SDRAM控制器,3個通道的UART,4個通道的DMA,4個具有PWM功能的計時器和1個內部時鐘,8通道的10位ADC,觸摸屏接口,I2S總線接口,2個USB主機接口,1個USB設備接口,2個SPI接口,SD接口和MMC卡接口,看門狗計數(shù)器,117位通用IO口和24位外部中斷源. 203M的時鐘頻率使其運行Windows CE十分流暢.2.2 操作系統(tǒng)開發(fā)平臺Platform Builder是用于創(chuàng)建基于Win

8、dows CE的嵌入式操作系統(tǒng)設計的一個集成開發(fā)環(huán)境(IDE,它集成了進行設計,產生,構建,測試和調試Windows CE操作系統(tǒng)設計所需要的所有開發(fā)工具. Platform Builder IDE主要包括以下內容.1 Catalog窗口該窗口是Platform Builder的一個重要工作窗口, Platform Builder將Windows CE提供的大量組件和第三方提供的組件按章組件特性組成一個樹狀的結構放置到這個窗口.該窗口的每一個組件都可以添加到自己定制的操作系統(tǒng)設計中.2 Platform Builder的用戶接口Platform Builder的用戶接口主要有上下文敏感的菜單條

9、,快捷菜單,可編輯的屬性頁,上下文敏感的工具條,上下文敏感的快捷鍵,工具條按鈕和命令的工具提示功能,上下文敏感的幫助文檔以及可定制的工具條和菜單組成.3 Platform Builder的向導向導主要幫助開發(fā)者進行系列化,標準化的操作. Platform Builder主要包括5種向導.(1 BSP向導用于創(chuàng)建一個新的BSP,克隆一個已有的BSP或者修改一個已有的BSP,以使BSP能被第三方用戶或者硬件接受.(2新平臺向導用于創(chuàng)建一個包含操作系統(tǒng)設計及相關工程和文件的工作空間,以便創(chuàng)建一個新的操作系統(tǒng)運行是映象.(3新工程向導用于幫助開發(fā)者創(chuàng)建一個C+工程,包括可執(zhí)行程序,動態(tài)鏈接庫,靜態(tài)庫和

10、傳輸層等.(4導出向導 用于將第三方的分類項目導出為一個.msi 安裝文件,以便其他平臺開發(fā)者能夠將它安裝到另一臺開發(fā)工作站上的Platform Builder中,并在Catalog中使用.(5SDK向導用于幫助平臺開發(fā)者創(chuàng)建,配置和定制一個基于操作系統(tǒng)設計的SDK(軟件開發(fā)工具包,在這個SDK被分發(fā)給應用程序開發(fā)者后,程序員就可以脫離Platform Builder這個環(huán)境為定制的系統(tǒng)開發(fā)應用程序了.4 工作空間(workspace當創(chuàng)建一個操作系統(tǒng)設計時,也就創(chuàng)建了一個工作空間.一個工作空間可以包含多個工程,但只能包含一個操作系統(tǒng)設計.5 工程當使用New Project Wizard創(chuàng)建

11、也個新的workspace類型的C+工程時,將會產生一個名為.pbpxml的工程定義文件, Platform Builder編譯此工程的所有信息都包含在這個文件里面.6文本編輯器文本編輯器用來管理,編輯和打印所有基于文本的文件. (2單擊Install,顯示如下圖的Welcome界面 (3單擊next顯示授權協(xié)議界面,選擇接受授權協(xié)議,單擊”next”,顯示客戶信息界面,同時輸入產品密鑰,如下: (4單擊Next選擇安裝類型,如下圖 (5單擊next,選擇目標文件夾如下圖: (6單擊next選擇要安裝的CPU類型,如下圖 (6單擊next,接受協(xié)議,準備安裝.如下圖 (7單擊Next,開始安裝

12、2.3應用程序開發(fā)平臺c+,c#,ASP.net語言開發(fā)Windows CE應用程序. (1在eVC目錄下雙擊setup,如下圖: (2單擊next,系統(tǒng)顯示用戶授權許可,選擇接受許可,如下圖: (3單擊next,添加產品序列號和用戶標識(ID,如下圖: (4單擊next,顯示產品安裝選擇界面,選擇所有產品安裝選項 (5單擊next,開始進入安裝程序. (1雙擊文件夾下的setup圖標,進入Visual Studio .NET 2003的安裝程序,如下圖: (2單擊Visual Studio .NET 系統(tǒng)必備 ,系統(tǒng)顯示如下: (2單擊立即更新,安裝系統(tǒng)必備文件,然后針對提示進行選擇,這個安

13、裝過程很簡單,就不多介紹了. 第3章Windows CE操作系統(tǒng)創(chuàng)建3.1創(chuàng)建操作系統(tǒng)平臺設計首先安裝適合我們硬件平臺的BSP,按照以下步驟.(1在Windows CE420PLATFORM目錄下創(chuàng)建一個名為”SMDK2410”的文件夾,如果已經(jīng)有了該文件夾,將其改為備份。如下圖: (2將光盤中的SMDK2410中的內容拷貝到SMDK文件夾下,去掉該文件夾的只讀屬性.(3將SMDK2410_for_PublicoakdriversNETCARDcs8900r目錄拷貝到WINDOWS CE420PUBLICCOMMONOAKDRIVERSNETCARD目錄下. (4拷貝WINDOWS CE420

14、PLATFORMSMDK2410_for_PublicCESYSGEN 目錄下的makefile到WINDOWS CE420PUBLICCOMMCONCESYSGEN目錄下.(5打開 Platform Builder 4.2,選擇file菜單下的Manage Catalog Features如下圖 (6在彈出的對話框中選擇”smdk2410.cec”,點remove(7點import,導入platformsmdk240smdk420.cec文件,在cotalog的BSP下將看到安裝好的BSP,如下圖: 這樣,我們的BSP就添加成功了.然后我們定制一個自己的Windows CE操作系統(tǒng).步驟如下

15、:(1在file菜單下選擇”New Platform”,彈出New Platform Wizard-step1,選擇next. (2在New Platform Wizard-step2中選擇SAMSUNG SMDK2410:ARM4 BSP 按next (3選擇”Available configurations”中的Mobile Handheld 并輸入Platform name ,點next繼續(xù). (4在New Platform Wizard-step4中選擇必要的配置,點next. (5 New Platform Wizard-step5中選擇所需的網(wǎng)絡配置.點next,繼續(xù) (6最后點f

16、inish,結束新平臺建立.(7在菜單Platform中點setting,在設置對話框Build Option中如圖進行配置 (8加入USB鼠標特性支持,如圖,點開Catalog->Core OS->Display based devices->Core OS Service->USB Host Support ->USB Human Input Device(HIDClass Driver點右鍵選擇”add to platform”在選擇其子項”USB HID keyboard and Mouse”同樣右鍵”add to platform”. (9加入USB移動

17、存儲設備支持,如下圖: (10加入網(wǎng)絡驅動,點擊打開Catalog->BSPs->Samsung SMDK2410:ARMV4->Device Driver->Networking->Local Area Networking(LAN devices->CS8900,點右鍵加入”add to platform”. (11更改適合自己的網(wǎng)絡環(huán)境,如下圖,通過修改編輯platform.reg (12點擊Build菜單中Build platform開始編譯.至此我們完成了基于S3C2410的操作系統(tǒng)平臺的搭建.接下來我們將把這個平臺產生的鏡像下載到我們的硬件開發(fā)板

18、中.3.2 目標平臺的下載1.將Nboot和Eboot燒錄到Nandflash/SMC中,(1安裝光盤資料中的開發(fā)工具下面的”YFSJF” (2使用JTAG把PC機與目標板連接.(3運行YFSJF程序,選擇WINDOWS CE資源下image目錄下的Nboot_Debug.bin文件,按下圖的配置進行燒寫. (4選擇文件為上面我們生成平臺目錄下的EBOOT . NB0文件,目錄為X:WINDOWSCE420PUBLICSBC2410RelDirSAMSUNG_SMDK2140_ARMV4IRelease目錄下的Eboot.nb0,設置目標塊為2,如下圖所示: (5燒錄完畢后,關閉開發(fā)板電源,拔

19、出JTAG.(6用串口線連接PC機和目標平臺,在PC機端運行DNW軟件,點擊”Serial Port”菜單下的”Connect”,打開開發(fā)板電源,在DNW窗口可以看到如下圖信息: 至此Nboot和Eboot燒錄完畢2.將Image文件通過Ethernet下載到開發(fā)板上運行(1接上面的操作,在DNW窗口顯示中的參數(shù)設置如下: 第2項:Download image to nandflash or adram,我們選擇nandflash第3項:對nandflash進行低級格式化(2在PC機上打開Platform Builder 4.2,打開我們建立的工程,如下圖 (3在DNW窗口下按4,開始下載,如

20、下圖: (4在Platform Builder4.2窗口下,選擇”Target菜單下的”Configure Remote Connection”,如下圖 (5在download下點Configure按鈕,如下圖,連接好后將出現(xiàn)如下圖的效果: 將Kernel也如此設置.(6選擇”Target”菜單下的”Download/Initialize”,如下圖 這是在PC機端將彈出下載進度,如下圖 同時在DNW將會回傳下載信息當出現(xiàn)如下信息時,接上JTAG,在PC機上運行YFSJF程序,選擇Nboot_Release.bin文件,目標塊為0,燒錄到Nandflash中.以后只要打開開發(fā)板電源,Window

21、s CE就會自動運行了. 運行效果如下圖,這是通過同步軟件截取的目標板上的情況 3下面我們就講一下微軟提供的同步軟件的安裝.在光盤開發(fā)工具中找到ActiveSync文件夾,雙擊setup安裝.安裝后要安裝USB驅動,驅動位置在SMDK2410DRIVERSUSBFUNCTION目錄下.然后我們啟動ActiveSync,進行連接設置,如果連接上將有如下顯示. IDETCO大學計劃方案 通過USB我們可以像訪問U盤一樣訪問目標設備,如下圖 注意: 由于pb中存在一個小bug,導致Windows CE的中文界面中會有兩個“啟動”,一個是中文的啟動,一個是“startup”。usbconnt在中文的啟

22、動中,而系統(tǒng)默認從startup啟動。所以需要在WINDOWSCE420PUBLICCOMMONOAKFILESINTLTRNS0804的common.str中修改“WindowsStartUp”為“Windows啟動”。然后再編譯工程。如果不改動這個,直接編譯,編譯出來的NK.bin文件下載以后,無法使用ActiveSysc自動和PC同步!至此我們已經(jīng)基本把定制Windows CE系統(tǒng)介紹完了. IDETCO大學計劃方案 第4章 WINDOWS CE驅動程序開發(fā)驅動程序開發(fā)是BSP開發(fā)的主要內容.Windows CE為智能設備準備了大量的驅動程序,為了更快的掌握Windows CE驅動的開發(fā)

23、,這需要讀者自己親自分析大量的微軟提供的不同類型設備驅動程序的源代碼.4.1 驅動設備的分類1內建驅動程序內建驅動程序有時也被稱為本地設備驅動程序.他們被靜態(tài)的鏈接到GWES,也就是說這些驅動不是作為一個單獨的DLL存在的.指示LED驅動程序就是一個內建驅動程序的一個例子,指示LED驅動程序作為nleddrv.lib被鏈接到GWES.2 可安裝的驅動程序在微軟提供的Windows CE例驅動程序中,按驅動程序的結構,有兩種類型的驅動程序,分層的驅動程序和不分層的驅動程序.常MDD層由微軟提供.開發(fā)者一般只需要編寫特定于硬件平臺的PDD層代碼,而直接使用MDD層公用代碼.2 不分層的驅動程序,驅

24、動的分層與不分層都是相對的,任何分層的驅動都可以使用不分層驅動來代替.如果時間或者性能是一個關鍵因素,那么不分層驅動是最好的選擇.但是,不論分層的還是不分層的,都可以基于微軟提供的例驅動代碼進行開發(fā),這將大大加速開發(fā)的進程并簡化開發(fā)的難度.開發(fā)者要盡量避免從第一行程序寫起. 按照驅動程序導出接口不同,驅動程序可以分為本地驅動程序與流接口驅動程序.一些類型的設備,如鍵盤和顯示,對操作系統(tǒng)有一個定制的接口,由于他們使用的接口是Windows CE特定的,所以這些驅動被成為本地設備驅動.還有一種驅動是流接口設備驅動,不管驅動程序控制的設備是什么類型,凡是導出流接口函數(shù)的驅動都是流接口驅動.所以流接口

25、驅動都被使用相同的接口并導出一組相同的函數(shù)-流接口函數(shù).流接口函數(shù)被設計來與通常的文件系統(tǒng)API緊密匹配,即由流接口驅動管理的設備向應用程序表現(xiàn)為一個文件系統(tǒng),應用程序通過對文件系統(tǒng)的特殊文件進行操作從而完成對設備的操作.4.2 流接口設備驅動流接口設備驅動是不管驅動程序控制的類型都導出流接口函數(shù)的驅動.流接口適合與任何邏輯上被認為做為數(shù)據(jù)源或數(shù)據(jù)存儲的I/O設備,即任何一產生或消耗數(shù)據(jù)為主要功能的外圍設備驅動都可以選擇導出流接口,如串口設備驅動就是一個典型的流接口設備驅動.流接口函數(shù)本身是為更緊密地匹配通常的文件系統(tǒng)應用程序編程接口(如ReadFile,WriteFile,IOControl

26、等而設計的,由流接口管理設備通過文件系統(tǒng)導出給應用程序,應用程序通過打開文件系統(tǒng)的特殊文件與設備驅動進行交互.下面我們對流接口函數(shù)進行介紹.標準的流接口是如下的一組函數(shù),我們先來看一下這組函數(shù)的基本外觀:1、HANDLE XXX_Init(LPCTSTR pContext,LPCVOID lpvBusContext;這個函數(shù)是在設備管理程序通過ActiveDeviceEx(函數(shù)激活設備時被系統(tǒng)調用的。它的主要功能是初始化驅動程序中用到的資源,對I/O地址空間和內存進行映射等。2、BOOL XXX_Deinit(DWORD hDeviceContext;這個函數(shù)是在設備管理程序通過Deactiv

27、ateDevice(函數(shù)卸載設備時被系統(tǒng)調用的,它的主要功能是回收驅動程序中用到的資源。3、DWORD XXX_Open(DWORD hDeviceContext,DWORDAccessCode,DWORD ShareMode; 這個函數(shù)是在應用程序通過CreateFile(函數(shù)打開設備時調用的。4、BOOL XXX_Close(DWORD hOpenContext;這個函數(shù)是在應用程序通過CloseHandle(函數(shù)關閉句柄時調用的。5、DWORD XXX_Read(DWORD hOpenContext,LPVOID pBuffer,DWORDCount;這個函數(shù)是在應用程序通過ReadFi

28、le(函數(shù)讀取設備時調用的。6、DWORD XXX_Write(DWORD hOpenContext,LPCVOIDpBuffer,DWORD Count;這個函數(shù)是在應用程序通過WriteFile(函數(shù)向設備寫入數(shù)據(jù)時調用的。7、DWORD XXX_IOControl(DWORD hOpenContext,DWORDdwCode,PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORDdwLenOut,PDWORD pdwActualOut;這個函數(shù)是在應用程序通過DeviceIOControl(函數(shù)向設備發(fā)送控制字時調用的。8、void XXX_Powe

29、rUp(DWORD hDeviceContext;這個函數(shù)是在向設備恢復供電的時候調用的。9、void XXX_PowerDown(DWORD hDeviceContext;這個函數(shù)是在設備斷電的時候調用的。上述函數(shù)中的XXX部分是在注冊表中注冊此設備驅動程序的時候Perfix注冊表項的值。例如串口,則用Com,并口則用LTP等等。只要一個DLL中針對特定設備實現(xiàn)了上述接口并且正確在注冊表中注冊,那么就可以在程序中通過那些文件API函數(shù)來訪問此設備。下面我們就一起在PB4.2中按上述接口模擬一個設備。設備的名字就叫做TTT吧。運行PB4.2,打開上次做的平臺,在文件菜單中執(zhí)行"New

30、 Project or File"命令,新建一個"WCE Dynamic-Link Library"項目,輸入項目名字為"Test"。在向導的第一步中輸入必要的信息(此處不輸也可以,這些信息可供向導自動生成一個README.TXT文件,不過還是寫上好,以免以后忘了,在下一步中選擇一個空項目,完成。在新的源程序文件中輸入以下程序: / test.cpp : Defines the entry point for the DLL application./#include "stdafx.h"#include "mem

31、ory.h"#include "windows.h"HANDLE* hDevice;#define BUFSIZE 256WCHAR bufferBUFSIZE;BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReservedreturn TRUE;HANDLE TTT_Init(LPCTSTR pContext,LPCVOID lpvBusContext hDevice=(HANDLE*LocalAlloc(LPTR,sizeof(HANDLE; memset(buf

32、fer,0,sizeof(WCHAR*BUFSIZE;return hDevice;BOOL TTT_Deinit(DWORD hDeviceContextLocalFree(hDevice;return TRUE; DWORD TTT_Open(DWORD hDeviceContext,DWORD AccessCode,DWORD ShareModeif (!hDeviceContextreturn FALSE;return TRUE;BOOL TTT_Close(DWORD hOpenContextif (!hOpenContextreturn FALSE;return TRUE;DWOR

33、D TTT_Read(DWORD hOpenContext,LPVOID pBuffer,DWORD Count DWORD dwret=min(BUFSIZE,Count;wcsncpy(LPWSTRpBuffer,buffer,dwret;return dwret;DWORD TTT_Write(DWORD hOpenContext,LPCVOID pBuffer,DWORD Count DWORD dwret=min(BUFSIZE,Count;wcsncpy(buffer,(LPWSTRpBuffer,dwret;return dwret;DWORD TTT_IOControl(DWO

34、RD hOpenContext,DWORD dwCode,PBYTE pBufIn, DWORD dwLenIn,PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut return TRUE;void TTT_PowerUp(DWORD hDeviceContextreturn;void TTT_PowerDown(DWORD hDeviceContextreturn;編譯,然后編譯該test文件夾下的test.def文件,將這些實現(xiàn)的接口函數(shù)導出: LIBRARY TEST.DLLEXPORTSTTT_InitTTT_DeinitTTT_OpenT

35、TT_CloseTTT_PowerUpTTT_PowerDownTTT_IOControlTTT_ReadTTT_Write 同時編輯此文件夾下的test.reg文件,加入必要的注冊表項:HKEY_LOCAL_MACHINEDriversBuiltIntest"DeviceArrayIndex"=dword:0"Prefix"="TTT""Dll"="test.Dll""Order"=dword:20好了,一個TTT設備的流接口驅動就寫好了,在源程序文件夾中的DEF文件,RE

36、G文件,BIB文件,DB文件,DAT文件和編譯鏈接時需要的BAT文件都被PB生成好了,開發(fā)人員只要作些必要的修改即可以,非常方便。在BIB文件中添加項目,將所用到的文件加入BIN文件(一般放在Platform.bib。MyDev.dll $(_FLATRELEASEDIRMyDev.dll NK SH注:SampleDev為任意與其它項目不重名的字符串.每個函數(shù)名的前綴XXX可以是任意大寫的字符串,只要保證與注冊表中Prefix后面的值相同就行。編譯程序現(xiàn)在,已經(jīng)知道了需要實現(xiàn)哪些東西,一定想知道如何去實現(xiàn)它。一個最直接的方法就是在platform/BSP/drivers 下新建一個目錄,然后

37、在drivers目錄中的dirs文件中加入以你剛新建的目錄名。在剛新建的目錄下,新建你的C源代碼文件,在其中實現(xiàn)上面所述的函數(shù),及其功能。新建名稱分別為sources, makefile, mydev.def的文件。其內容如下:makefile: 只需要這樣一行 !INCLUDE $(_MAKEENVROOTmakefile.defSources:這個文件很重要,內容也多,最基本的一個文件該有如下內容。TARGETNAME= MyDev(指定要生成的動態(tài)庫的名稱TARGETTYPE=DYNLINK(指定要生成的是一個動態(tài)庫(下面兩項指定需要與哪些動態(tài)庫鏈接,一般要第一項就足夠了TARGETLI

38、BS=$(_COMMONSDKROOTlib$(_CPUINDPATHcoredll.lib SOURCELIBS= $(_COMMONOAKROOTlib$(_CPUINDPATHceddk.libDEFFILE=MyDev.def (指定def文件DLLENTRY=DllEntry(指定動態(tài)庫的入口函數(shù)SOURCES=(請在這寫上你所有源文件的名字,它們將會被編譯接下來,為了測試我們的驅動程序是否可以正常工作,還需要寫一個測試程序,再次為平臺新建一個WCE應用程序項目TestTTT,寫入如下代碼并編譯為EXE文件:#include "stdafx.h"#include

39、"windows.h"int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow/ TODO: Place code here.HANDLE handle=CreateFile(_T("TTT1:",GENERIC_READ|GENERIC_WRITE,0, NULL,OPEN_EXISTING,0,NULL; ASSERT(handle;DWORD ret=0;TCHAR* pstr=_T("This is a TES

40、T of TTT Driver"WriteFile(handle,pstr,(_tcslen(pstr+1*sizeof(TCHAR,&ret,NULL;TCHAR ReadStr256;memset(ReadStr,0,sizeof(TCHAR*256;ret=0;ReadFile(handle,ReadStr,sizeof(ReadStr,&ret,NULL;MessageBox(NULL,ReadStr,_T("Test",MB_OK;CloseHandle(handle;return 0; 這只是一個簡單的演示程序,大家可以參考著完成自己的

41、驅動程序,如簡單的控制IO口的驅動程序等等.驅動程序就介紹到這里,驅動的編寫不是一朝一夕的事情,需要不斷的努力和付出,這樣才能成為所謂的高手,另外一定要仔細閱讀PB的練級幫助文檔,該文檔基本上可以找到你所需要的所有東西. 第5章 WINDOWS CE應用程序開發(fā)5.1 本地應用程序與可托管應用程序Windows CE支持傳統(tǒng)的本地應用程序和應用了Microsoft.NET技術的托管應用程序.為了開發(fā)本地應用程序,需要使用eVC+4.0開發(fā)工具, eVC+將C+代碼直接編譯為CPU指令,它使用win32應用程序編程接口(win32API來訪問Windows CE 功能,同時它還是用MFC或ATL

42、庫幫助開發(fā)GUI和COM應用程序. 為了開發(fā)托管應用程序,需要使用VS.NET 2003開發(fā)工具,它集成了Microsoft .NET Compact Framework 1.0開發(fā)工具包,它編譯出來的可執(zhí)行代碼為獨立與CPU的中間語言代碼,通常,托管應用程序不能直接訪問win32API,在運行是,這些中間語言代碼必須通過.NET Compact Framework庫將它轉換為機器語言代碼才能訪問操作系統(tǒng)功能.5.2本地應用程序開發(fā)Windows CE的本地應用程序開發(fā)主要涉及以下幾個方面:1.從Platform Builder導出SDK2.安裝SDK到eVC+3.Win32編程下面對這3個方面進行闡述當開發(fā)著使用eVC+工具編寫Windows CE應用程序是,必須知道自己所開發(fā)的程序運行在什么樣的硬件平臺上,以及目標平臺具有什么樣的操作系統(tǒng)功能,否則,開發(fā)者開發(fā)的應用程序很可能不能在目標平臺上運行.那么eVC+在編譯是怎么知道目標平臺的特性呢?答案就是通過Platform Builder想eVC+導出應用程序要運行平臺的SDK.下面就說一下如何從Platform Builder中導出SDK,(1在platform菜單中選擇Configure SDK,如下圖

溫馨提示

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

最新文檔

評論

0/150

提交評論