Cortex-M調試中關鍵的CoreSight技術,你用好了嗎?

如今衆多Cortex-M處理器能這麼方便調試,在於有一項基於Arm Cortex-M處理器設備的CoreSight技術,該技術引入了強大的新調試(Debug)和跟蹤(Trace)功能。

下面就來重點講講關於CoreSight中調試和跟蹤的相關內容。

strongerHuang

1

調試和跟蹤功能

CoreSight兩個主要功能就是調試和跟蹤功能。

1.調試功能

  • 運行處理器的控制,允許啓動和停止程序

  • 單步調試源碼和彙編代碼

  • 在處理器運行時設置斷點

  • 即時讀取/寫入存儲器內容和外設寄存器

  • 編程內部和外部FLASH存儲器

2.跟蹤功能

  • 串行線查看器(SWV)提供程序計數器(PC)採樣,數據跟蹤,事件跟蹤和儀器跟蹤信息

  • 指令(ETM)跟蹤直接流式傳輸到您的PC,從而實現歷史序列的調試,軟件性能分析和代碼覆蓋率分析

一張圖瞭解整體內容:

strongerHuang

2

JTAG

JTAG是行業標準的接口,用於下載和調試目標處理器上的程序以及許多其他功能。它提供了連接設備的簡便方法,並且在所有基於Arm處理器的設備上都可用。JTAG接口可與基於Cortex-M的設備一起使用,以訪問CoreSight調試功能。

1.JTAG歷史

JTAG是聯合測試工作組(Joint Test Action Group)的簡稱,是在名爲標準測試訪問端口和邊界掃描結構的IEEE的標準1149.1的常用名稱。此標準用於驗證設計與測試生產出的印刷電路板功能。

1990年JTAG正式由IEEE的1149.1-1990號文檔標準化,在1994年,加入了補充文檔對邊界掃描描述語言(BSDL)進行了說明。從那時開始,這個標準被全球的電子企業廣泛採用,邊界掃描幾乎成爲了JTAG的同義詞。

---引用維基百科

2.JTAG接口

JTAG的接口通常是4/5個接腳接口連到芯片上:

  • TDI(測試數據輸入)

  • TDO(測試數據輸出)

  • TCK(測試時鐘)

  • TMS(測試模式選擇)

  • TRST(測試復位)可選

strongerHuang

3

SWD串行線調試

SWD,Serial Wire Debug(串行線調試)模式是標準JTAG接口的替代方法,它僅使用兩個引腳即可提供與JTAG相同的調試功能,而不會降低性能,並通過串行線查看器(SWV)引入了數據跟蹤功能。

在JTAG引腳中包含SWD接口引腳,從而允許標準目標連接器中使用。引腳包含:

  • TCLK-SWCLK(串行時鐘)

  • TMS-SWDIO(串行數據輸入/輸出)

  • TDO-SWO(串行線輸出-SWV使用)

關於SWV

SWV:Serial Wire Viewer,串行線查看器

基於Cortex-M3、 M4、 M7的設備能夠根據所需信息或分析的類型,以多種方式提供高速數據跟蹤信息。當系統處理器繼續全速運行時,它通過SWO引腳傳輸。

可從ITM(儀器跟蹤宏單元)和DWT(數據觀察點和跟蹤)單元獲得信息,其中包括:

  • PC(程序計數器)採樣

  • 顯示CPU週期統計信息的事件計數器

  • 具有定時統計信息的異常和中斷執行

  • 跟蹤數據-用於時序分析的數據讀取和寫入

  • 用於簡單printf樣式調試的ITM跟蹤信息

可參看我之前的文章《printf系列教程》,後臺回覆【printf系列教程】查看更多。

strongerHuang

4

拓展:下載調試器

之前給大家分享過《下載調試接口 SWD 和 JTAG的區別》,選擇下載調試器時也可以對比一下二者差異。

支持JTAG和SWD模式的下載調試器很多,J-Link、 ST-LINK、 ULINK這些大衆化的工具都支持,還有很多小衆的下載調試器(比如e-Link、 GD-Link等)同樣也支持SWD模式。

那麼,我們該選擇哪一種呢? 哪一種更香呢?

支持全面的一點的算J-Link了,但正版的價格,對於普通個人來說,有壓力。

有多種版本,算下來好幾千一個。

同樣,正版ULINK也和J-Link一樣,價格上千。當然,很多人買到的ULINK和J-Link都是盜版。

相比ULINK和J-Link而言,正版的ST-Link價格就很划算,一個正版ST-Link V2才兩三百,但缺點就是隻能針對STM8/32使用。

當然,ST-Link還有一個神操作:變成J-link,請參看我的文章《ST-Link如何秒變J-link,手把手教你實現該功能》。

1.解讀姚期智關於人工智能發展的最新演講!

2.聊聊RT-Thread內核對象管理器設計思路~

3.【C進階】"最常見"卻又"最不常用"的三個預編譯

4.北京航空航天大學校友會集成電路行業協會成立!

5.如何寫出讓CPU跑得更快的代碼?

6.從創建進程到進入main函數,發生了什麼?

免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯繫,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。