EVC入門之一: 實現遠端偵錯的最佳硬體途徑
EVC 裡TOOLS->Config Platform Manager裡, 對某個DEVICE點PROPERTIES, 這個對話方塊裡可以選擇EVC偵錯工具時所用的硬體途徑, 其實就少少的這幾個選項, 但由於本人的不思進取, 從開始接觸到現在完全搞明白, 前後也將近半年時間才全部理解完.
方法一: KITL + CESH SERVER
在去年最早開發應用程式的時候,整組人都用的這個設定:
Transport: KITL Transport for Windows CE
Startup: CESH Server for Windows CE.
在MS的文檔裡強調了"To connect to a target device with the CESH startup server, you must enable KITL on the target device" (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcepb40/html/pbconceshstartupserver.asp) 從PB裡實現KITL的三種硬體途徑來看, 在EVC裡使用這第一種方法來偵錯工具的代價就是三者選一
(1) 用了ETHERNET KITL, 那麼EVC調試中就犧牲掉網卡,這樣就無法調試需要訪問網路資源的程式. ETHERNET KITL一起來後就把ETHER DRIVER給DISABEL掉了, 傳說中有ETHER KITL和ETHERNET DRIVER同時使用的,可惜偶沒見到過, 期待大蝦把它改出來.
(2) 用了RNDIS KITL, 那麼EVC調式中就犧牲掉USB口, 不能接鍵盤滑鼠隨身碟等等. 這樣搞的話其他開發人員就要跟我拼了.
(3) 用了SERIAL KITL, 犧牲掉調試速度, 調程式的時候旁邊泡杯茶, 放一份報紙~
方法二: ActiveSync + ActiveSync
這 是我接手PLAYER項目後力推的方案, 好處是可以把作業系統在FLASH裡燒好, 這樣應用程式開發人員就可以無視作業系統, 並且EVC裡調程式的時候不需要開PB了. (PB和EVC同時開, 256M記憶體的PC會搞得非常慢). 並且一旦調試中目標板上跑死機了,簡單重啟一下就行了,可以省去PB重新連線時間. 最重要的是可以空出ETHERNET資源,來調試PLAYER裡那些HTTP, RTSP等需要用到網路的模組了.
但問題是同樣地要損失掉USB PORT, 不能接鍵盤滑鼠,當時我還特意寫了個應用程式, 在PC端模仿遙控器操作,通過SERIAL給目標板上發遙控器動作的代碼過去, 猥瑣得一塌糊塗.
方法三: TCP/IP + MANUAL SERVER 閃亮登場
嗷傲, 燈光音效, 近乎完美的方法. 其實也很簡單,只不過滿足於前面兩種方法的時間太長了, 一直沒有深究下去.
具體設定是在Device Properties裡面選擇
Transport: TCP/IP Transport for Windows CE
Startup: Manual Server
如所示
這時候去點TEST, EVC這邊會彈出這個對話方塊.
如果不是特意在BIB檔案裡加入這三個檔案的話,一般IMAGE裡是不包含他們的. 這三個檔案可以在 WINCE500/OTHERS/PLATMAN/TARGET/ 下對應CPU類型的子目錄裡找到. 拿個隨身碟COPY到目標板的/WINDOWS/目錄下.
然 後目標板上 開始->運行->cmd, 在命令列視窗裡敲入對話方塊裡的那行命令, 這時候目標板上的命令列視窗會處於等待狀態,而不是出現下一個提示符, 此時在PC端的EVC按下OK, 那麼串連就成功了. 在調試的時候同樣地, 先在目標板上敲命令列,處於等待狀態時, EVC這邊點GO就行了.
然後我們注意看這條命 令: CEMGRC.EXE /S /T:TCPIPC.DLL /Q /D:10.100.148.124:2777,可把這條命令的ip指定,假如指定為192.168.0.111,連接埠指定為5000,再建一個bat文 件,把這句放進去,拷到wince 目標板windows目錄下中,以後串連時只要運行這個bat檔案,就可以了。
實 際上這個EVC調試就是一個CS結構, 目標板上是CLIENT, PC上是SERVER, 串連由CLIENT發起. CESH用的DEBUG SHELL, ACTIVESYNC在IMAGE裡加入的ACTIESYNC組件, 還有這個CEMGRC, 都是乾的同樣的事情。扯遠了, 我們退回到Device Properties視窗, 對Transport點Configure, 出現如下視窗
該視窗的配置說明在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcedebug5/html/wce50contcpiptransport.asp
我唯寫一下視窗裡影響到CEMGRC參數的設定, 關於CEMGRC的參數在MSDN上隻字不提,只能靠推測.
(1) 首先是Host IP, 在Use fixed address的下拉式清單裡, 你有幾個網卡(包括虛擬網卡),就有幾個當前網卡配置的IP地址可選, 選擇後確定下來的IP地址就體現到 /D 參數裡了, 這個推論要是錯了我就去找塊豆腐撞死.
(2) 然後是連接埠, 如果不勾選 fixed port 的話,每次串連都會隨機選個連接埠, 然後在/D參數的:2777這個地方體現出每次連接埠的不同. 這樣在目標板上敲命令列就稍微麻煩些, 如果我們勾了FIXED PORT, 並且指定一個PORT NUMBER, 那麼CEMGRC的參數裡除了/D後面的連接埠號碼被固定下來外, 還多了個/S ,估計是表示static port的意思. 在實際操作時我把這個/S省掉,也是連得上的,沒什麼影響
用這種方法在EVC裡調試, 真是落霞與孤騖齊飛, 控制資訊與網路訪問共用, ETHERNET和USB HOST並存, 乖乖嚨地咚, 皆大歡喜啊.
//********************************************************************************************************************
來源地址:http://blog.csdn.net/suncilang/archive/2007/05/03/1595724.aspx#583791