開始WinCE7的第一個項目——虛擬機上的CEPC

轉自http://developer.51cto.com/art/201104/257488.htm

近日,微軟發佈了Windows Embedded Compact 7(以下簡稱WEC7)的Public Community Technology Preview(以下簡稱PCTP)版本。一直盛傳的WinCE7是否就因此改名爲WEC7還不得而知,至少目前開發者們稱其爲WinCE7,也是延續着對WinCE的期望。

作爲預覽版本,PCTP已經提供了正式版的大部分內容,作爲技術開發者,我們可以建立WEC7的項目來測試WEC7的各種新特性。

作爲第一個WEC7項目,最好的就是虛擬機上運行的CEPC(以下簡稱Virtual CEPC)了,因爲我們的開發工具本來就是PC,所以不需要任何外部硬件,就可以開始玩轉WEC7了。本文的目的就是幫助大家在自己的PC上建立起WEC7的虛擬機CEPC項目,開始自己的WEC7之旅。

關於WEC7開發環境的安裝,大家可以參考相關文章,這裏就不再贅述。
下面就開始我們第一次的WEC7之旅:

一 系統要求
對於Windows 7的用戶而言,需要安裝下列軟件及環境:
1. Windows 7專業版,Windows 7旗艦版或者Windows 7企業版(很遺憾Windows 7家庭高級版不在支持之列)
2. Windows Virtual PC
3. Visual Studio 2008
4. Windows Embedded Compact 7

Windows XP或者Windows Vista的用戶需要:
1. Windows XP專業版,Windows Vista商業版,Windows Vista旗艦版或者Windows Vista企業版
2. Windows Virtual PC 2007
3. Visual Studio 2008
4. Windows Embedded Compact 7

這裏需要提示一點,就是如果要建立CEPC項目的話,在安裝WEC7的時候一定要選上x86 Architecture的支持。
這裏就以Windows 7爲平臺,給大家介紹整個項目建立過程。在Windows XP及Windows Vista下面也是類似的。

二 製作CEPC系統鏡像
要想在Virtual PC下面運行WEC7,首先你需要建立一個CEPC的項目來獲得系統鏡像。因此需要下面幾個步驟
1. 在Platform Builder下建立一個基礎的項目
2. 配置項目以符合Virtual CEPC的要求
3. 添加刪除一些系統組件
4. 選擇合適的Virtual PC鍵盤驅動
5. 編譯項目

下面就對這些步驟一一做詳細的介紹

在Platform Builder下建立一個基礎的項目:
這個步驟對於使用過WinCE以前版本的開發者來說是非常輕鬆的工作。打開WEC7的開發環境Visual Studio 2008,選擇“文件”菜單下新建一個項目。
在“新建項目”頁中,選擇“Platform Builder 2008”,然後在右邊模板處,選擇“OS Design”,名字我們叫做VCEPC。 

 

配置項目以符合Virtual CEPC的要求:
點擊“OK”之後下一步到選擇BSP的窗口,這裏選擇“Virtual PC: x86”。


接下來就會出現設計模板頁,在本頁中你可以選擇想要用在模擬器中的模板。這裏我們選擇Enterprise Web Pad作爲Virtual CEPC的基礎模板。
在設計模板頁裏點開“PDA Device”目錄,選擇其中的“Enterprise Web Pad”。 


單擊“Next”進入應用程序和媒體頁,這裏你可以選擇任意你想要加入到項目中來的媒體組件及應用程序。 


爲了演示,這裏我們直接點擊“Next”。隨後進入到網路與通信設置頁,這裏我們選上“Wired Local Area Network”,以便以後我們通過虛擬網卡與本地PC連接。 

選擇之後,點擊“Next”,我們就來到了新建項目的最後一步,這裏有一個選項可以讓你在完成配置之後立即編譯這個項目。因爲後面我們還需要做一些修改,所以這裏把這個選項留空。

 


