開始WinCE7的第一個(gè)項(xiàng)目——虛擬機(jī)上的CEPC
原創(chuàng)近日,微軟發(fā)布了Windows Embedded Compact 7(以下簡稱WEC7)的Public Community Technology Preview(以下簡稱PCTP)版本。一直盛傳的WinCE7是否就因此改名為WEC7還不得而知,至少目前開發(fā)者們稱其為WinCE7,也是延續(xù)著對(duì)WinCE的期望。
作為預(yù)覽版本,PCTP已經(jīng)提供了正式版的大部分內(nèi)容,作為技術(shù)開發(fā)者,我們可以建立WEC7的項(xiàng)目來測試WEC7的各種新特性。
作為***個(gè)WEC7項(xiàng)目,***的就是虛擬機(jī)上運(yùn)行的CEPC(以下簡稱Virtual CEPC)了,因?yàn)槲覀兊拈_發(fā)工具本來就是PC,所以不需要任何外部硬件,就可以開始玩轉(zhuǎn)WEC7了。本文的目的就是幫助大家在自己的PC上建立起WEC7的虛擬機(jī)CEPC項(xiàng)目,開始自己的WEC7之旅。
關(guān)于WEC7開發(fā)環(huán)境的安裝,大家可以參考相關(guān)文章,這里就不再贅述。
下面就開始我們***次的WEC7之旅:
一 系統(tǒng)要求
對(duì)于Windows 7的用戶而言,需要安裝下列軟件及環(huán)境:
1. Windows 7專業(yè)版,Windows 7旗艦版或者Windows 7企業(yè)版(很遺憾Windows 7家庭高級(jí)版不在支持之列)
2. Windows Virtual PC
3. Visual Studio 2008
4. Windows Embedded Compact 7
Windows XP或者Windows Vista的用戶需要:
1. Windows XP專業(yè)版,Windows Vista商業(yè)版,Windows Vista旗艦版或者Windows Vista企業(yè)版
2. Windows Virtual PC 2007
3. Visual Studio 2008
4. Windows Embedded Compact 7
這里需要提示一點(diǎn),就是如果要建立CEPC項(xiàng)目的話,在安裝WEC7的時(shí)候一定要選上x86 Architecture的支持。
這里就以Windows 7為平臺(tái),給大家介紹整個(gè)項(xiàng)目建立過程。在Windows XP及Windows Vista下面也是類似的。
二 制作CEPC系統(tǒng)鏡像
要想在Virtual PC下面運(yùn)行WEC7,首先你需要建立一個(gè)CEPC的項(xiàng)目來獲得系統(tǒng)鏡像。因此需要下面幾個(gè)步驟
1. 在Platform Builder下建立一個(gè)基礎(chǔ)的項(xiàng)目
2. 配置項(xiàng)目以符合Virtual CEPC的要求
3. 添加刪除一些系統(tǒng)組件
4. 選擇合適的Virtual PC鍵盤驅(qū)動(dòng)
5. 編譯項(xiàng)目
下面就對(duì)這些步驟一一做詳細(xì)的介紹
在Platform Builder下建立一個(gè)基礎(chǔ)的項(xiàng)目:
這個(gè)步驟對(duì)于使用過WinCE以前版本的開發(fā)者來說是非常輕松的工作。打開WEC7的開發(fā)環(huán)境Visual Studio 2008,選擇“文件”菜單下新建一個(gè)項(xiàng)目。
在“新建項(xiàng)目”頁中,選擇“Platform Builder 2008”,然后在右邊模板處,選擇“OS Design”,名字我們叫做VCEPC。
#p# 配置項(xiàng)目以符合Virtual CEPC的要求:
點(diǎn)擊“OK”之后下一步到選擇BSP的窗口,這里選擇“Virtual PC: x86”。
接下來就會(huì)出現(xiàn)設(shè)計(jì)模板頁,在本頁中你可以選擇想要用在模擬器中的模板。這里我們選擇Enterprise Web Pad作為Virtual CEPC的基礎(chǔ)模板。
在設(shè)計(jì)模板頁里點(diǎn)開“PDA Device”目錄,選擇其中的“Enterprise Web Pad”。
單擊“Next”進(jìn)入應(yīng)用程序和媒體頁,這里你可以選擇任意你想要加入到項(xiàng)目中來的媒體組件及應(yīng)用程序。
為了演示,這里我們直接點(diǎn)擊“Next”。隨后進(jìn)入到網(wǎng)路與通信設(shè)置頁,這里我們選上“Wired Local Area Network”,以便以后我們通過虛擬網(wǎng)卡與本地PC連接。
#p# 選擇之后,點(diǎn)擊“Next”,我們就來到了新建項(xiàng)目的***一步,這里有一個(gè)選項(xiàng)可以讓你在完成配置之后立即編譯這個(gè)項(xiàng)目。因?yàn)楹竺嫖覀冞€需要做一些修改,所以這里把這個(gè)選項(xiàng)留空。
到這里,項(xiàng)目的新建工作就全部完成了。點(diǎn)擊“Finish”。
這時(shí)根據(jù)你選擇的系統(tǒng)組件,可能會(huì)彈出來一個(gè)安全警告窗口,只需要選擇“Acknowledge”即可。
添加刪除一些系統(tǒng)組件:
下面你可以根據(jù)自己的需要添加其他一些想要的系統(tǒng)組件。
比如,大家對(duì)WEC7的Silverlight for Windows Embedded(以下簡稱SWE)都很感興趣,我們下面就添加SWE的支持到我們的項(xiàng)目里來。
在項(xiàng)目的開發(fā)環(huán)境中選擇“Catalog Items View”配置窗口。(如果你的開發(fā)環(huán)境默認(rèn)沒有顯示Catalog Items View,你可以在“View”菜單下選擇“Other Windows”,然后選擇“Catalog Items View”)然后打開“Core OS”->“Windows Embedded Compact” -> “Shell and User Interface” -> “Silverlight for Windows Embedded”。然后勾選“Silverlight for Windows Embedded”。成功之后選擇“File”->“Save All”來保存修改。
#p# 選擇合適的Virtual PC鍵盤驅(qū)動(dòng):
下面我們還需要將鍵盤驅(qū)動(dòng)加入到項(xiàng)目中來。這里根據(jù)你使用的Virtual PC版本不同,設(shè)置略有不同。
如同前面添加SWE支持的方法,在“Catalog Items View”中找到如下路徑“BSP”->“Virtual PC”-> “Device Drivers”->“Keyboard”。
如果你使用的是Virtual PC 2007,選擇“VCEPC Keyboard driver:VPC2007”;如果使用Windows Virtual PC,就選擇“VCEPC Keyboard driver:WIN7VPC”。我們這里使用的環(huán)境是Windows 7配合Virtual PC,所以我們選擇后者。
添加好組件之后,選擇保存。
編譯項(xiàng)目:
在開發(fā)環(huán)境的“Build”菜單中選擇“Build Solution”就可以開始編譯過程了。
在“Output”窗口中你可以看到編譯過程中產(chǎn)生的信息。整個(gè)編譯過程還是需要花費(fèi)一些時(shí)間的,具體取決于你的PC的速度。
如果編譯過程中出現(xiàn)錯(cuò)誤,可以仔細(xì)對(duì)比前面的設(shè)置步驟并檢查自己的系統(tǒng)環(huán)境是否符合需求,另外關(guān)閉殺毒軟件也許可以解決一些編譯問題。
編譯好之后,你會(huì)在WEC7的安裝目錄下的如下路徑找到系統(tǒng)鏡像文件:“你的WEC7安裝目錄\OSDesigns\VCEPC\VCEPC\RelDir\ VirtualPC_x86_Release\NK.bin”。隨后將介紹如何把這個(gè)VCEPC系統(tǒng)鏡像在Virtual PC中加載起來。
三 配置Virtual PC(以下簡稱VPC)
在獲得了CEPC的鏡像之后,我們需要配置一下VPC,新建一個(gè)虛擬機(jī)以便運(yùn)行CEPC的鏡像。
首先運(yùn)行VPC,這時(shí)會(huì)打開一個(gè)叫做“虛擬機(jī)”的文件夾。這個(gè)是Windows 7中不同的一點(diǎn),VPC當(dāng)作一個(gè)系統(tǒng)補(bǔ)丁安裝,并且管理上不是一個(gè)單獨(dú)的應(yīng)用程序了。
在這個(gè)文件夾中,點(diǎn)擊上方的“創(chuàng)建虛擬機(jī)”按鈕,會(huì)彈出來“創(chuàng)建虛擬機(jī)”的向?qū)Т翱?,這里選擇好虛擬機(jī)文件夾位置,名稱我們叫做“VCEPC”。
下一步進(jìn)入到內(nèi)存和網(wǎng)絡(luò)配置。這里可以指定使用的RAM大小,我們使用默認(rèn)的512MB。
點(diǎn)擊下一步,將會(huì)進(jìn)入到創(chuàng)建虛擬硬盤的窗口,這里,WEC7已經(jīng)給我們準(zhǔn)備好了一個(gè)虛擬硬盤文件,所以我們選擇“使用現(xiàn)有虛擬硬盤”,然后位置為“你的WEC7安裝目錄\platform\VirtualPC\VM\hd0_sample.vhd”。
#p# 點(diǎn)擊“創(chuàng)建”之后,你會(huì)在“虛擬機(jī)”文件夾下看到一個(gè)叫做“VCEPC.vmcx”的文件,雙擊啟動(dòng)虛擬機(jī),你會(huì)看到啟動(dòng)程序如下:
在5秒之內(nèi)按下鍵盤空格鍵會(huì)進(jìn)入到啟動(dòng)菜單中:
四 啟動(dòng)CEPC
1 配置Platform Builder
在配置好VPC之后,我們返回來看Platform Builder(以下簡稱PB)中的配置。系統(tǒng)鏡像需要傳輸?shù)絍PC中才能運(yùn)行,這種傳輸我們使用虛擬網(wǎng)卡的技術(shù),通過網(wǎng)絡(luò)(用過以前WinCE版本的朋友應(yīng)該很清楚,過程類似于EBoot下載鏡像的過程)把鏡像傳輸給VPC,然后由VPC啟動(dòng)。所以前面VPC中使用的虛擬硬盤中,實(shí)際上已經(jīng)包含了類似EBoot一樣的啟動(dòng)代碼。
在了解原理之后,下面的配置過程對(duì)于用過EBoot的朋友會(huì)非常簡單。我們需要建立網(wǎng)絡(luò)傳輸,首先設(shè)置一下PB。
在Visual Studio 2008中,選擇“Target”菜單,然后選擇“Connectivity Options”,然后選擇“Add Device”。這時(shí)會(huì)彈出“Target Device Connectivity Options”對(duì)話框,在“New target device name”里輸入VCEPC,在“Associated OS Design/SDK”中選擇“Windows CE”,然后點(diǎn)擊“Add”。
在“Target Device Connectivity Options”下有幾個(gè)選項(xiàng)需要我們注意:“Kernel Download”,“Kernel Transport”,以及“ Kernel Debugger”。在“Target Device”下,選擇你的目標(biāo)設(shè)備名稱,這里是VCEPC?!癒ernel Download”中選擇“Ethernet”,然后點(diǎn)擊“Settings”按鈕,會(huì)打開“Ethernet Download Settings”對(duì)話框。目前這個(gè)對(duì)話框還是空的,因?yàn)檫€沒有找到接收傳輸?shù)脑O(shè)備,我們就停在這里,繼續(xù)操作我們的VPC。
2 設(shè)置VPC啟動(dòng)參數(shù)
剛才我們成功的在VPC中進(jìn)入到啟動(dòng)菜單,這個(gè)菜單大家一定眼熟,因?yàn)榭雌饋砗芟馝Boot的菜單。實(shí)際上這個(gè)就是x86下的EBoot。
菜單項(xiàng)如下:
[1] Show Current Settings
[2] Select Boot Source
[3] Select KITL Device
[4] Network Settings
[5] Display Settings
[6] Debug Port Settings
[7] Save Settings
[0] Exit and Continue
#p# 我們***需要配置啟動(dòng)源,所以選擇第二項(xiàng)“[2] Select Boot Source”,在VPC的窗口下使用鍵盤輸入“2”,進(jìn)入Select Boot Source配置。
這里會(huì)有兩個(gè)選項(xiàng)
[1] Boot Drive
[2] DEC21140 at PCI bus 0 dev 10 fnc 0
這里我們選擇“2”。實(shí)際上DEC21140 at PCI bus 0 dev 10 fnc 0是一個(gè)虛擬網(wǎng)卡,用來共享你的物理網(wǎng)卡,從而與你的PC通信。選擇好之后會(huì)有如下提示:
Boot Device is set to DEC21140 at PCI bus 0 dev 10 fnc 0
隨后跳轉(zhuǎn)到主菜單。
主菜單下,我們可以選擇“Show Current Settings”來檢查當(dāng)前的配置,你會(huì)看到類似下面的內(nèi)容:
Boot source: DEC21140 at PCI bus 0 dev 10 fnc 0
KITL device: DEC21140 at PCI bus 0 dev 10 fnc 0
KITL config: enabled, interrupt mode, VMINI enabled
DHCP: enabled
Display: 640 X 480 X 32 / Full Screen
Debug Port: COM1 38400 baud
一般來說這里就可以了。但是我們需要注意一點(diǎn),就是DHCP的問題。虛擬網(wǎng)卡會(huì)嘗試使用DHCP來獲得IP地址,如果你的路由器沒有開啟DHCP功能,它是拿不到IP地址的,這時(shí)候我們可以手動(dòng)指定一個(gè)IP地址。在主菜單中選擇“Network Settings”,隨后選擇“Set IP Address”,然后根據(jù)提示,輸入你想要設(shè)置的IP地址,注意要與你的PC的IP地址保持在同一網(wǎng)段。比如你的PC的IP地址為192.168.1.2,那么你可以設(shè)置VPC的IP地址為192.168.1.3。然后選擇“Enable/disable DHCP”,這時(shí)提示是否disable DHCP,輸入y確定。
回到主菜單之后,我們可以再次進(jìn)入“Show Current Settings”,這時(shí)我們就可以看到剛才設(shè)置的IP地址了。隨后在主菜單中選擇“Save Settings”來保存我們的設(shè)置。
3 啟動(dòng)CEPC鏡像
在主菜單中,選擇“Exit and Continue”,這時(shí)會(huì)進(jìn)入等待引導(dǎo)下載鏡像的過程,提示信息如下:
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 1)
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 2)
這里就是在發(fā)送BOOTME信息,“PC-0003FF9D5B30”就是你的設(shè)備名。
這時(shí)我們返回到剛才PB的“Ethernet Download Settings”對(duì)話框?,F(xiàn)在我們就會(huì)在“Active target devices”列表中看到我們的設(shè)備名稱(這里就是“PC-0003FF9D5B30”)及IP地址了。選擇我們的設(shè)備名稱,然后單擊“Apply”確定。關(guān)閉“Target Device Connectivity”對(duì)話框。
下面就可以下載系統(tǒng)鏡像到VPC當(dāng)中了。
在Visual Studio 2008中,在“Device”下拉框中,選擇我們的設(shè)備配置名,這里就是“VCEPC”。然后在“Target”菜單中選擇“Attach Device”,這時(shí)我們會(huì)看到“Device Status”窗口,顯示傳輸鏡像的進(jìn)度及狀態(tài)。
在VPC端,我們也可以看到,傳出過程的進(jìn)度,在傳輸完成后,我們就可以進(jìn)入到WEC7的界面中了。
現(xiàn)在,VCEPC的創(chuàng)建及使用過程就全部結(jié)束了。大家可以在自己的PC上實(shí)踐WEC7,而不用依賴與其他的硬件,如開發(fā)板等。同時(shí)也可以在PC上測試自己的應(yīng)用程序,特別是大家感興趣的Silverlight等。
對(duì)于使用Windows XP配合Virtual PC 2007的朋友,就是配置Virtual PC 2007的過程不一樣而已,總體思路是一樣的。
好了,現(xiàn)在就馬上行動(dòng),建立自己的***個(gè)WEC7項(xiàng)目,體驗(yàn)一下WEC7吧!
參考文獻(xiàn):
1. Mark McLemore,《Getting Started with Virtual CEPC》,2010-5