6.1 調(diào)試和跟蹤特性簡介
不同Cortex-M處理器之間有若干區(qū)別,??偨Y(jié)在表9中。
表9: 調(diào)試和跟蹤特性比較
Cortex-M處理器的調(diào)試架構(gòu)是基于ARM CoreSight調(diào)試架構(gòu)設(shè)計的,,它是個非常容易擴展的架構(gòu),支持多處理器系統(tǒng),。
表9列出的是典型設(shè)計需要考慮的,。在CoreSight架構(gòu)下,調(diào)試接口和跟蹤接口模塊是和處理器分離的,。因此你采用的設(shè)備的調(diào)試和跟蹤連接和表9的可能不一樣,。也可能通過添加一些額外的CoreSight調(diào)試組件來增加一些調(diào)試特性。
6.2 Debug connections調(diào)試接口
調(diào)試接口可以讓調(diào)試者實現(xiàn)
- 訪問控制調(diào)試和跟蹤特性的寄存器,。
- 訪問內(nèi)存空間,。對Cortex-M系列處理器,及時當處理器運行時也可以執(zhí)行內(nèi)存空間訪問,。這被稱作實時內(nèi)存訪問,。
- 訪問處理器核心寄存器。這只能當處理器停止的時候才可以操作,。
- 訪問Cortex-M0處理器中微跟蹤緩存(MTB)生成的跟蹤歷史記錄,。
另外,調(diào)試接口也會用作:
- Flash 編程
Cortex-M系列處理器可以選擇傳統(tǒng)的4到5個引腳(TDI, TDO, TCK, TMS 和可選的 nTRST)的JTAG接口,,或者選擇新的只需要兩個引腳的串行調(diào)試協(xié)議接口,,串行調(diào)試接口對有限數(shù)目引腳的設(shè)備是非常適合的。
圖 10: 串口線或者JTAG調(diào)試接口allows access to processor’s debug features and memory space including peripherals
串行線調(diào)試協(xié)議接口可以處理JTAG支持的所有特性,,支持奇偶校驗,。串行調(diào)試協(xié)議被ARM工具廠商廣泛的采用,許多調(diào)試適配器兩種協(xié)議都支持,,串行線型號共享調(diào)試接口上TCK和TMS針腳,。
6.3 跟蹤接口
跟蹤接口讓調(diào)試者可以在程序執(zhí)行時實時的(很小的延時)收集程序運行的信息。收集的信息可以是Cortex-M3/M4/M7/M33支持的嵌入式跟蹤單元(ETM)生成的程序指令流信息(指令跟蹤),,可以是數(shù)據(jù)跟蹤單元(DWT)生成的數(shù)據(jù)/事件/性能分析信息,,或者是軟件控制數(shù)據(jù)跟蹤單元(ITM)生成的信息。
有兩種類型的跟蹤接口可用:
- 跟蹤端口(Trace port)– 多個數(shù)據(jù)線加上時鐘信號線。比SWV有更高的跟蹤帶寬,,可以支持SWV的所有跟蹤類型加上指令跟蹤,。Cortex-M3/M4/M7或者 Cortex-M33的設(shè)備上,跟蹤端口通常有4個數(shù)據(jù)線和一個時鐘線,。(圖11)
- 串行監(jiān)視器(SWV)– 單引腳線跟蹤接口,,可以選擇性的支持數(shù)據(jù)跟蹤,事件跟蹤,,性能分析和測量跟蹤,。(圖 12)
圖 11: Trace port 支持指令跟蹤和其他跟蹤功能必要的帶寬
跟蹤接口提供了在處理器運行的時候獲取大量有用信息的能力。例如嵌入式跟蹤單元(ETM)可以獲取指令運行歷史記錄,,數(shù)據(jù)跟蹤單元(ITM)讓軟件產(chǎn)生消息(例如,,通過printf)并利用Trace接口獲取。另外,,Cortex-M3/M4/M7/M33支持數(shù)據(jù)跟蹤單元(DWT)模塊,。
- 可選的數(shù)據(jù)跟蹤:內(nèi)存地址的信息(例如,地址,,數(shù)據(jù)和時間戳的組合)可以在處理器訪問這個地址的時候采集
- 性能分析跟蹤:CPU在不同操作任務(wù)使用的時鐘周期數(shù)(例如,,內(nèi)存訪問,休眠)
- 事件跟蹤:提供服務(wù)器響應(yīng)的中斷/異常的運行時間和歷史
圖 12: Serial wire viewer 提供了低成本,,少引腳的跟蹤方案
這些跟蹤特性被各種工具廠商廣泛采用,,采集的信息也被以各種方式直觀的展現(xiàn)出來。例如DWT獲取的數(shù)據(jù)可以在Keil μVision調(diào)試器中以波形的方式展現(xiàn)出來(Keil微控制器開發(fā)工具的一部分)如圖 13所示,。
Figure 13: Keil μVision 調(diào)試器的邏輯分析器
雖然Cortex-M0 和 Cortex-M0+不支持跟蹤接口,,Cortex-M0+支持叫做微跟蹤緩存的特性(MTB,圖14),。MTB讓用戶分配一小塊系統(tǒng)SRAM作為存儲指令的緩存,,通常設(shè)置為循環(huán)緩存,這樣可以抓取最新的指令執(zhí)行歷史并在調(diào)試器上顯示出來,。
這個MTB跟蹤特性也被Cortex-M23 and Cortex-M33支持,。
圖 14: Cortex-M0+/M23/M33 的MTB提供了低成本指令跟蹤方案