到這裏,項目的新建工作就全部完成了。點擊“Finish”。
這時根據你選擇的系統組件,可能會彈出來一個安全警告窗口,只需要選擇“Acknowledge”即可。
添加刪除一些系統組件:
下面你可以根據自己的需要添加其他一些想要的系統組件。
比如,大家對WEC7的Silverlight for Windows Embedded(以下簡稱SWE)都很感興趣,我們下面就添加SWE的支持到我們的項目裏來。
在項目的開發環境中選擇“Catalog Items View”配置窗口。(如果你的開發環境默認沒有顯示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”來保存修改。 

選擇合適的Virtual PC鍵盤驅動:
下面我們還需要將鍵盤驅動加入到項目中來。這裏根據你使用的Virtual PC版本不同,設置略有不同。
如同前面添加SWE支持的方法,在“Catalog Items View”中找到如下路徑“BSP”->“Virtual PC”-> “Device Drivers”->“Keyboard”。
如果你使用的是Virtual PC 2007,選擇“VCEPC Keyboard driver:VPC2007”;如果使用Windows Virtual PC,就選擇“VCEPC Keyboard driver:WIN7VPC”。我們這裏使用的環境是Windows 7配合Virtual PC,所以我們選擇後者。 

 
添加好組件之後,選擇保存。
編譯項目:
在開發環境的“Build”菜單中選擇“Build Solution”就可以開始編譯過程了。
在“Output”窗口中你可以看到編譯過程中產生的信息。整個編譯過程還是需要花費一些時間的,具體取決於你的PC的速度。
如果編譯過程中出現錯誤,可以仔細對比前面的設置步驟並檢查自己的系統環境是否符合需求,另外關閉殺毒軟件也許可以解決一些編譯問題。
編譯好之後,你會在WEC7的安裝目錄下的如下路徑找到系統鏡像文件:“你的WEC7安裝目錄\OSDesigns\VCEPC\VCEPC\RelDir\ VirtualPC_x86_Release\NK.bin”。隨後將介紹如何把這個VCEPC系統鏡像在Virtual PC中加載起來。

三 配置Virtual PC(以下簡稱VPC)
在獲得了CEPC的鏡像之後,我們需要配置一下VPC,新建一個虛擬機以便運行CEPC的鏡像。
首先運行VPC,這時會打開一個叫做“虛擬機”的文件夾。這個是Windows 7中不同的一點,VPC當作一個系統補丁安裝,並且管理上不是一個單獨的應用程序了。
在這個文件夾中,點擊上方的“創建虛擬機”按鈕,會彈出來“創建虛擬機”的嚮導窗口,這裏選擇好虛擬機文件夾位置,名稱我們叫做“VCEPC”。 


下一步進入到內存和網絡配置。這裏可以指定使用的RAM大小,我們使用默認的512MB。 


點擊下一步,將會進入到創建虛擬硬盤的窗口,這裏,WEC7已經給我們準備好了一個虛擬硬盤文件,所以我們選擇“使用現有虛擬硬盤”,然後位置爲“你的WEC7安裝目錄\platform\VirtualPC\VM\hd0_sample.vhd”。 

點擊“創建”之後,你會在“虛擬機”文件夾下看到一個叫做“VCEPC.vmcx”的文件,雙擊啓動虛擬機,你會看到啓動程序如下:

  
在5秒之內按下鍵盤空格鍵會進入到啓動菜單中: 

四 啓動CEPC
1 配置Platform Builder
在配置好VPC之後,我們返回來看Platform Builder(以下簡稱PB)中的配置。系統鏡像需要傳輸到VPC中才能運行,這種傳輸我們使用虛擬網卡的技術,通過網絡(用過以前WinCE版本的朋友應該很清楚,過程類似於EBoot下載鏡像的過程)把鏡像傳輸給VPC,然後由VPC啓動。所以前面VPC中使用的虛擬硬盤中,實際上已經包含了類似EBoot一樣的啓動代碼。
在瞭解原理之後,下面的配置過程對於用過EBoot的朋友會非常簡單。我們需要建立網絡傳輸,首先設置一下PB。
在Visual Studio 2008中,選擇“Target”菜單,然後選擇“Connectivity Options”,然後選擇“Add Device”。這時會彈出“Target Device Connectivity Options”對話框,在“New target device name”裏輸入VCEPC,在“Associated OS Design/SDK”中選擇“Windows CE”,然後點擊“Add”。
在“Target Device Connectivity Options”下有幾個選項需要我們注意:“Kernel Download”,“Kernel Transport”,以及“ Kernel Debugger”。在“Target Device”下,選擇你的目標設備名稱,這裏是VCEPC。“Kernel Download”中選擇“Ethernet”,然後點擊“Settings”按鈕,會打開“Ethernet Download Settings”對話框。目前這個對話框還是空的,因爲還沒有找到接收傳輸的設備,我們就停在這裏,繼續操作我們的VPC。

2 設置VPC啓動參數
剛纔我們成功的在VPC中進入到啓動菜單,這個菜單大家一定眼熟,因爲看起來很像EBoot的菜單。實際上這個就是x86下的EBoot。
菜單項如下:
[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

我們首選需要配置啓動源,所以選擇第二項“[2] Select Boot Source”,在VPC的窗口下使用鍵盤輸入“2”,進入Select Boot Source配置。
這裏會有兩個選項
[1] Boot Drive
[2] DEC21140 at PCI bus 0 dev 10 fnc 0
這裏我們選擇“2”。實際上DEC21140 at PCI bus 0 dev 10 fnc 0是一個虛擬網卡,用來共享你的物理網卡,從而與你的PC通信。選擇好之後會有如下提示:
Boot Device is set to DEC21140 at PCI bus 0 dev 10 fnc 0
隨後跳轉到主菜單。
主菜單下,我們可以選擇“Show Current Settings”來檢查當前的配置,你會看到類似下面的內容:
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

一般來說這裏就可以了。但是我們需要注意一點,就是DHCP的問題。虛擬網卡會嘗試使用DHCP來獲得IP地址,如果你的路由器沒有開啓DHCP功能,它是拿不到IP地址的,這時候我們可以手動指定一個IP地址。在主菜單中選擇“Network Settings”,隨後選擇“Set IP Address”,然後根據提示,輸入你想要設置的IP地址,注意要與你的PC的IP地址保持在同一網段。比如你的PC的IP地址爲192.168.1.2,那麼你可以設置VPC的IP地址爲192.168.1.3。然後選擇“Enable/disable DHCP”,這時提示是否disable DHCP,輸入y確定。
回到主菜單之後,我們可以再次進入“Show Current Settings”,這時我們就可以看到剛纔設置的IP地址了。隨後在主菜單中選擇“Save Settings”來保存我們的設置。

3 啓動CEPC鏡像
在主菜單中,選擇“Exit and Continue”,這時會進入等待引導下載鏡像的過程,提示信息如下:
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 1)
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 2)
這裏就是在發送BOOTME信息,“PC-0003FF9D5B30”就是你的設備名。
這時我們返回到剛纔PB的“Ethernet Download Settings”對話框。現在我們就會在“Active target devices”列表中看到我們的設備名稱(這裏就是“PC-0003FF9D5B30”)及IP地址了。選擇我們的設備名稱,然後單擊“Apply”確定。關閉“Target Device Connectivity”對話框。
下面就可以下載系統鏡像到VPC當中了。
在Visual Studio 2008中,在“Device”下拉框中,選擇我們的設備配置名,這裏就是“VCEPC”。然後在“Target”菜單中選擇“Attach Device”,這時我們會看到“Device Status”窗口,顯示傳輸鏡像的進度及狀態。
在VPC端,我們也可以看到,傳出過程的進度,在傳輸完成後,我們就可以進入到WEC7的界面中了。


