1、 問題場景
很多時候,研發同事可能遇到這樣的問題:
問題場景①:在現場的設備出現問題了,研發通過遠程找不出原因,需要去現場進行在線調試,不過出差的話,成本又太高了。如果直接將工程源碼發送到客戶電腦,再通過遠程工具連接客戶電腦進行調試,又會出現很大的源碼泄露風險,這時該怎么辦?
問題場景②:設備在公司,回家要帶來帶去比較麻煩怎么辦?如果想要測試某個開發板,這個開發板不支持軟件仿真,只能硬件仿真,而現在我們手邊沒有這個開發板,但是朋友那邊有,但是又不想打擾朋友使用電腦怎么辦?
問題場景③:設備過于危險,如調試螺旋槳,重型機械臂等,一旦失控,極容易傷害到附近的員工,所以通過單獨封閉這些設備,通過遠程來進行調試會不會更好,更安全?
那有沒有在公司或者在家就可以遠程在線調試的方法?今天,就給大家介紹一下這種方法:通過jlink遠程下載和調試工程代碼。實現如圖1所示,向日葵中的keil通過TCP/IP的鏈接方式,成功鏈接到另外一臺和設備直連的客戶機上。
局域網遠程下載和調試:

廣域網遠程下載和調試:

2、軟硬件環境
1)、軟件版本:MDK5.40
2)、電腦環境:Windows 10
3)、外設硬件:無
3、解決方法
一、局域網內的遠程調試:
1)、為現場已連接好設備和 Jlink 的電腦,安裝jlink驅動,并在其安裝目錄中找到并打開:J-Link Remote Server.exe,如圖2所示,勾選USB,并配置為使用局域網,點擊ok。

2)、點擊完ok以后,可以看到,我們的連接類型為局域網,現場電腦的ip為192.168.1.57,不過此時客戶端還沒有連接過來,所以顯示為斷線,如圖3所示:

3)、打開客戶端的keil的debug界面,找到jlink的settings,如圖4所示。(這里我自己的電腦連接了電路板,連接了Jlink,是作為服務端的。圖4中正在被向日葵遠程的電腦,只安裝了keil mdk和Jlink驅動,和外界沒有任何物理線路的連接,是作為客戶端的)。在圖4中,勾選連接方式為TCP/IP,并輸入服務端IP地址和默認的端口號19020,點擊鏈接,即可以看到上方,出現了調試器SN號等信息。

4)、在客戶端下載程序,可以看到,已經成功把客戶端的程序,下載到了服務端連接的設備里,如圖5所示:

二、使用隧道進行廣域網內的遠程調試
1)、為現場已連接好設備和 Jlink 的電腦,即服務端,安裝jlink驅動,并在其安裝目錄中找到并打開:J-Link Remote Server.exe,如圖6所示,勾選USB,并配置為使用segger的隧道服務器,使用的服務器為:jlink-asia.segger.com,通過自定義的名字識別,這里命名為emdoor,點擊ok。

2)、點擊完ok以后,可以看到,我們的連接類型為隧道,不過此時客戶端還沒有連接過來,所以顯示為客戶端和隧道斷線,隧道和服務端鏈接成功,如圖7所示:

2)、在服務端的安裝目錄中,找到并打開:J-Link Commander.exe,如圖8所示,選擇連接方式為IP via tunnel,下面的Identifier為剛才我們命名:emdoor,隧道服務器為我們剛才選的:jlink-asia.segger.com,端口為默認的19020,密碼按照定義好的輸入后,點擊yes。

3)、點擊yes以后,可以在圖9的終端中看到,已經連接成功了。
接著我們輸入connect,和目標板建立連接,接著他讓我們選擇板子的類型,由于我已經使用過,所以這里默認就是我需要的板子類型,直接回車確認了,再往后,是調試接口,我這里也是直接回車確認,默認為JTAG,后面也是,默認自動檢測,最后是默認4000kHz的目標接口速度。

4)、輸入完以上的參數以后,終端中就會出現如圖10所示的信息,即為成功信息。

5)、接著,我們就可以輸入命令,用以遠程查看設備內部的存儲信息,如圖11所示:
如:mem 0x08000000, 32 就是查看從內存地址 0x08000000 開始的 32 個字節的內容。
w4 0x0, 0x11223344 將 32 位(4 字節)的值 0x11223344 寫入到內存地址為 0x0 的位置。
mem 0x08000000, 32 再次查看,可以看到,前4個字節的值,已經改變為我們設置的值。

總結:
①:局域網遠程下載和調試,是支持直接使用keil 連接的(但是可以通過配置內網穿透、VPN等技術,依然可以實現廣域網的遠程下載和調試);
②:廣域網遠程下載和調試,不支持直接使用keil連接,使用keil的研發需要學習一些調試下載命令,使用終端窗口這種形式,來遠程操作現場的設備。但是IAR、Embedded Studio、GDB/Eclipse,官網中有說明表示:是可以直接集成在軟件中使用,如下圖:

 首頁 > 資源中心 > FAQ
 首頁 > 資源中心 > FAQ             
                 
 