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