小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

嵌入式調(diào)試器原理和各類調(diào)試器集錦

 心不留意外塵 2016-12-26

http://blog.csdn.net/yueqian_scut/article/details/52432857

2016

        工欲善其事,必先善其器。調(diào)試器在嵌入式開發(fā)調(diào)試中的重要性不言而喻,單步、斷點和監(jiān)察的效率遠高于串口打印。但是,調(diào)試器對于一般開發(fā)人員往往是一個黑匣子。今天我們就來談談調(diào)試器的原理,順便把自己的幾類調(diào)試器接線和注意事項記錄下來,以便查找。我常常要面對幾個方案,而各個方案的調(diào)試器都不一樣,接線有時連自己都記不住。所以這個帖子應值得嵌入式開發(fā)工程師收藏。

 

一、嵌入式調(diào)試多樣性

我們先來回想調(diào)試的場景,思考一下這幾個問題:

1. ARM開發(fā)環(huán)境有Keil、IAR、ADS等等,我們發(fā)現(xiàn)這幾個平臺都能用同一個調(diào)試器去調(diào)試ARM。

2.一個調(diào)試器可以調(diào)試多種不同型號的CPU,包括STM32控制器和高端的處理器。

3.一個調(diào)試器有時接20個pin的JTAG接口,有時接4個pin的SWD接口。

4.開發(fā)環(huán)境KEIL不僅支持ARM調(diào)試,還支持51單片機調(diào)試。

5.如果自己研發(fā)了一顆SOC芯片,并在JTAG的基礎上增加一些定制的功能,又該如何實現(xiàn)?

 

二、JLink調(diào)試原理

OK,我們來分析一下JLINK的調(diào)試架構。我們都知道,JLINK是調(diào)試ARM體系的。

網(wǎng)上的資料有時舊了,有時抄來抄去出錯了。我們就以官方的版本為例來說明。我們安裝了JLINK驅(qū)動后,會在Doc\Manuals目錄有一個文件《UM08001_JLink.pdf》,這個文件就是Jlink的官方文檔資料。

我們用這個架構圖來一一解釋上一節(jié)的問題,解開疑惑。

1.     對于第一個問題,JLINK定義了一個軟件調(diào)試層面的RDI接口標準,即Remote debug interface. Keil、IAR、ADS這些開發(fā)環(huán)境按照RDI標準進行定制,即可以支持JLINK調(diào)試。RDI底層使用USB傳輸,當然,其他硬件接口也是可以的。

2.     對于第三個問題,ARM體系原先是支持JTAG硬件調(diào)試接口的,隨著cortex系列增加SWD調(diào)試規(guī)范,現(xiàn)在越來越多的調(diào)試器選擇SWD接口。其接線少,速率高,也比較穩(wěn)定。JTAG 20個口太占用pin資源了。JLINK V6開始支持SWD,現(xiàn)在V8支持已經(jīng)足夠好了。

3.     對于第二個問題,不管是低端控制器,還是高端處理器,調(diào)試接口規(guī)范都是ARM體系的標準內(nèi)容。ARM CPU原生支持JTAG/SWD調(diào)試協(xié)議接口。

OK,那JLINK這個角色是做什么的?

-----將RDI接口協(xié)議轉(zhuǎn)換為JTAG/SWD接口協(xié)議?。?!

例如,IDE上可以設置一個斷點,那IDE會使用RDI的設置斷點的API,而JLINK在實現(xiàn)這個API里面,就轉(zhuǎn)化為JTAG/SWD標準規(guī)范里面的設置斷點功能,并通過JTAG/SWD硬件接口輸出到ARM CPU上。

 

三、IDE的調(diào)試開發(fā)

       第四個和第五個問題都涉及到IDE。如何回答這兩個問題?

1.     從JLINK架構來看,調(diào)試包括:IDE->遠程調(diào)試接口->調(diào)試器->硬件調(diào)試接口->CPU。

