WINCE軟體編譯支持緬語配置
A. 關於Wince中RasEntry的參數設置。
一、工具軟體
要在Wince安裝程序,則需要製作*.cab安裝包。製作*.cab安裝包,需要專門的製作工具軟體,最常用的也是用得最多的是WinCE CAB Manager
二、製作及安裝過程
第一步:先製作.inf文件
要製作.cab安裝包,你只要寫一個.inf文件,也可以用的文本編輯工具製作,還有準備好你要安裝到PPC的各個文件、程序。
第二步:生成CAB包
只要在WinCE CAB Manager中打開你的INF文件,WinCE CAB Manager會根據你的這個INF文件來生成*.CAB文件。你只需要把它保存起來就行了
第四步:連接手機通過USB連接PC,運行*.ARM.CAB文件
三、製作INF文件說明
第一個欄位[Version]
中Provider大家可以隨便改,其他兩個參數就不要去碰了。
第二個欄位[CEStings]
CompanyName="www.DIYPDA.COM"
AppName="PPC"
InstallDir=\UserData\myoa
說明:
CompanyName是公司名字,可以任意修改。
AppName是應用程序名字,可以任意修改。
InstallDir是應用程序安裝的Wince終端的路徑,可以任意修改。
第三個欄位[CEDevice]
CEDevice欄位是程序所對應的設備平台,這個大家就不用去管它了。
第四個欄位[SourceDisksNames]
是指定源文件程序所在的磁碟路徑。
1=,"cab",,"D:\oasourcedir\programe\"
可以修改"D:\oasourcedir\programe\"來指定源文件所在路徑,也就是要製作安裝盤的*.exe等文件路徑,其它的都不要修改了。
第五個欄位[SourceDisksFiles]
就是大家要打包的源文件清單,後面的=1就表示文件的路徑,也就是[SourceDisksNames]中的1。
oa.exe=1
readme.txt=1
my.jpg=1
有多少個要打包的源文件都可以把名字加上即可,格式為:文件名.文件類型 = 1
第六個欄位[DefaultInstall]
CEShortcuts=CEShortcuts1,CEShortcuts2,CEShortcuts3,CEShortcuts4
CopyFiles=Files.Common
AddReg=RegData
就是安裝程序到手機中時:
CopyFiles參數表示安裝時如何解壓拷貝文件,AddReg參數表示安裝時如何修改注冊表。CEShortcuts參數表示如何在Wince桌面創建快捷方式。
CopyFiles=後面跟著是欄位名字,即你所要做的拷貝工作到底有哪些。AddReg=作用一樣。
例如在範本中,CopyFiles=Files.Common就是告訴cabwiz.exe要做一個拷貝文件工作,
需把一些文件拷貝到安裝指定目錄文件夾下,要拷貝的文件在[Files.Common]欄位中。
而AddReg=RegData表示安裝程序還要修改注冊表,修改的東西在[RegData]欄位中。
第七個欄位[Files.Common]
就是安裝拷貝文件到手機中,目標安裝時需要拷貝哪些文件,應該與[SourceDisksFiles]中的文件名字一致。
oa.exe,oa.exe,,0
readme.txt,readme.txt,,0
my.jpg,my.jpg,,0
第八個欄位[Shortcuts]
關於應用程序桌面快捷方式設置:
Sample App,0,sample.exe
Sample App,0,sample.exe,%InstallDir%
欄位語法說明一下,四個域,域之間用逗號隔開,前三個域的內容必須填寫。
第一個域是快捷鍵名稱,也就是在Wince桌面快捷方式名稱。
第二個域中0表示是文件,其他任何非零數表示為目錄,
第三個域就是快捷鍵的目標程序(目錄),
第四個域是可選域,是安放快捷鍵的目錄,默認目錄就是[DestinationDirs]中Shortcuts = "",你可以指定其他目錄,如你想在開始菜單中加入自己的快捷鍵的話就在這里寫上storage\windows\startmenu\。
下面是範例:
移動OA,0,oa.exe,UserData\myoa
第九個欄位[RegData]
就是安裝程序到手機步驟中時,修改注冊表。
第一個「,」之前表示注冊表中的四大塊的名字,直接用縮寫就可以了,如範本中HKLM就代表HKEY_LOCAL_MACHINE,其他三個分別為HKCR,HKCU和HKU。
第二個「,」之前表示你要修改的鍵的具體路徑(如果沒有會自動建立),即完整的項(key)名稱,
第三個「,」之前就表示你要具體修改的鍵(就是我們經常在修改注冊表的文章中看到的Value Name),如果沒有的話程序就會自動建立,
第四個「,」之前表示值類型,目前我只懂得整數是0x00010001(見補充2),字元型數據這里你就不要填了,留著個「,」就可以了。最後就是你要填入的Value。
在範例中
HKLM,SOFTWARE\Microsoft\Shell\Rai\:CallAlert,BKBitmapFile,,"\Storage\Application Data\Home\iMac\call1.jpg"
表示修改(建立)名為BKBitmapFile的鍵的值,它在HKLM\SOFTWARE\Microsoft\Shell\Rai\:CallAlert下,值內容為\Storage\Application Data\Home\iMac\call1.jpg,很明顯,這是一個值為String類型的鍵。
四、如何可以得到一個INF文件範例
安裝一個WinCE CAB Manager,最好安裝一個中文漢化的,打開一個現在的CAB文件,從菜單中選擇文件-導出-導出到INF,再選擇好導出路徑,完成,就可以在你指定的目錄出一個當前CAB文件的INF文件,呵呵中!你可以自己好好研究一下了!
B. 如何編譯wince6.0流驅動
最近開始嘗試寫WinCE6.0的驅動,當然從最簡單的流驅動開始,選擇了GPIO的驅動進行實驗。本文參考了網上有很多流驅動的開發資料,但在開發的過程中也發現了一些細節問題,網路上並沒有給出詳細的解答,所以在這里記錄下來,並對流驅動開發中的一些問題做了總結。 流驅動的開發有兩種方法:添加驅動到BSP和藉助驅動調試助手。 第一種,添加驅動到BSP。修改BSP,將驅動加入到BSP當中,再選擇該BSP當做OS下載到目標板上。下面以6410下實現GPIO為例,說明詳細的步驟: 首先,在\WINCE600\PLATFORM\SMDK6410\SRC\DRIVES目錄下面創建文件夾,命名為GPIO,並在GPIO文件夾下面創建源代碼文件,命名為gpio.c。同時在DRIVES目錄下修改dirs文件,在dirs文件最後添加新建的目錄名GPIO。在gpio.c文件中實現的流式介面函數如下(這些介面函數的參數介紹見博文最後):BOOL WINAPI DllEntry(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved)DWORD GPI_Init(LPCTSTR PContext, LPCVOID lpvBuscontext)BOOL GPI_Deinit(DWORD hDeviceContext)DWORD GPI_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD shareMode)BOOL GPI_Close(DWORD hOpenContext)DWORD GPI_Read(DWORD hOpenContext, LPVOID pBuff, DWORD Count)DWORD GPI_Write(DWORD hOpenContext, LPVOID pBuff, DWORD Count)DWORD GPI_Seek(DWORD hOpenContext, long Amount, WORD Type)void GPI_PowerUp(DWORD hDeviceContext)void GPI_PowerDown(DWORD hDeviceContext)BOOL GPI_IOControl( DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwactualOut ) 其次,在GPIO文件夾下面創建gpio.def文件,定義需要輸出的函數,這些函數能夠被其它代碼用動態載入的方法調用。具體內容如下,有的介紹裡面導出的函數中還有EntryDll,其實沒有必要,它是一個入口函數而已,主要導出那些會被調用的就可以了。LIBRARY GPIOEXPORTS GPI_Init GPI_Deinit GPI_Open GPI_Close GPI_Read GPI_Write GPI_Seek GPI_PowerDown GPI_PowerUpGPI_IOControl再次,在GPIO文件夾下面創建makefile文件,具體內容如下,這一步對於不同的流驅動基本不變。!INCLUDE $(_MAKEENVROOT)\makefile.def 接下來,在GPIO文件夾下面創建sources文件,具體內容如下,各個宏的意義不做詳細介紹,也可以添加其他的一些宏,根據具體情況定。WINCEOEM=1TARGETNAME=GPIOTARGETTYPE=DYNLINKRELEASETYPE=PLATFORMDEFFILE=gpio.defDLLENTRY=DllEntryTARGETLIBS= \ $(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.libSOURCES=gpio.c第五步,修改注冊表信息了,打開WINCE600\PLATFORM\SMDK6410\FILES\Platform.reg 文件,添加以下內容:[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIO]"Prefix"="GPI""Dll"="GPIO.Dll""Index"=dword:1"Order"=dword:1這里要注意添加的時候不要添加到帶有條件編譯的語句當中去,否則還需要設置編譯條件,比較麻煩。最後,修改Platform.bib 文件,將GPIO驅動載入到NK當中。打開WINCE600\PLATFORM\SMDK6410\FILES\Platform.bib 文件,添加以下內容,GPIO.dll $(_FLATRELEASEDIR)\GPIO.dll NK SH到這里基本上准備工作就已經完成了,接下來編譯,下載到目標板上。之後可以用調試工具查看驅動是否已經成功加入到注冊表中,還有驅動是否被OS成功載入了。上述正確後,就可以編寫上層測試代碼進行驗證了。 上述的步驟基本和網路的介紹一致,在調試過程中,遇到了以下兩個問題:1、驅動信息已經加入到注冊表中,但是NK總是沒有載入成功GPIO.dll驅動?解決:出現這種情況,有可能是一下原因造成的:(1)沒有實現上面提到的全部的流驅動介面函數,只是實現了其中的一部分,只要補齊所有的驅動介面函數就可以了;(2)在修改Platform.bib文件時,在文件末尾添加的內容。應該在宏FILES前面添加內容,否則就會無法載入驅動了。也有可能是其他原因,本人暫時沒有遇到。2、驅動載入後立馬又被卸載?解決:本人在調試過程中,通過串口輸出信息,發現驅動GPIO被載入後立馬又被卸載了,並且調用了GPI_Init函數,後來發現時由GPI_Init的返回值引起的。GPI_Init函數是驅動成功載入後調用的第一個函數,設備管理器通過調用GPI_Init初始化硬體,分配自己的內存空間,並將此內存塊的地址以一個DWORD值返回給上層。如果返回0,說明初始化失敗,之前分配的系統資源將全部釋放,也就是驅動會被卸載。在簡單的輸出信息的流驅動中,最好將所有的流介面都設置為返回成功。 快速編譯技巧:上面的方法要求每次都重新編譯內核,很耗費時間,這里收集了網路上提供的修改驅動後快速編譯的方法,下面的步驟建立在已經進行過一次上面的操作了,否則必須先修改注冊表和.bib文件:(1)在VS2005下Build菜單選擇「Open Release Directory in Build Window」,進入到命令行模式,在命令行中進入到你的驅動目錄,執行build命令就OK了。其實也可以直接在右側「Solution Explorer」中找到你的驅動目錄,右鍵選擇Build就可以了。(2)在VS2005下Build菜單選擇「Make Run-Time Image」就可以產生NK文件了。第二種,使用串口助手調試,這里給出原創的連接we-hjb的BLOG。該方法將會比第一種方法效率高,不需要每次都編譯NK,然後下載鏡像到目標板,但存在適用范圍的問題,即該方法並不是適用於任何的驅動。驅動調試助手,是用來動態管理流驅動。本地驅動和USB驅動不再它的控制范圍之內,各位在使用時注意這一點。 補充流介面函數介紹(轉自網路):DllEntry(HINSTANCE DllInstance, INT Reason, LPVOID Reserved )這個函數是動態鏈接庫的入口,每個動態鏈接庫都需要輸出這個函數,它只在動態庫被載入和卸載時被調用,也就是設備管理器調用LoadLibrary而引起它被裝入內存和調用UnloadLibrary將其從內存釋放時被調用,因而它是每個動態鏈接庫最早被調用的函數,一般用它做一些全局變數的初始化。
參數:
DllInstance:DLL的句柄,與一個EXE文件的句柄功能類似,一般可以通過它在得到DLL中的一些資源,例如對話框,除此之外一般沒什麼用處。
Reason:一般我們只關心兩個值:DLL_PROCESS_ATTACH與DLL_PROCESS_DETACH,Reason等於前者是動態庫被載入,等於後者是動態庫被釋放。
所以,我們可以在Reason等於前者是初始化一些資源,等於後者時將其釋放。
DWORD XXX_Init(LPCTSTR pContext,LPCVOID lpvBusContext);它是驅動程序的動態庫被成功裝載以後第一個被調用的函數。其調用時間僅次與DllEntry,而且,當一個庫用來生成多於一個的驅動程序實例時僅調用一次DllEntry,而xxx_Init會被調用多次。驅動程序應當在這個函數中初始化硬體,如果初始化成功,就分配一個自已的內存空間(通常用結構體表示),將自已的狀態保存起來,並且將此內存塊的地址做為一個DWORD值返回給上層。設備管理器就會用在調用XXX_Open時將此句柄傳回,我們就能訪問自已的狀態。如果初始化失敗,則返回0以通知這個驅動程序沒有成功載入,先前所分配的系統資源應該全部釋放,此程序的生命即告終至。當這個函數成功返回,設備管理器對這個程序就不做進一步處理,除非它設置了更多的特性。至此一個各為XXX的設備就已經載入成功,當用戶程序調用CreateFile來打開這個設備時,設備管理器就會調XXX_Open函數。參數:pContext:系統傳入的注冊表鍵,通過它可以講到我們在注冊表中設置的配置信息。lpvBusContext:一般不用。實際上,很多程序中將這個函數寫成了DWORD XXX_Init(DWORD pContext ),我們只需要將pContext轉化成LPCTSTR即可。DWORD XXX_Open(DWORD hDeviceContext,DWORD dwAccess, DWORD dwShareMode);當用戶程序調用CreateFile打開這個設備時,設備管理器就會調用此驅動程序的XXX_Open函數。參數:hDeviceContext XXX_Init 返回給上層的值,也就是我們在XXX_Init中分配的用來記錄驅動程序信息的那個結構體的指針,我們可以在這個函數中直接將其轉化成所定義的結構,從而獲取驅動程序的信息。dwAccess 上層所要求的訪問方式,可以是讀或者寫,或者是0,即不讀也不寫。dwShareMode 上層程序所請求的共享模式,可以是共享讀、共享寫這兩個值的邏輯或,或者是0,即獨占式訪問。系統層對設備文件的存取許可權及共享方法已經做了處理,所以在驅動程序中對這兩個參數一般可以不用理會。這個函數一般不用做太多處理,可以直接返回hDeviceContext表示成功,對於一個不支持多個用戶的硬體,在設備已經打開後,應該總是返回0以至失敗,則CreateFile調用不成功。DWORD XXX_Close( DWORD hDeviceContext); 當用戶程序調用CloseHandle關閉這個設備句柄時,這個函數就會被設備管理器調用。參數:hDeviceContext 為XXX_Open返回給上層的那個值。這個函數應該做與XXX_Open相反的事情,具體包括:釋放XXX_Open分配的內存,將驅動程序被打開的記數減少等。DWORD XXX_Deinit(DWORD hDeviceContext);這個函數在設備被卸載時被調用,它應該實現與XXX_Init相反的操作,主要為釋放前者佔用的所有系統資源。參數:hDeviceContext XXX_Init函數返回給上層的那個句柄u void XXX_PowerUp( DWORD hDeviceContext );void XXX_PowerDown(DWORD hDeviceContext );正如其名稱中體現的那樣,這兩個函數在系統PowerUp與PowerDown時被調用,這兩個函數中不能使用任何可能引起線程切換的函數,否則會引起系統死機。所以,在這兩個函數中,實際上幾乎是什麼做不了,一般在PowerDown時做一個標志,讓驅動程序知道自已曾經被Power Down過。在Power Down/On的過程中硬體可能會掉電,所以,盡管Power On以後,原來的IO操作仍然會從接著執行,但可能會失敗。這時,當我們發現一次IO操作失敗是因為程序曾經進入過Power Down狀態,就重新初始化一次硬體,再做同樣的IO操作。BOOL XXX_IOControl(DWORD hDeviceContext,DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut );幾乎可以說一個驅動程序的所有功能都可以在這個函數中實現。對於一類CE自身已經支持的設備,它們已經被定義了一套IO操作定,我們只需按照各類設備已經定義的內容去實現所有的IO操作。但當我們實現一個自定義的設備時,我們就可以隨心所欲定義我們自已的IO操作。參數:hDeviceContext XXX_Open返回給上層的那個句柄,即我們自已定義的,用來存放程序所有信息的一個結構。dwCode IO操作碼,如果是CE已經支持的設備類,就用它已經定義好碼值,否則就可以自已定義。pBufIn 傳入的Buffer,每個IO操作碼都會定義自已的Buffer結構dwLenIn pBufIn以位元組記的大小 pBufOut,dwLenOut分別為傳出的Buffer,及其以位元組記的大小pdwActualOut 驅動程序實際在pBufOut中填入的數據以位元組記的大小其中,前兩個參數是必須的,其它的任何一個都有可能是NULL或0。所以,當給pdwActualOut賦值時應該先判斷它是否為一個有效的地址。本文出自 「飛雪待劍」 博客
C. wince系統改安卓系統教程,車載wince如何升級改造
很多車友在找wince系統改安卓系統的教程,要實現這樣的質變,唯有進行刷機操作。但比較現實的就是wince是比較早期的操作系統,大部分車型的硬體都比較老舊,即便刷出系統,估計也兼容不了。畢竟導航儀系統和硬體的配置是相關的,硬體不支持,安卓系統就無法運轉。對於刷機而言,不同的設備型號刷機方式會有些許差異,在對應的設備論壇上一般會有相應的刷機教程。但不建議不懂車機的車友自行刷機,畢竟刷機是個蠻復雜的過程,稍有不慎會損害原有的wince系統。
車載wince如何升級改造?
如果實在想要升級成安卓系統,可以嘗試更換車機導航,購買一個安卓系統的車載導航,然後到專業的修理店找師傅將原來的拆下,然後走線、接駁更換新的即可。
除此之外,也可以升級原來的wince系統上,雖然不能變成安卓,但也會有所改善,具體步驟如下:
1、首先下載一個CE桌面程序然後將其復制到U盤上;
2、打開車機上的原地圖文件,找到裡面的「NaviResFile」文件夾,然後將「」修改查看工具放到這個文件上,然後雙擊修改查看工具,打開同目錄的文件,並記住上面的埠和波特率參數;
3、完事後,根據參數下載一個適合自己型號的地圖軟體,然後復制到U盤上;
4、將U盤插入導航儀,打開下載的地圖軟體,即可進行升級,如果說導航默認開啟,先將其退出。
D. 如何設置WinCE模擬模擬器
一、打開WinCE模擬器
啟動Visual Studio 2008
在菜單欄里:工具->連接到設備,彈出「連接到設備」這個界面,在「平台」下拉列表裡面選擇為「Windows CE」,之後在顯示出來的列表中選擇「Pocket PC 2003 SE 模擬程序」,然後點擊「連接」按鈕。截圖如下:
連接成功後,就彈出了模擬模擬器的界面,界面完全就是一個掌上電腦,很不錯哦!截圖如下:
二、設置WinCE模擬模擬器的屬性
如果想要上網,你一定要先裝上Virtual PC 2007 setup.exe,然後再重新連接模擬器。Virtual PC直接裝完就OK了,無需對其進行任何設置。
1、設置共享文件夾
單擊模擬器界面中的菜單欄:文件->配置,在「模擬程序屬性」界面中,「常規」選項卡裡面,選擇你的「共享文件夾」的目錄。然後確定即可,最後要插入底座才生效哦。截圖如下:
2、設置網路
再提一下,先要裝Virtual PC 2007。(好啰嗦……呵呵)
進入「模擬程序屬性」界面的「網路」選項卡,勾上「啟用NE2000 PCMCIA網路適配器並綁定到」,下拉列表中選擇「數據包計劃程序微型埠」。確認即可,最後要插入底座才生效哦。當然,你還要在模擬器中設置網路連接的屬性才能上網,一定要看完再操作哦!
截圖如下:
3、設置串口、耳機等
進入「模擬程序屬性」界面的「外圍設備」選項卡,勾上相應的選項即可。截圖如下:
4、插入底座,使設置生效
在VS2008的菜單欄中,工具->設備模擬器管理,右擊你目前正在用的「Pocket PC 2003 SE 模擬程序」,選擇「連接」,然後再次右擊,選擇「插入底座」,現在你的模擬器就可以使用你的電腦上的那些網路、串口、耳機等資源了。截圖如下:
5、設置WinCE模擬器中的網路連接屬性
在WinCE模擬器界面中,開始->設置,選擇下面的「連接」選項卡,單機「網卡」,在「我的網卡連接到」選項卡中選擇「默認Internet設置」,並在其下的列表中選擇「NE2000兼容Ethernet驅動程序」,然後選擇「使用伺服器分配的IP地址」,單擊右上角的OK。最後,打開模擬器裡面的IE,點擊一個天線狀的圖標,選擇網卡連接到「默認Internet設置」,然後你就可以上網了。
E. Win10下開發WinCE的配置
設置目標或測試計算機是配置計算機以便進行自動驅動程序部署、測試和調試的過程。一個測試和調試環境具有兩台計算機:主計算機和目標計算機。目標計算機也稱為「測試計算機」。使用主機上的 Visual Studio 開發和構建驅動程序。調試程序在主機上運行並且位於 Visual Studio 用戶界面中。當測試和調試驅動程序時,驅動程序在目標計算機上運行。
主計算機和目標計算機必須能夠彼此按名稱執行 ping 操作。如果兩台計算機已加入到同一工作組或同一網路域,則此操作可能更容易。如果你的計算機位於工作組中,我們建議你使用路由器(而非集線器或交換機)連接計算機。不支持對虛擬機進行設置。
准備目標計算機以進行設置
在目標計算機上,安裝將用於運行和測試驅動程序的操作系統。
如果在 x86 或 x64 目標計算機上啟用「安全啟動」,則禁用該功能。
如果目標計算機使用 ARM 處理器,則安裝 Windows 調試策略。則無需禁用「安全啟動」。
在目標計算機上,運行與目標計算機平台匹配的 WDK 測試目標安裝程序 MSI。可以在 Remote 下的 Windows 驅動程序工具包 (WDK) 安裝目錄中找到該 MSI。
例如:C:Program Files (x86)Windows Kits10Remotex64WDK Test Target Setup x64-x64_en-us.msi
如果目標計算機運行的是 N 或 KN 版本的 Windows,則安裝適用於 N 和 KN 版本的 Windows 的媒體功能包。
如果目標計算機運行的是 Windows Server,請查找剛才通過 WDK 測試目標設置 MSI 創建的 DriverTest 文件夾。(例如:c:DriverTest)。右鍵單擊「DriverTest」文件夾,然後選擇「屬性」。在「安全」選項卡上,向「經過身份驗證的用戶」組授予「修改」許可權。
驗證主機和目標計算機可以彼此執行 ping 操作。打開命令提示符窗口,並輸入 ping 192.186.X.X(ip_adress)。
如果主計算機和目標計算機已加入到一個工作組,但它們位於不同的子網上,你可能必須調整某些防火牆設置,以便主計算機和目標計算機可以通信。請按照下列步驟進行操作:
兩種方法(選一即可):
方法一:
在目標計算機上的「控制面板」中,轉到「網路和 Internet」>「網路共享中心」。注意你的活動網路。它可能是「公共網路」、「私有網路」或「域」。
在目標計算機上的「控制面板」中,轉到「系統和安全」>「Windows 防火牆」>「高級設置」>「入站規則」。
在入站規則列表中,查找用於活動網路的所有網路發現規則。(例如,查找所有「配置文件」為「專用」的網路發現規則。)雙擊每個規則,然後打開「作用域」選項卡。在「遠程 IP 地址」下,選擇「任何 IP 地址」。
在入站規則列表中,查找用於活動網路的所有「文件和列印機共享」規則。對於每個規則,雙擊該規則,將打開「作用域」選項卡。在「遠程 IP 地址」下,選擇「任何 IP 地址」。
方法二:
「控制面板」->「系統和安全」->「Windows防火牆」->"啟動或關閉Windows防火牆"->"關閉Windows防火牆"
設置目標計算機
現在,你可以隨時在 Visual Studio 中通過主計算機設置目標計算機。
在主計算機上,在 Visual Studio 的「Driver」菜單中,選擇「Test」>「Configure Deivce」。
單擊「Add New Device」。
在「Network host name」中輸入目標計算機的名稱。選擇「Provision Device and choose debugger setting」。
選擇某種調試連接類型,並輸入所需的參數。
設置過程將需要幾分鍾時間,並且可能會自動重新啟動目標計算機一到兩次。設置完成後,單擊「完成」。
WDK 10 與 Microsoft Visual Studio 完全集成。你可以使用 Visual Studio 開發環境生成驅動程序,也可以使用 Microsoft Build Engine (MSBuild) 直接從命令行生成驅動程序。
從 Windows 驅動程序工具包 (WDK) 8 開始,MSBuild 就已經取代了在早期版本的 WDK 中使用的 Windows 構建實用工具 (Build.exe)。現在,WDK 可使用與你用於構建 Visual Studio 項目相同的編譯器和構建工具。使用早期版本的 WDK 構建的驅動程序項目必須進行轉換才能在 Visual Studio 環境中工作。你可以從命令行運行轉換實用工具,也可以通過從現有的源創建新的 Visual Studio 項目來轉換現有驅動程序。
構建驅動程序主要有以下兩種方式(選一即可)
方法一:使用 Visual Studio 構建驅動程序
構建驅動程序的方法與在 Visual Studio 中構建任何項目或解決方案的方法相同。當使用 Windows 驅動程序模板創建新的驅動程序項目時,該模板定義默認(活動)的項目配置以及默認(活動)的解決方案生成配置。
注意你可以將使用 WDK 8 或 Windows 驅動程序工具包 (WDK) 8.1 所創建的項目和解決方案轉換為適用於 Windows 驅動程序工具包 (WDK) 10 和 Visual Studio 2015。打開項目或解決方案前,請先運行 ProjectUpgradeTool。ProjectUpgradeTool 將轉換項目和解決方案,以便可以使用 WDK 10 構建它們。
1、確保安裝在你的計算機上的 SDK 和 WDK 的版本相同。
2、在 Visual Studio 中打開驅動程序項目或解決方案。
3、在「解決方案資源管理器」中右鍵單擊解決方案,並選擇「配置管理器」。
4、從「配置管理器」中,選擇與你感興趣的構建類型相對應的活動解決方案配置(例如,「調試」或「發布」)以及活動解決方案平台(例如,「Win32」)。
5、選擇要構建驅動程序的目標操作系統。導航到「驅動程序」>「常規」中的項目屬性,然後設置 TargetVersion 屬性。
6、為驅動程序或驅動程序包配置項目屬性。 可以為部署、驅動程序簽署或其他任務設置屬性。
7、從「構建」菜單中,單擊「構建解決方案」 (Ctrl+Shift+B)。
方法二:
使用命令行構建驅動程序 (MSBuild)
你可以使用「Visual Studio 命令提示符」窗口和 Microsoft Build Engine (MSBuild) 來從命令行構建驅動程序。
使用「Visual Studio 命令提示符」窗口構建驅動程序
打開「適用於 VS2015 的開發人員命令提示符」窗口。
在此窗口中,你可以藉助 MSBuild.exe,通過指定項目 (.VcxProj) 或解決方案 (.Sln) 文件來構建任何 Visual Studio 項目。
導航到項目目錄並為你的目標輸入 MSbuild 命令。
例如,若要使用默認的平台和配置生成名為 MyDriver.vcxproj 的全新的 Visual Studio 驅動程序項目,請導航到項目目錄並輸入以下 MSBuild 命令:
msbuild /t:clean /t:build .MyDriver.vcxproj
語法 - 若要指定特定的配置和平台,請使用以下命令語法:
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS
例如,以下命令將為「調試」配置、「Win32」平台和 Windows 10 生成一個通用 Windows 驅動程序。
msbuild /t:clean /t:build .MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion=」Windows10」 /p:TargetPlatformVersion=」10.0.10010.0」
「TargetPlatformVersion」設置為可選項,並且允許你指定用於生成的工具包版本。默認值為使用最新的工具包。
使用 Visual Studio 中的選項增加構建輸出詳細信息的步驟
1、單擊 Tools > Options。
2、單擊「項目和解決方案」文件夾並單擊「生成並運行」。
3、更改「MSBuild 項目構建輸出詳細信息」和「MSBuild 項目構建日誌文件詳細信息」。 默認情況下,這些都設置為「最少」。
F. VS2008 開發wince軟體
如果你安裝的是vs2008完整版的話,不需要另裝軟體,
但需要做一些配置,具體步驟如下:
(1) 確認PC同步已經建立並連接正常(ActiveSync已連接)
(2) 點 VS2008 菜單「工具」->「選項」 ,出現「選項」窗口,
在左側一欄中選擇「設備工具」->「設備」 ,
在右側中的各個下拉列表選擇」Windows CE「
點「屬性」按鈕,出現「Windows CE 設備 屬性窗口」 ,
在引導程序中選擇"ActiveSync啟動提供程序"
點「配置」按鈕,出現「配置 TCP/IP傳輸」窗口,選擇默認配置,點擊"確定"返回
(3) 點 VS2008 菜單「工具」->「連接到設備」 ,出現「連接到設備」設置窗口,選擇平台為"Windows CE",選擇設備為」Windows CE 設備「
點「連接」按鈕,此時VS2008 開始和開發板進行連接握手:
稍等一會,出現連接成功的提示,點「關閉」按鈕返回 VS2008工作主界面:
(4) 接上面的步驟,點菜單「調試」->「啟動調試」或者直接按 F5 鍵開始調試過程。
出現「部署 my2440」窗口,選擇「Windows CE設備」 ,並點「部署」按鈕開始部
署
(5) 如果程序沒有問題,則下載成功
G. 構建WinCE開發環境時,安裝Windows Embedded CE 6.0,Microsoft Device Emulator 2.0的作用
按照我所說的步驟進行,得到下圖:(在我的貼吧里有(wince吧))
一.定製wince6.0操作系統
1.在VS2005里新建項目中時,選擇創建PlatformbuilderforCE6.0的OSDesign,新項目可以自命名,這里命名為「zhenxing」。
2.創建zhenxing的向導中,BSP一定要選擇「DeviceEmulator:ARMV4I」,下一步;
3.模板(DesignTemplates)選擇「PDADevice」,下一步;
4.選擇「MobileHandheld」,下一步;
5.應用程序(Application&Media)就隨自己的需要選擇,下一步;
6.網路和通信(Networking&Communications)在此只選擇「LocalAreaNetwork(LAN)」,下一步;
7.選擇完成;
8.選擇Acknowledge;
到此工程建完;
二.添加組件(可以根據需要添加,這里主要添加漢字相關的組件)
(1)添加漢字字型檔(這里要記得加入,很多人這里沒有加入,就出現漢字只看到方框的現象):
1.在CatalogView添加「CoreOS」-->「CEBASE」-->「International」-->「LocaleSpecificsupport」-->「Chinese(Simplified)」-->「Fonts」-->「SimSun&NSimSum(choose1)」-->「SimSun&NSimSun」或者「SimSum&NSimSun(Subset2_50)」;
2.在CatalogView添加「CoreOS」-->「CEBASE」-->「International」-->「LocaleSpecificsupport」-->「Chinese(Simplified)」-->「GB18030DataConverter」和「」;
(2)添加中文輸入法:
在CatalogView添加「CoreOS」-->「CEBASE」-->「International」-->「LocaleSpecificsupport」-->「Chinese(Simplified)」-->「InputMethodEditor」-->「MSPY3.0forWindowsEmbeddedCE」;
(3)VS2005中菜單「項目」-->「zhenxing(項目名)屬性」,配置選擇「所有配置」,配置屬性-->「BuildOptions」,在「BuildOptions」中去掉「EnableKITL(noIMGNOKITL=1)」(這里如果加入了KITL功能的話,可能在模擬器運行的時候,會一直是黑屏的);
(4)「Locale」中,Locales先ClearAll,然後選擇「中文(中國)」,Defaultlocal選擇「中文(中國)」;
(5)運行VS2005菜單「生成」-->「生成zhenxing」;
(安裝R3後,發現簡單的deviceemuloter的工程都編譯不過去了,
提示don'tknowhowtomakeatlsd.lib錯誤,
後來發現在catalogview中吧ActiveTemlateLibrary選擇上就可以了。
還有一個疑問就是如果我不需要ATL,也需要把這個選擇嗎
)
三.構建SDK:
1.運行VS2005菜單「項目」-->「AddNewSDK…」,在SDK屬性頁中填寫必要的信息,屬性「Emulation」中Configuration選擇Debug,可以設置模擬器的顯示屏大小及色深,還有內存大小,在此設置為240x320,16色深,128M內存,然後「應用」,「確定」。。
2.然後運行VS2005菜單「生成」-->「BuildAllSDK…」,順利的話,就會在%WINCEROOTOSDesigns\下會有zhenxing.msi;
四.配置VS2005:
1、先安裝生成好的zhenxing.msi。運行VisualStudio2005,選擇菜單「工具->選項」,打開選項設置對話框,從左邊的樹型列表中選擇「設備工具->設備」,右邊的下拉列表框拉到底可以看到「zhenxing」,這就是剛剛生成的那個模擬器。下面的設備列表裡有兩項,雙擊zhenxing,設定傳輸為DMA傳輸,再點擊「模擬器選項」,在「顯示」選項卡里設定好模擬器屏幕尺寸,顏色深度等,全部保存。
2、用VS2005新建一個智能設備項目,向導選擇平台時,先刪除PocketPC2003,選擇zhenxing,完成。然後按F5運行程序,順利的話定製的模擬器就會出來了(不過這個過程比較慢,需要等待一段時間)。