真正囉嗦的,是為了獲取即時除錯訊息,如何在 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。萬一這年頭居然還有人需要跟我做同樣的事,寫這篇文章也算功德一件。其實有點羨慕搞嵌入式電子產品的,只要功能管用,沒人在乎你拿什麼工具、平台開發,十年如一日哩。真好。
沒有留言:
張貼留言