MCU: ARM的調試架構
(一) Cortex-M3的CoreSight調試架構
Cortex-M3 的調試系統是基於ARM最新的CoreSight架構。不同於以往的ARM處理器,內核本身不再含有JTAG掃描鏈。取而代之的,是CPU提供的DAP匯流排介面。通過這個匯流排介面,可以訪問晶元的寄存器,也可以訪問系統存儲器,甚至是在內核運行的時候訪問。對此匯流排介面的使用,是由一個調試埠(DP)設備完成的。DPs不屬於CM3內核,但它們是在晶元的內部實現的。目前可用的DPs包括SWJ-DP(既支持傳統的JTAG調試,也支持新的串列線(SW)調試協議),另一個SW-DP則去掉了對JTAG的支持。另外,也可以使用ARM CoreSight家族JTAG-DP模塊。DP介面模塊首先將外部信號轉換為32位通用調試匯流排(DAP),匯流排高8位用於選擇要訪問的設備,從理論上說DAP匯流排上的設備最多支持256個,同一晶元上的上百個處理器可以共用一個DP。DAP通過高級高性能匯流排訪問埠(AHB-AP或APB-AP)連接上CM3內部的匯流排網路,這樣就可以訪問CM3上包括NVIC在內的存儲器映射(《CM3權威指南》圖15.2)。
CoreSight技術系統設計指南(二) ARM7TDMI的JTAG調試架構
ARM7TDMI晶元的調試主要依賴於JTAG(Joint Test Action Group;聯合測試工作組)國際標準測試協議(IEEE 1149.1-Test Access Port and Boundary-Scan Architecture)。該協議主要包含三個部分,TAP(TestAcessPort)、TAPC、寄存器組。TAP是一個通用埠,可以通過TAP訪問所有數據和指令寄存器,其包含五個信號介面TCK、TMS、TDI、TDO、TRST(非強制)。TAPC為一個包含16個狀態的狀態機,在TCK信號的驅動下,狀態機由TMS控制轉換狀態。寄存器組由指令寄存器和數據寄存器組成,其包含BYPASS指令和bypass寄存器、IDCODE和Device Identification寄存器、INTEST和Boundary-Scan寄存器。
ARM7TDMI的調試系統包含三個部分:調試主機、協議轉換器(JLINK、ULINK、STLINK等)和調試目標。ARM7TDMI處理器主要包含三個部分:ARM CPU Main Processor Logic、Embeded ICE-RT Logic和TAP Controller。ARM7TDMI提供了四條掃描鏈:0訪問內核外圍電路(包括數據匯流排),長度113bit;1是0的子集,長度33bit,提供更快的掃描服務;2專門用來訪問ICE內部寄存器,3用的很少,長度38bit,訪問外部邊界。ARM7TDMI正常狀態和調試狀態區別,正常狀態下由MCLK驅動,調試下由DCLK驅動,DCLK要比MCLK慢得多。
ARM7TDMI調試狀態時是不可以訪問系統的存儲系統空間的,這是因為指令的執行由DCLK驅動而存儲空間的訪問需要由MCLK驅動。為了實現調試部件對系統存儲空間的訪問,進行系統存儲訪問時系統將暫時切換到MCLK驅動直到訪問指令結束。
Keil提供對ARM調試的支持,其不僅支持Graphic調試方式,還提供豐富的調試指令,腳本調試由Debug Command和Debug Function提供介面。DebugFunction不僅提供對Command 的支持更提供類C的調試腳本語言,該語言不支持指針和變數但可以通過define symbol達成變數效果。
註:CM3處理器內核沒有JTAG掃描鏈,大多數調試功能可以由NVIC通過AHB訪問。其具體採用DAP(SWJ-DP或SW-DP介面)的通用調試埠控制AHB-AP產生所需要的AHB傳輸訪問整個CM3存儲器。
Open Jtag文檔
推薦閱讀:
※2016年全球十大MCU供應商排名,NXP超過瑞薩居首|半導體行業觀察
※美國大學數學助理教授給您講解為什麼通貨膨脹不貶值DCEU的30億票房,為什麼依然是DCEU勝出。
※《銀河護衛隊1》終極彩蛋「疑似」曝光!!
※為什麼國外的工程師在給單片機做死循環時喜歡用 for(;;) 而不是 while(1)?
TAG:MCU | ARM | ARMCortexM |