現在,VCEPC的創建及使用過程就全部結束了。大家可以在自己的PC上實踐WEC7,而不用依賴與其他的硬件,如開發板等。同時也可以在PC上測試自己的應用程序,特別是大家感興趣的Silverlight等。
對於使用Windows XP配合Virtual PC 2007的朋友,就是配置Virtual PC 2007的過程不一樣而已,總體思路是一樣的。
好了,現在就馬上行動,建立自己的第一個WEC7項目,體驗一下WEC7吧! 

參考文獻:
1. Mark McLemore,《Getting Started with Virtual CEPC》,2010-5

 

在實際操作中我主要碰到了以下幾個問題,然後分享給大家:

1,不知道需要安裝虛擬機,CE7是沒有模擬器的。在裝完wince7之後的幫助文檔都在這個目錄:C:\Program Files (x86)\Windows Embedded Compact 7\Documentation ,Getting Started with Virtual CEPC.docx這個文檔裏有地址下載虛擬機的地址 。

2,按照最上面說的在下載鏡像的時候出現了一個錯誤:

ERROR: BootTransportPb: TFTP timeout occured!
ERROR: BootDownloadBin!ImageType: BootTransportRead Failed!

參照國外的一個論壇的方法就是禁用網卡的“UDP硬件校驗和”(UDP CRC checksum)就可以解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章