STM32除錯DEBUG時,需要知道的知識!
學習STM32開發,肯定少不了DEBUG除錯這一步驟。那麼,本文帶你瞭解一下這個除錯相關的知識。
本文以STM32F1、Cortex-M3為例,其它系列晶片或核心,原理相同或類似。
1概況
在STM32中,有很多除錯元件。使用它們可以執行各種除錯功能,包括斷點、資料觀察點、 快閃記憶體地址過載以及各種跟蹤。
STM32F1使用Cortex-M3核心,該核心內含硬體除錯模組,支援複雜的除錯操作。
硬體除錯模組允許核心在取指(指令斷點)或訪問資料(資料斷點)時停止。核心停止時,核心的內部狀態和系統的外部狀態都是可以查詢的。完成查詢後,核心和外設可以被複原,程式將繼續執行。
當STM32F10x微控制器連線到偵錯程式並開始除錯時,偵錯程式將使用核心的硬體除錯模組進行除錯操作。
2
除錯框圖STM32F1和Cortex-M3的除錯框圖:
提示:Cortex-M3核心內含的硬體除錯模組是ARM CoreSight開發工具集的子集。
ARM Cortex-M3核心提供整合的片上除錯功能。它由以下部分組成:
SWJ-DP:序列/JTAG除錯埠
AHP-AP: AHB訪問埠
ITM:執行跟蹤單元
FPB:快閃記憶體指令斷點
DWT:資料觸發
TPUI:跟蹤單元介面(僅較大封裝的晶片支援)
ETM:嵌入式跟蹤微單元(在較大的封裝上才有支援此功能的引腳),專用於STM32F1的除錯特性
靈活的除錯引腳分配
MCU除錯盒(支援低電源模式,控制外設時鐘等)
3
除錯介面STM32支援兩種除錯介面:
序列介面
JTAG除錯介面
STM32的5個普通I/O口可用作SWJ-DP(序列/JTAG除錯)介面引腳:
4
SWJ除錯埠(serial wire and JTAG)STM32核心集成了序列/JTAG除錯介面(SWJ-DP)。這是標準的ARM CoreSight除錯介面,包括JTAG-DP介面(5個引腳)和SW-DP介面(2個引腳)。
1.JTAG除錯介面(JTAG-DP)為AHP-AP模組提供5針標準JTAG介面。
2. 序列除錯介面(SW-DP)為AHP-AP模組提供2針(時鐘+資料)介面。
在SWJ-DP介面中, SW-DP介面的2個引腳和JTAG介面的5個引腳中的一些是複用的。
SWJ除錯埠:
上面的圖顯示非同步跟蹤輸出腳(TRACESWO)和TDO是複用的。因此非同步跟蹤功能只能在SWDP除錯介面上實現,不能在JTAG-DP除錯介面上實現。
JTAG-DP和SW-DP切換的機制
JTAG除錯介面是預設的除錯介面。如果偵錯程式想要切換到SW-DP,必須在TMS/TCK上輸出一指定的JTAG序列(分別對映到SWDIO和SWCLK),該序列禁止JTAG-DP,並激活SW-DP。該方法可以只通過SWCLK和SWDIO兩個引腳來啟用SW-DP介面。
指定的序列是:
1. 輸出超過50個TCK週期的TMS(SWDIO)= 1訊號
2. 輸出16個TMS(SWDIO)訊號 0111100111100111 (MSB)
3. 輸出超過50個TCK週期的TMS(SWDIO)= 1訊號
5
JTAG腳上的內部上拉和下拉保證JTAG的輸入引腳不是懸空的非常必要,因為他們直接連線到D觸發器控制著除錯模式。必須特別注意SWCLK/TCK引腳,因為他們直接連線到一些D觸發器的時鐘端。
為了避免任何未受控制的I/O電平, STM32在JTAG輸入腳上嵌入了內部上拉和下拉。
JINTRST:內部上拉
JTDI:內部上拉
JTMS/SWDIO:內部上拉
TCK/SWCLK:內部下拉
一旦JTAG I/O被使用者程式碼釋放, GPIO控制器再次取得控制。這些I/O口的狀態將恢復到復位時的狀態。
JNTRST:帶上拉的輸入
JTDI:帶上拉的輸入
JTMS/SWDIO:帶上拉的輸入
JICK/SWCLK:帶下拉的輸入
JTDO:浮動輸入
軟體可以把這些I/O口作為普通的I/O口使用。
6
利用序列介面並釋放不用的除錯腳作為普通I/O口為了利用序列除錯介面來釋放一些普通I/O口,使用者軟體必須在復位後設置SWJ_CFG=010,從而釋放PA15, PB3和PB4用做普通I/O口。
在除錯時,偵錯程式進行以下操作:
在系統復位時,所有SWJ引腳被分配為專用引腳(JTAG-DP + SW-DP)。
在系統復位狀態下,偵錯程式傳送指定JTAG序列,從JTAG-DP切換到SW-DP。
仍然在系統復位狀態下,偵錯程式在復位地址處設定斷點
釋放復位訊號,核心停止在復位地址處。
從這裡開始,所有的除錯通訊將使用SW-DP介面,其他JTAG引腳可以由使用者程式碼改配為普通I/O口。
提示:這個地方就是需要大家配置相關的引腳。
7
參看文獻1.Cortex-M3(r1p1版)技術參考手冊(TRM)
2.ARM除錯介面V5
3.ARM CoreSight 開發工具集(r1p0版)技術參考手冊
說明:本文參考《STM32F1參考手冊》和《CM3技術手冊》。
1.2018年第11期《微控制器與嵌入式系統應用》電子刊新鮮出爐!
本文來自個人微信公眾號「ID:strongerHuang」,經原作者授權釋出。原文公眾號由嵌入式工程師「strongerHuang」在精心整理並維護。專注分享的內容包含:Keil、IAR、STM8、STM32、μC/OS、FreeRTOS、CANOpen、ModBus...