如何采用Cortex-M3處理器進行合理的測試設(shè)計?
ARM Cortex-M 系列微處理器主要用于低成本和低功耗領(lǐng)域,如智能測量。人機接口設(shè)備。汽車和工業(yè)控制系統(tǒng)。大型家用電器。消費性產(chǎn)品和醫(yī)療器械等領(lǐng)域。ARM Cortex-M3 內(nèi)核搭載了若干種調(diào)試相關(guān)的特性。
第一使用JTAG跟蹤訪問程序,JTAG是行業(yè)標準的接口,用于下載和調(diào)試目標處理器上的程序以及許多其他功能。它提供了連接設(shè)備的簡便方法,并且在所有基于Arm處理器的設(shè)備上都可用。JTAG接口可與基于Cortex-M的設(shè)備一起使用,以訪問CoreSight調(diào)試功能。
JTAG在每一個TCK信號的上升沿采樣TMS信號和TDI信號,決定狀態(tài)機的狀態(tài)是否發(fā)生變化,在每一個TCK信號的下降沿輸出TDO信號。可以看到,無論TAP目前處于哪一個狀態(tài),只要TMS保持高電平并持續(xù)5個TCK時鐘,則TAP一定會回到Test-Logic-Reset狀態(tài)。
JTAG內(nèi)部有一個IR(instruction register)寄存器和多個DR(data register)寄存器,IR寄存器決定要訪問的是哪一個DR寄存器。DR寄存器有IDCODE、BYPASS等。在Test-Logic-Reset狀態(tài)下IR寄存器默認選擇的是IDCODE這個DR寄存器。
JTAG主機通過IR SCAN設(shè)置IR寄存器的值,然后通過DR SCAN來讀、寫相應(yīng)的DR寄存器。
目前RISC-V的官方調(diào)試上位機是openocd,調(diào)試工具可以是JLink或者CMSIS-DAP??梢苑譃橹饕譃?個部分,(1)分別是Debug Host,可以理解為PC;(2)Debug Hardware,可以理解為JLink或者CMSIS-DAP這樣的調(diào)試工具;(3)第三部分就是嵌入在芯片內(nèi)部的調(diào)試模塊。在調(diào)試模塊內(nèi)部,與調(diào)試工具直接交互的是DTM模塊,DTM模塊通過DMI接口與DM模塊交互。
第二SWD串行線調(diào)試。SWD是Serial Wire Debug的簡稱,翻譯成中文是”串行線調(diào)試”。 SWD是ARM目前支持的兩種調(diào)試端口之一,另一個調(diào)試端口叫做JTAG Debug Port,也就是我們常用的J-link上面的調(diào)試端口(JTAG模式下)?;贏RM CoreSight調(diào)試構(gòu)架,SWD可以通過傳輸數(shù)據(jù)包來讀寫芯片的寄存器。SWD是用于訪問ARM調(diào)試接口的雙線協(xié)議。它是ARM調(diào)試接口規(guī)范(ARM Debug Interface Architecture Specification)的一部分,是JTAG的替代品。SWD的物理層由兩條線組成:
SWDIO: 雙向數(shù)據(jù)線
SWCLK: host驅(qū)動的時鐘線
外部設(shè)備(如調(diào)試探針)通過連接到SWDIO/SWCLK,可以直接訪問串行線調(diào)試端口(SW-DP)。SW-DP可以訪問一個或多個接入端口(AP),通過AP可以訪問系統(tǒng)的其余部分寄存器。 Cortex M系列CPU的一個重要AP是AHB-AP,它是內(nèi)部AHB總線上的主機。換句話說,AHB-AP可以訪問內(nèi)部核心的內(nèi)存映射。由于內(nèi)部閃存、SRAM、調(diào)試組件和外圍設(shè)備都是內(nèi)存映射,因此AHB-AP可以控制整個設(shè)備,包括對其進行編程。整個SWD操作過程是分級進行的,時鐘信號由SWCLK 管腳輸入,數(shù)據(jù)信號從SWDIO管腳輸入輸出。首先Debugger對SW-DP進行操作,確定AP寄存器的參數(shù),達到對Cortex Memory Map進行操作。
SWCLK是始終由host驅(qū)動的時鐘信號。雙方將推動SWDIO線路發(fā)送數(shù)據(jù),SWDIO上的高值表示邏輯“1”,低值表示邏輯的“0”。協(xié)議規(guī)定當雙方都將驅(qū)動SWDIO線時,規(guī)定了三個不同的階段。每個事務(wù)都以host發(fā)送請求為開始;Target隨后以應(yīng)答回應(yīng);最后是數(shù)據(jù)傳輸階段。數(shù)據(jù)階段由誰控制線路,取決于host發(fā)出的請求類型。如果host發(fā)出的是寫請求,host將驅(qū)動SWDIO線。在讀請求時,target將驅(qū)動SWDIO線,將數(shù)據(jù)從target傳輸?shù)絟ost。在所有階段,數(shù)據(jù)都是首先傳輸LSB(最低有效位)。不管是target從SWDIO線上采樣數(shù)據(jù),還是驅(qū)動數(shù)據(jù)到SWDIO線上,都是在時鐘SWCLK的上升沿進行。
支持JTAG和SWD模式的下載調(diào)試器很多,J-Link、 ST-LINK、 ULINK這些大眾化的工具都支持,還有很多小眾的下載調(diào)試器同樣也支持。