2.     對于KEIL支持51單片機,調(diào)試器必須要支持51 CPU的ISP調(diào)試規(guī)范。51單片機的調(diào)試似乎沒有一家像JLINK那么有影響力的調(diào)試廠商。也許是因為51調(diào)試器相當簡單吧,淘寶30塊左右就能買到。

       那現(xiàn)在就剩下遠程調(diào)試接口這個環(huán)節(jié)了,這個問題解決了,就把第五個問題也解決了,因為不管是通用的SOC,還是定制的SOC,CPU核心都是一致的,要么是ARM,要么是MIPS,要么51等等。每種CPU在其體系標準里面就決定了硬件調(diào)試規(guī)范了。要想調(diào)試CPU,其調(diào)試器必須要將上層的要求轉(zhuǎn)化為符合其支持的硬件調(diào)試規(guī)范。

      那么,我們來重新思考IDE的設計。IDE在立項研發(fā)的時候顯然希望能支持到不同體系的CPU,否則不是作死自己嗎?所以,我們可以想象,IDE其實也面向第三方調(diào)試廠商開放自己的接口。這樣各大廠商才能利用已經(jīng)成熟的IDE。

      所以,我們來重新回答第四和第五個問題:

3.     IDE->第三方廠商實現(xiàn)KEIL的接口->第三方廠商的遠程調(diào)試接口->第三方調(diào)試器->硬件調(diào)試接口->CPU. 所以,我們在JLINK架構圖中看到,RDI接口其實是JLINK廠商定義的接口,而不是IDE廠商定義的。

4.     第四個問題:KEIL->第三方廠商實現(xiàn)KEIL的接口->第三方廠商的遠程調(diào)試接口->第三方調(diào)試器->51調(diào)試規(guī)范->51 CPU

5.     第五個問題:從以上看來,其實第三方調(diào)試器廠商是可以在實現(xiàn)硬件調(diào)試規(guī)范的基礎上,對于遠程調(diào)試接口做靈活的定制的。甚至可以,在一款調(diào)試器的基礎上,實現(xiàn)支持多種CPU。一般集成電路設計公司,都有自己的調(diào)試器,其要開發(fā)多種CPU體系的芯片,所以自己研發(fā)的調(diào)試器肯定能夠多種不同的CPU的。

Ok,原理就說到這里,大家應該對調(diào)試器有較為深入的理解了吧。對于硬件調(diào)試規(guī)范,以后有時間再細談吧。

 

四、ARM各類調(diào)試匯總

1. JLINK

       1. JLINK有不同的軟件版本。不同版本的pin腳定義可能不一樣,尤其是VCC. 這點,我倒是記憶猶新。

2.jlinkV6開始支持SWD模式。

JLINK的JTAG/SWD調(diào)試接口。VTref是輸入,接目標板的VDD.

       3. 國內(nèi)賣JLINK的廠商基本上都是抄人家的,所以自己在使用JLINK時也要以實測為準。我手上兩個JLINK就截然不同。下圖左邊的JLINK,第19腳說是5v輸出,實測是0。對于右邊的JLINK的,1腳的VTref居然會輸出V3.3,所以目標板可以直接以這個為電源來調(diào)試。對于左邊的JLINK,目標板必須要提供電源給JLINK的1腳。

       4. JLINK可以支持STM32等cortex M3系列等等,A8等高級CPU也可以。藍牙DA14580和NRF51822都是基于cortex M0,也可以。

2. STLINK

       STLINK是ST公司研發(fā)的,專門針對ST公司的產(chǎn)品,一般支持SWD模式。原理跟上面接收的相仿。ST意法半導體還研發(fā)了STM8微控制器,其還有一種調(diào)試模式是SWIM單總線調(diào)試接口。即只需要一個口來調(diào)試,當然還要VCC,GND和RST口。

3. TI的CC254X調(diào)試器

以上介紹的JTAG是20pin,其實JTAG還有10pin標準接口的,TI的CC254X調(diào)試器即是此種。

4.51調(diào)試器

一時找不到,不知道放到哪里了。

5. 其他調(diào)試,未完待續(xù),這個帖子隨時更新。

 

嵌入式企鵝圈原創(chuàng)團隊由阿里、魅族、nvidia、龍芯、炬力、拓爾思等資深工程師組成。百分百原創(chuàng),每周兩篇,分享嵌入式、Linux、物聯(lián)網(wǎng)、GPU、Android、自動駕駛等技術。歡迎掃碼關注微信公眾號:嵌入式企鵝圈,實時推送原創(chuàng)文章!

 

 

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多