字體:小 中 大 | |
|
|
2018/08/06 07:20:00瀏覽4364|回應0|推薦28 | |
日前受委託為一個小型裝置抓蟲。抓蟲不難,麻煩的是開發環境:Windows CE,都記不清是什麼年代的玩意兒。剛開始頗為擔心,連 Visual Studio 2008 能不能在 Windows 10 安裝都不知道;何況必須安裝 Professional 版,也不知還找不找得到。幸虧這兩個答案都是正面的。只不過 VS2008 Pro 這種古董,連線上註冊都沒了,居然還有90天試用限制。大概是給我時間壓力,非得在90天內解決這個問題不可。 真正囉嗦的,是為了獲取即時除錯訊息,如何在 VS2008 和裝置間建立連線。為此請示估狗大神,搜出幾篇有用文章。為免還有下次而必須再搜一遍,姑且自己做個筆記。 因為這系列裝置透過乙太網路彼此連線,只要在交換器掛上自己的NB,加入網路,再做好必要設定,就可以部署(deploy)軟體,並接收除錯訊息。裝置本身都有固定IP,所以第一步,要為自己的乙太網路卡設置固定IP。 1. 找到「控制台」、「網路連線」。(不同Windows版本,可能在不同位置) 2. 選擇「乙太網路」,按滑鼠右鍵,選擇「內容」。 3. 選擇「TCP/IPv4」,再按「內容」。 4. 把預設的「自動取得IP位址」,改為「使用下列的IP位址」。 5. 輸入與裝置同一網段的IP位址等數字。 6. DNS 未必需要,隨便輸入常用的,如圖例是中華電信。 接下來設定 VS2008。安裝完 VS2008 Pro 之後,通常需要安裝該裝置所屬平台的專用 SDK 。 SDK 安裝完畢,在 VS2008 打開軟體的 solution,可以在左上角看到 CE 裝置選項,如下圖。 (註: 在 Windows 10 安裝 CE 裝置平台專用 SDK 時,若選完整安裝(Full / Complete),通常會發生錯誤。此時重新啟動安裝程式,改選「Custom」,將「Documentation」取消,應該可以過關。顯然有些古蹟文物已經被時代遺棄,好在可有可無,沒關係。) 為求一般化,我把廠商裝置名稱,都改成TARGET。先按紅色位置的「Options」,進入下圖畫面。 安裝完裝置專用 SDK 之後,在 Devices 列表應該可以找到該平台名稱。這裡為求一般化,以「Windows CE Device」為例。如果裝置有兩種以上,可以用「Save As」另存若干份選項。接著為選項個別設定,按「Properties」,進入下圖畫面。 「Default output location on device」是指目標裝置上存放專案執行檔的位置。如果不在預設的 Program Files,可以自行填入路徑。(例:「\NAND Flash\TARGET」) 「Transport」則是指連線設定,選「TCP Connect transport」並按「Configure」,進入下圖畫面。 因為目標裝置採用固定IP且不支援 ActiveSync,在紅框輸入該裝置的IP。 另一方面,由於裝置不支援 ActiveSync,必須複製一份除錯連線所需的 CoreCon 套件到裝置上。 CoreCon 套件的位置如上圖,其上層路徑,在 32-bit 系統通常是「Program Files」,64-bit系統則通常是「Program Files (x86)」。然後選擇自己平台 CPU 名稱所屬的資料夾,內容如下圖。將這個資料夾複製到目標裝置上的永久儲存位置,通常是 SD Card 或 NAND Flash之類。不要是桌面之類暫存位置,重開機就會找不到。 連線之前,在目標裝置執行上列兩個程式。先執行「CMAccept」,作用是暫時解除安全管制;然後是「ConmanClient2」,與 VS2008 建立連線。 接下來在 VS2008 按紅色鈕嘗試連線。要注意的是,「CMAccept」未必每次都成功。如果連線失敗(如下圖),就在目標裝置重複執行上述兩個程式,到成功為止。 上:連線失敗,下:成功 連線成功,就可以開始部署並除錯。另一個要注意的地方是,「CMAccept」解除安全管制時間有限,大約只有兩三分鐘。如果這段時間內沒有連線並開始部署,有可能會斷線,需要重新執行那兩支程式。因此假設「Build」的過程稍久,可以先按 F6 ,「Build」完才連線,成功後再按 F5 開始部署並除錯。反之若「Build」所需時間不長,則可以先連線後,直接 F5 開始 Build、部署並除錯。 部署前會出現這份選單。如果目標裝置有兩個以上,如上圖「TARGET」與「TARGET 2」,在此可以做出選擇。若只有單一裝置,選擇目標後,可以取消下方的「Show me this dialog ......」,以後就不會再問。 要是有附屬模組如 DLL 需要 debug,也可以掛進 solution ,有更改時會一起 deploy。 只是要注意,預設的遠端路徑在 Program Files,如果不是,要自行更改。在 Project 名稱按右鍵, 選「Properties」,打開下圖。 選「Deployment」,然後在「Remote Directory」填入自己的遠端路徑即可。 遇上這個訊息,很大可能是遠端資料夾裡已經有你打算部署的元件,而且是唯讀,蓋不掉。自行到裝置上,進入 Windows CE Shell (每部裝置手法不一,要問平台設計者),由檔案總管刪除即可。 如此一來,軟體可以透過網路線部署到目標裝置,執行並傳回即時偵錯訊息給 VS2008。萬一這年頭居然還有人需要跟我做同樣的事,寫這篇文章也算功德一件。其實有點羨慕搞嵌入式電子產品的,只要功能管用,沒人在乎你拿什麼工具、平台開發,十年如一日哩。真好。 BONUS偵錯過程有個很困擾的問題,就是 Build 的時間奇久,往往上廁所喝杯茶還沒結束,匪夷所思。估狗大神指示先用 VS2008 的診斷工具,找出問題在那裡,再對症下藥。 VS2008 Tools -> Options,把 verbosity 改成 Diagnostic 如此設定,在 output 視窗便會產生大量資訊。結果竟然發現,有個叫做 PlatformVerificationTask 的東西,佔用超過 95% 的 build time,真正豈有此理。這玩意兒固然有其作用(有興趣請自行請示估狗),對我手上的 project 卻沒啥幫助,砍之無妨。然而在 VS2008 時代,要幹掉它卻不簡單。幸而搜得微軟網頁一紙未刪,依計行事,終於功德圓滿。筆記如下,免得忘了,以後再搜不到。 Step 1. 找到紅線標示的檔案,用文字編輯程式打開 Step 2. 找到Name="PlatformVerificationTask" SkipPlatformVerification 是後面要設置的環境變數,當 VS2008 看到 Condition ,便依其內容,決定是否執行 PlatformVerificationTask。接下來是在 Windows 10 如何設定環境變數。 Step 3. 打開 Windows 設定,選擇「系統」 Step 4. 選擇「系統資訊」 Step 5. 選擇「進階系統設定」 Step 6. 選擇「環境變數」 Step 7. 「新增」後「確定」即可 把Step 2. Condition 中的 SkipPlatformVerification 設成 true 就行了。萬一居然還需要這項功能,再把變數設成 false 。據說新版 Visual Studio 直接有個選項,方便得多,不過那是後人的福氣了。注意:上圖其實是「編輯」,因為我已經建好了,懶得刪掉重來。「新增」畫面是一樣的。 |
|
( 知識學習|其他 ) |