今天4月6号,淘寶買的JLink剛到,折騰了一晚上,終于能聯合MDK下載下傳和調試,趁腦子還在,先寫一點關于已有知識的總結。
首先我的開發環境是MDK3.80,JLink的版本是V4.12,我是照着這個文檔一步一步調試成功的《 keil MDK之JLink問題 》–百度文庫 我用的JLink驅動是JLink V4.12版本驅動下載下傳
關于JTAG、SWD、JLINK、ULINK
JTag和SWD
JTag和SWD實際上是調試ARM的兩種接口,在ARM内部都有嵌入對應的硬體實作調試,SWD相對JTag需要較少的引腳。
JTag、JLink、ULink
這裡說的JTag不同于上面說的JTag,上面的是一種調試接口,這裡的是調試的工具,是硬體。先說Jlink和ULink,這實際上是兩個ARM編譯軟體公司開發的硬體,ULink是MDK公司的,隻能MDK公司用,而Jlink是ADS公司的,當MDK的編譯軟體也相容它,兩個調試工具都支援JTag和SWD接口。這裡說的JTag是一個隻支援JTag調試接口的調試工具,它和JLink的差別是:
- 在電腦上寫一個服務程式,把IAR、KEIL和ADS中的RDI指令解析成相關的JTAG協定,然後通後一個實體轉換接口(注意,這個轉換隻是電氣實體層上的轉換,就像RS232那樣的作用)發送你的的目标闆。 H-JTAG就是這樣的。 H-JTAG的硬體就僅是一個實體電平的轉換接口,是以很簡單。而電腦中裝的h-JTAG軟體就是前面說到的服務程式,負責協定轉換的。
- 做一個闆,用此闆直接接收來自IAR、KEIL和ADS等軟體的調試指令,由此闆做RDI->JTAG協定的轉換。然後與目标闆通信,這就是JLINK的工作原理。
上訴文字出處以及JTag工作原理請戳
有一篇特别好的關于JTag接口的詳細原理包括硬體的文章,我随意百度是看到的,真心不錯于是收藏,需要的童鞋可以百度關鍵詞Open-JTag,或者上我資源下載下傳ARM-JTAG (資源積分1分,賺點小錢,百度都有,土豪随意)
class="preview-iframe" scrolling="no" src="http://download.csdn.net/source/preview/8572539/1a4e63d964e5db96ac644495878971f6" height="523" width="738">
JTag接口
JTag接口常見有20P和14P兩種,其中關于調試的引腳的介紹以及是否可選在上面的Open-Jtag中有詳細的說明(TCK、TDI、TDO、TMS是強制選擇的),下面隻是講一下20P實體接口
其中1号腳VREF是用于檢測開發闆電源電壓,在JLink Commander中可以看到目标闆的電壓。2号腳在有的山寨JLink中可以通過一個跳線選擇是否輸出3.3V為開發闆提供電源。19号腳是電源腳可以在JLink Command中通過power on、power off設定是否開啟,power on perm、power off perm可以設定預設值。
MDK上的設定
MDK3.80提供了很多調試器供選擇
其中關于JLink的有:
JLINK/J-TRACE
Cortex-M3 J-LINK
RDI Interface Driver(這個是JLink提供的一個調試接口)
個人覺的這個是
JLINK/J-TRACE的配置方式剛開始已經講過,Cortex-M3 J-LINK的配置方式可以參考Jlink在MDK下使用Cortex-m3-Jlink模式開發STM32的說明-百度文庫 (我MDK3.80+JLINK V4.12親測可用。)其中Cortex-M3 J-LINK模式可以選擇JLINK以JTAG工作還是SWD。
下面談一些個人的了解
1.對于我買的¥70的JLink使用RDI并不能成功,使用Cortex-M3 J-LINK比JLINK/J-TRACE調試更穩定,下載下傳也更快
2.這邊MDK提供的3種模式,隻是對于使用者層面的三種方式,在底層還是基于ARM的JTAG和SWD接口