摘要:本文將介紹MAXQ微控制器架構及與內核緊密集成的硬件調試引擎特性,使用IAR公司的嵌入式工作臺(Embedded Workbench)開發環境與評估板的結合對其應用開發作分析說明。
關鍵詞:在線調試 自舉裝載 JTAG端口 C語言 訪問編程
1、MAXQ硬件調試引擎特性
新型MAXQ結構為應用開發的編程了拓寬了渠道。這是因為每個MAXQ微控制器都包含一個與微控制器內核緊密集成的硬件調試引擎。
而架構中第一款芯片就是MAXQ2000,本文將MAXQ微控制器架構與硬件調試引擎特性,結合IAR的Embedded Workbench(嵌入式工作臺)開發環境與MAXQ2000評估板一起使用對其應用程序開發作分折說明,從而領會其使用與技巧。
將MAXQ2000微控制器的在線調試與程序裝載功能與IAR Embedded Workbench開發環境相結合,就能為設計者提供C或匯編級的應用開發與測試手段。而MAXQ2000基于硬件的調試引擎與自舉裝載過程在專用的JTAG端口運行,可以全面調試訪問,而對系統資源的影響最小。
2、硬件調試引擎
2.1在線調試特性
與微控制器內核緊密集成的硬件調試引擎,用來控制MAXQ2000的調試特性。該調試引擎可以調用片上的固定用途ROM中的服務子程序,支持廣泛的調試特性。具體如下:
* 對集成程序閃存的讀取訪問。
* 對板上數據SRAM的讀/寫訪問。
* 對16×16堆棧存儲器的讀取訪問。
* 對所有MAXQ2000系統與外設寄存器的讀/寫訪問。
* 單步(跟蹤)程序執行。
* 最多四個地址斷點,在代碼存儲器中特定的單元停止程序的執行。
* 兩個數據存儲器匹配斷點,在數據存儲器中特定單元被訪問時停止程序的執行。
* 兩個寄存器斷點,在出現對特定系統或外設寄存器的寫訪問時(不能與數據存儲器匹配斷點同時使用),并且寫入寄存器的數據與特定值匹配時停止程序的執行。
* 密碼匹配功能(用來解鎖其余的調試功能)。
所有與調試引擎的通信都通過MAXQ2000專用的JTAG測試訪問端口(TAP)接口完成,該接口與JTAG IEEE標準1149兼容。該接口由四個信號組成,由MAXQ2000端口引腳復用得到,定義如下:TMS(測試模式選擇)-與P4.2復用;TCK(測試時鐘)-與P4.0復用;TDI(測試數據輸入)-與P4.1復用;以及TDO(測試數據輸出)-與P4.3復用。
盡管JTAG TAP端口專門用于系統內調試與系統內編程,不過,一旦應用開發完成,傳輸JTAG TAP端口信號的四個端口引腳可以被釋放用于其他目的。JTAG端口在復位后默認為激活狀態,但是一旦運行,應用軟件可以關閉端口,將四個相關的端口引腳用于其他用途。
從MAXQ2000內核來看,JTAG接口與調試引擎異步工作。通過JTAG端口進行的通信不需要與MAXQ2000運行的時鐘速率相同,不過對MAXQ2000來說,TCK頻率的最大值被限定在1/8系統時鐘速率以下。
在MAXQ2000執行代碼時,可以通過調試引擎讀取或寫入斷點設置。該模式被稱為后臺模式,在這種模式下,調試引擎獨立于CPU內核之外工作。
為了完成其他操作,如存儲器與寄存器的讀寫,調試引擎控制MAXQ2000的內核,并切換到執行固定用途ROM中的調試服務子程序。該模式被稱作調試模式,該模式下,調試引擎中斷了正常的程序執行。在這種情況下,用戶應用程序被暫時掛起,等到調試函數執行完畢后繼續執行,與中斷服務子程序的處理方式相同。
由于在應用程序中JTAG TAP端口并不使用,因此組成JTAG端口的端口引腳可以被應用軟件收回。調試功能所需的所有附加代碼都位于固定用途ROM中,因此,調試功能消耗的系統資源只是少量的數據SRAM,以及一層程序堆棧(用來存儲調用調試子程序的返回地址)。最多19個字節的數據SRAM(地址0x07ED至0x07FF)被保留用于調試服務子程序。若某個應用程序不使用在線調試,則這些數據SRAM單元可供應用程序使用。
2.2程序裝載功能-通過JTAG進行集成閃存編程
JTAG TAP端口也可被用于自舉裝載功能,甚至在不使用調試功能時也有效。通過JTAG TAP接口設置3個配置位,然后從復位中釋放MAXQ2000,將控制轉移到位于固定用途ROM中內置的自舉裝載過程子程序。用來控制訪問自舉裝載過程的配置位如下:
* SPE:系統編程使能位(1CDF.1)。該位被置1時,MAXQ2000在系統復位后,執行固定用途ROM中的自舉裝載子程序。
* PSS[l:0]:編程源選擇(1CDE3-2)。這幾位的設置決定了自舉裝載過程的通信使用JTAG端口(PSS[l:0]= =00b)還是串口0 UART(PSS[l:0]= =01b)。
一旦這些位被置位并且MAXQ2000從復位狀態中釋放,固定用途ROM的自舉裝載過程通過選定的端口(JTAG或串口0 UART)開始與主機系統通信。在這兩種情況下,使用的協議相同,并且都提供如下函數:
* 讀取MAXQ2000的ID標題(識別固定用途ROM的版本)。
* 返回內部程序與數據存儲器的大小。
* 讀取、寫入、驗證與CRC校驗集成閃存程序存儲器。
* 讀取、寫入、驗證與CRC校驗內部數據SRAM。
* 密碼匹配(解鎖存儲器讀寫指令)。
當自舉裝載過程通過串口0 UART而不是通過JTAG端口通信時,必須使用JTAG接口將自舉裝載過程置為串行通信模式。不過,適當地設置SPE與PSS位,然后復位MAXQ2000(通過使看門狗定時器過期或使用外部硬件手段),應用軟件也可以在串行通信模式下調用自舉裝載過程。使自舉裝載過程被調用的方法必須由應用軟件決定。
2.3對于調試和自舉裝載功能的密碼保護
基本的密碼保護方案限制了對MAXQ2000的調試與自舉裝載過程函數的訪問。必須先由主機系統提供該密碼,才允許訪問任何讀取或修改存儲器或系統與外設寄存器內容的函數。
密碼長度為16個字或32個字節。密碼的數值存放在內部閃存的0x0010至0x001F字單元中。這些數值可以作為靜態數組包含在應用程序中,或者只是存儲在這些單元中的指令代碼的數值。不管哪種方式,在裝人應用程序時密碼自動寫入。若沒有裝入任何應用,密碼的缺省值為所有的字都等于0xFFFF。
即使密碼未知,MAXQ2000的內部閃存也始終可以通過自舉裝載過程擦除。這將有效地清除密碼值(所有字都變為0xFFFF),并允許其他編程或調試操作繼續進行。在32字節密碼數值沒有匹配之前,密碼保護簡單地確保了不能從MAXQ2000中讀取現有指令。
3、使用串口-JTAG適配器模塊
MAX02000微控制器的集成開發環境(例如MAXIDE與IAR Embedded Workbench)包含了支持與MAXQ2000 JTAG接口進行通信的軟件庫。不過,由于運行該軟件的PC通常都不具備JTAG端口,因此,兩個系統的接口需要一個硬件層。
MAXQ2000評估板包含的串口-JTAG適配器模塊為這個接口問題提供了圓滿的解決方案(見圖1)。PC上運行的軟件(例如IAR Embedded Workbench)通過標準的COM串行端口與串口-JTAG適配器模塊通信。然后串口-JTAG適配器模塊與MAXQ2000的JTAG端口接口,將指令傳輸至自舉裝載過程或調試引擎。適配器模塊不僅用來實現電平轉換,也支持在不同電源電壓范圍運行的MAXQ微控制器,而且不需要PC為JTAG波形提供精確時序。
4、使用IAREmbedded WOrkbonch進行應用程序開發
IAR Embedded Workbench開發環境為MAXQ2000提供了基于C語言或基于匯編語言的應用程序開發手段。使用上述對MAXQ2000評估板與串口-JTAG適配器模塊的硬件配置,IAR Embedded Workbench可以完全訪問MAXQ2000的基于JTAG的自舉裝載過程以及在線調試特性。
IAR Embedded Workbench為MAXQ2000的應用程序開發提供了以下特性。
* 將編譯完成的應用程序裝入MAXQ2000的集成程序閃存中。
* 提供C語言或匯編語言級的單步(跟蹤)程序執行。
* 顯示代碼、數據、硬件堆棧與固定用途ROM存儲器。
* 調用堆棧跟蹤。
* C語言或匯編語言級的斷點設置。
* 顯示與編輯所有MAXQ2000系統與外設寄存器。
5、應用
值此,以創建與編譯一個MAXQ2000項目為例對應用作說明。
由于IAR Embedded Workbench包含對MAXQ2000微控制器系列的集成支持,創建一個新的MAXQ2000微控制器項目只需要幾個具體的設置。
啟動IAR后,從菜單中選擇File,然后選擇New。在New的對話框中選擇Workspace,然后點擊Ok。為該項目的工作空間鍵人一個新的名稱(保存為“.eww”文件),然后點擊Save。
工作空間窗口打開后,從菜單中選擇Project,然后選擇Create New Project。對于新項目,MAXQ工具鏈為默認狀態。為新項目鍵人文件名(保存為*.ewp文件),然后點擊Create。
接下來,從菜單中選擇Project,然后選擇Settings。出現的對話框中顯示的是新創建項目的設置,如圖2所示。
在Options對話框中的General Options選擇標簽下,應當為MAXQ2000微控制器選擇以下設置。
* 由于MAXQ2000具有MAXQ20型的內核,Processor Variant應當設定為MAXQ20。
* 對于MAXQ2000,Number of accumulators應當設定為16。
* 對于MAXQ2000,Hardwar estac kdepth應當設定為16。
在Option對話框中的C-Spy Debugger選擇標簽中,應當為MAXQ2000選擇以下設定(見圖3):
* 將Driver設定為JTAG,說明通過PC的COM端與串口-JTAG接口電路板連接。另兩個可能的設置為Simulator(用來與MAXQ2000軟件模擬器一起運行)與Emulator(用來與MAXQ2000在線仿真器系統一起運行)。
* 應將Use Device Description File邏輯框選中。器件說明文件(*。ddf應當是提供給MAXQ2000微控制器的文件(maxq200x.ddf)。該文件定義了IAR環境使用的特定MAXQ微控制器的存儲器空間與外設寄存器組。
在Options對話框中的JTAG部分,Command line options區段包含了與串口-JTAG電路板連接的PC COM端口。圖4所示為連接至COM端口1的選項設置。
為項目進行選項設置之后,選擇Projiect,然后選擇Add Files,將C語言代碼文件添加到項目中。添加了項目文件之后,選擇Project,然后選擇Make來編譯項目。接下來,選擇Proiect,然后選擇Debug來啟動調試過程。這樣將編譯后的項目通過JTAG接口下載,并將IAR置為調試模式,如圖5所示。
IAR中的調試操作
啟動調試過程后,Step over(F10),StepInto(F11)與StepOut(Shift+F11)可以用來跟蹤項目的C語言代碼。若要運行代碼,則從菜單中選擇Debug,然后選擇Go,或按F5鍵。將光標放置在源代碼的指令行上,并點擊工具欄中的Toggle Breakpoint按鈕,就可以設定或清除地址斷點。一次最多可以設置四個地址斷點。
Memory窗口可以顯示MAXQ2000的Code(內部閃存)、Data(內部SRAM)、Hw stack(內部16層堆棧),以及固定用途ROM存儲器。存儲器顯示可以被設置為字節、字,或雙字格式,也可以按hex(對所有寬度)與ASCII(對字節寬度)格式來顯示。
Register窗口用來顯示MAXQ2000的系統與外設寄存器。它們按以下邏輯分組來顯示:
* CPU寄存器:累加器與累加器控制寄存器、數據指針與數據指針控制寄存器、指令指針、循環計數器,以及程序狀態標志。
* 中斷控制:中斷向量、模塊屏蔽,以及標識寄存器。
* 周期:顯示已經執行的指令周期數。
* 并行端口:用于PO、P1、P2、P3和P4的輸入、輸出以及端口方向寄存器。
* 外部中斷:用于外部中斷的使能、邊沿選擇,以及標志寄存器。
* 定時器:用于定時器/計數器0至2的寄存器。
* 串行端口:用于SPI與串行端口的控制與緩沖寄存器。
* 乘法器:與硬件乘法器模塊相關的寄存器。
點擊寄存器數值并鍵人新值,可以實現對可寫寄存器的編輯。點擊寄存器名稱旁的加/減符號,可以實現寄存器中獨立位或位區域顯示的擴展或壓縮。
6、結論
IAR Embedded Workbench高級的、基于C語言項目的環境集成了MAXQ2000的底層調試接口,允在C語言或匯編語言代碼層上執行精細的調試。MAXQ2000的內置的調試與在線編程的特性,以及對系統資源的底層影響,允許應用程序開發過程以及已完成項目的最終發布使用同樣的硬件設計。