MAX-IDE是MAXQ系列微控制器的全功能應用開發和調試環境。MAX-IDE設計用于與所有標準MAXQ評估套件配合使用,以提供基于項目的開發環境、對標準MAXQ調試功能的訪問、集成的宏匯編器以及使用JTAG接口的在線應用加載。
概述
MAX-IDE是MAXQ系列微控制器的全功能、應用開發和調試環境。它適用于所有標準的MAXQ評估板,并提供以下功能。
基于項目的MAXQ裝配開發環境
集成MAXQ宏匯編器,包括所有MAXQ微控制器的標準頭文件
使用JTAG/TAP接口和ROM引導加載程序加載在線應用(用于帶閃存或EEPROM程序存儲器的MAXQ微控制器)
通過JTAG/TAP接口提供的在線調試功能包括斷點、分步程序執行和存儲器/寄存器內容查看
安裝 MAX-IDE
系統要求
操作系統:Windows 98、Windows NT、Windows 2000、Windows ME 或 Windows XP??
至少一個空閑串行COM端口(與MAXQ評估板通信需要),或一個USB轉串行適配器和一個空閑USB端口
運行安裝程序
MAX-IDE 的安裝包是 MAX-IDE.zip。
下載此軟件包,解壓縮并運行安裝程序.exe以將MAX-IDE安裝到硬盤驅動器。
在InstallShield對話框中,選擇典型安裝,這將使用評估套件安裝MAXQ應用開發所需的所有文件。
安裝完成后,可以從“開始”菜單啟動MAX-IDE。
最大集成集成組件安裝的文件
MAX-IDE 的主要可執行文件和幫助文件位于 MAX-IDE 根目錄中,缺省情況下位于 {Program Files}MAX-IDE。其他文件位于以下子目錄中。
編譯器子目錄包含隨MAX-IDE安裝的所有編譯器和匯編程序的可執行文件和數據文件。這至少包括標準的MAXQ匯編器;根據您使用的發行版,也可以安裝其他匯編程序和編譯器。
器件子目錄包含庫、驅動程序和配置文件,用于所有MAXQ微控制器和評估板的目標應用,并與所有MAXQ微控制器和評估板進行通信。
Example子目錄包含所有MAXQ微控制器的代碼示例(在/xxx_Demo中)和標準包含文件和庫(在/api中)。
設置JTAG接口
串行轉JTAG適配器板
MAX-IDE通過專用的JTAG測試訪問端口(TAP)接口與MAXQ微控制器的引導加載程序和調試引擎功能接口,該接口與JTAG IEEE標準1149兼容。此接口由以下信號組成,這些信號通常與端口引腳多路復用:TMS(測試模式選擇)、TCK(測試時鐘)、TDI(測試數據輸入)和 TDO(測試數據輸出)。
圖1說明了所有MAXQ微控制器評估套件附帶的串行轉JTAG適配器如何在PC串行COM端口和MAXQ微控制器的JTAG接口之間提供接口層。
圖1.用于MAXQ的串行至JTAG接口
JTAG接口信號和電纜
串行轉JTAG適配器板通過10連接器帶狀電纜連接到MAXQ評估板,兩端各有一個2×5 0.100“間隔的插座。該電纜承載的信號列于下表 1 中。
引腳編號 | 信號類型 | 信號名稱 | 信號描述 |
1 | 輸入至最大限量 | TCK | JTAG/TAP測試時鐘 |
2 | 地 | 接地 | 地 |
3 | 最大分量輸出 | UD。 | JTAG/TAP測試數據輸出 |
4 | 參考 | VREF | 由MAXQ套件提供,用于設置串行轉JTAG板輸出的JTAG信號的基準電平 |
5 | 輸入至最大限量 | TMS | JTAG/TAP測試模式選擇 |
6 | 輸入至最大限量 | nRST | 漏極開路驅動,連接MAXQ復位線 |
7 | 沒有 | .KEY | 用于JTAG電纜對準的鍵控引腳 |
8 | 權力 | VCC5 | +5.0V (±5%) 電源由 JTAG 板提供 |
9 | 輸入至最大限量 | TDI | JTAG/TAP測試數據 |
10 | 地 | 接地 | 地 |
連接評估套件
根據所使用的評估套件類型,串行轉JTAG接口板和/或評估板可能需要電源。此處提供了設置兩個板的簡要說明(表 2);有關更詳細的說明,請參閱評估板數據手冊。注意,串行轉JTAG板或任何MAXQ評估板使用的所有電源都是直流電源,中心柱正極。
評估套件 | 吉泰格電源 | 套件電源 | 跳線設置 | JTAG標頭 |
最大Q2000 | 5V, ±5% | 沒有 | JTAG—關閉 JH1, JH2, JH3Kit—關閉 JU11;在 JU1、JU2、JU1 收盤 2+3 | J4 |
為了設置MAXQ評估板和串行轉JTAG板(圖2)以與MAX-IDE配合使用:
將電源連接到串行轉JTAG板,如上所示。
設置評估套件和串行轉JTAG板的任何跳線,如上所示。可能需要在評估套件板上進行額外的跳線或DIP開關設置,以訪問某些套件功能;有關更多詳細信息,請參閱評估套件數據手冊。
將串行轉JTAG板上的P2接頭的5×10 2連接器帶狀電纜連接到評估板上的相應接頭。連接器可以鍵控以僅以一個方向連接;如果不是,請驗證紅線是否連接到兩個接頭上的同一引腳。
將串行到JTAG板上的直通串行電纜從J1連接到PC COM端口。
打開所有電源。
圖2.MAXQ2000評估板和串行轉JTAG板
在 MAX-IDE 中使用項目
創建新的MAXQ裝配項目
要在MAX-IDE中創建新的MAXQ匯編語言項目,請執行以下步驟。
從MAX-IDE菜單中,選擇器件→MAXQ JTAG。
選擇“項目”→“新建項目”。將創建一個無標題的項目。
選擇“項目”→“將項目另存為”。選擇要保存項目的位置(.prj 文件)。
要創建新的匯編語言文件,請選擇“文件”→“新建文件”。將程序集代碼輸入到文件中后,選擇“文件”→“另存為”,并將新創建的 .asm 文件保存在項目目錄中。接下來,選擇“項目”→“添加文件”,然后選擇要添加到項目中的新創建的文件。
若要將現有匯編語言文件添加到項目中,只需選擇“項目”→“添加文件”,然后選擇要添加到項目中的文件。
包含文件不需要正式添加到項目中,因為它們是在組裝過程中自動讀取的。
MAXQ2000的示例裝配文件為:
$include (..\api\maxQ2000.inc) org 0000h main: jump $ end
上面的$include行將根據包含文件的位置而有所不同。有關 $include 和 org 指令的更多詳細信息,請參閱本文檔的“使用 MAX-IDE 匯編器”部分。
有關匯編和包含文件的說明
所有MAXQ微控制器通用的系統寄存器(如累加器、數據指針和環路控制寄存器)在MAX-IDE匯編器中預定義。每個器件的外設寄存器都不同,必須在包含文件中定義。每個MAXQ微控制器的MAX-IDE安裝都包含標準包含文件;上例所示的包含文件用于MAXQ2000。
預處理器指令(如等式、定義和宏)不會在項目內的文件之間傳遞。如果MAX-IDE程序集項目包含多個程序集文件,則任何預處理器指令或包含文件指令都必須包含在使用它們的每個匯編文件中。
無論項目中的程序集文件數如何,每個文件的末尾都必須顯示“end”語句。
不要將“end”語句放在包含文件的末尾。
當項目中包含多個程序集文件時,所有文件中的所有標識符都是有效的公共標識符;也就是說,任何程序集文件中的代碼都可以調用例程或引用該項目中任何其他程序集文件中定義的標簽。
打開現有項目
要打開以前創建的MAX-IDE項目,只需從菜單中選擇“項目→打開項目”,然后選擇要打開的項目的.prj文件。注意,當串行轉JTAG板和評估板未正確連接并上電時,打開MAXQ JTAG項目可能會導致錯誤信息。
創建或打開項目后,項目中包含的匯編代碼文件將在左側面板中列出。雙擊文件名將打開它,以便在 MAX-IDE 中進行編輯,如下圖 3 所示。
圖3.MAX-IDE 項目環境。
執行和調試代碼
編譯項目
若要編譯項目文件,請從菜單中選擇“調試→生成”或“調試→全部生成”,單擊工具欄上這些命令的快捷按鈕之一,或按 F7(與 Make) 相同)。MAXQ匯編器將運行;如果沒有錯誤,則消息“正在編譯...構建成功“將顯示在”消息“窗口中。生成中的任何錯誤也將顯示在“消息”窗口中。
運行項目
成功編譯項目后,可以使用幾種方法之一在調試器中執行該項目。
選擇調試→運行(F5)將通過JTAG接口將編譯好的項目代碼加載到MAXQ微控制器中并開始執行。程序執行將繼續,直到選擇“調試→停止”(Shift+F5)、單擊“暫停”按鈕或遇到斷點。
選擇“調試”→單步執行 (F11) 將加載已編譯的程序并在第一個源代碼行停止執行。
選擇“調試”→“運行到光標”(Control+F10) 將加載已編譯的程序,開始執行并運行,直到執行點到達編輯光標所占據的行或到達斷點(以先發生者為準)。如果光標不在源代碼行上,則選擇此選項將導致錯誤。
斷點在預定位置停止程序執行,可以通過以下三種方法之一進行設置或清除。
將光標移動到要斷點的行,然后選擇“調試”→“切換斷點”。
將光標移動到要斷點的行,然后單擊工具欄中的紅綠燈圖標。
在編輯窗口中單擊要斷點的行的行號。
請注意,斷點可以放在非源代碼行上,但這不會有任何影響。MAXQ微控制器允許一次設置多達4個斷點;如果選擇了“運行到光標”,則會占用一個斷點,因此在這種情況下只能設置三個斷點。
選擇“調試”→“停止”或單擊工具欄中的“停止”圖標將完全關閉程序執行。但是,當執行在第一行(單步執行)、游標行(運行到光標)或設置了斷點的行處停止時,程序可能會以分步模式執行。也可以通過單擊“暫停”按鈕進入分步模式。在此模式下,當前執行點用綠色箭頭標記,可以使用以下命令。
調試→單步執行 (F11)、調試→單步執行 (F10) 和調試→單步執行 (Shift+F10) 在程序集調試模式下都具有相同的效果,即執行單個指令并將執行點移動到下一條指令。
調試→運行將從當前執行點運行,直到到達下一個斷點,如上所述。
調試→運行到游標將從當前執行點運行,直到到達游標行,如上所述。
請注意,在匯編語言調試模式下運行時,“調試”菜單中的“高級調試”和“低級別調試”設置不起作用。
顯示和編輯處理器寄存器
一旦程序加載完畢并執行了至少一條指令,就可以使用調試器查看和編輯MAXQ微控制器的寄存器。選擇“窗口”→顯示→寄存器將顯示寄存器集。這些值將在調試器中單步執行代碼時更新。可寫寄存器可以通過雙擊其值字段并以十六進制、十進制或二進制輸入新值來編輯。
MAXQ2000套件說明: 如果連接了LCD子板,請勿手動編輯寄存器PO0、PD0、PO1、PD1、PO2、PD2、PO3或PD3的值。在連接液晶屏的情況下將這些針腳輸出設置為靜態值可能會損壞液晶屏。
顯示和編輯處理器內存
一旦程序加載完畢并執行了至少一條指令,就可以查看和編輯MAXQ微控制器的內部存儲器。選擇“窗口”→顯示→內存將顯示內部存儲器。您可以通過從顯示屏上的下拉列表中進行選擇來查看代碼、數據或堆棧內存。內存以 16 位寬度顯示代碼和堆棧空間,以 8 位寬度顯示數據空間。可以通過雙擊內存位置并輸入新值來編輯數據或堆棧空間中的內存值。
使用MAX-IDE匯編程序
MAX-IDE提供了一個多通道匯編器,可用于用MAXQ匯編語言開發應用程序。此匯編程序包括一個單通道預處理器,它提供了使用包含文件、符號等值、條件程序集和宏的功能。匯編器和預處理器與MAX-IDE環境完全集成。
有關如何使用宏和其他預處理器指令的示例,請參閱“宏”示例項目。
一般語法
MAXQ匯編器和預處理器都不區分大小寫。程序集語句遵循以下格式:
[label:] [opcode [parameter [, parameter]]] [;comment]
如以下示例代碼所示:
main: move Acc, A[2] ; copy A[2] to active accumulator
標識符(如上面顯示的“主”標簽)可能包含字符 [a-zA-Z_?$0-9],但它們不能以 0-9 數字開頭。它們的長度最多為 127 個字符。
請參考MAXQ系列用戶指南,詳細了解MAXQ微控制器系列的架構、指令集、尋址模式和內核寄存器。
源文件
MAX-IDE項目窗口中列出的所有匯編源(.asm)文件將在編譯項目時按照它們在窗口中的顯示順序進行匯編。未提供鏈接器,因此多個文件的組裝方式與合并到單個文件中然后組裝的方式相同。
源文件可能包含指令、等值/定義、宏、條件程序集塊和語句。任何源文件的最后一行都必須包含 END 指令:
end
包含文件
包含 (.inc) 文件不需要顯式添加到項目中。相反,它們通過 include 指令自動讀入和分析,這會導致解析包含文件,就好像它的所有文本都出現在源文件中而不是 include 指令一樣。
(source file): (equates.inc): $include(equates.inc) ---> MASK1 equ 0FFh MASK2 equ 0FEh (resume parsing in source <--- file)
包含文件可能包含指令、等值、宏和 DB/DW 數據語句,但它們可能不包含程序集例程。包含文件不需要以 END 指令結尾。
MAX-IDE為每個MAXQ微控制器提供了一個標準的包含文件,該文件定義了該微控制器的外設寄存器集以及實用程序ROM提供的功能地址。這些包括文件可用于所有匯編語言項目;它們位于主 MAX-IDE 安裝目錄下的“示例”子目錄中。
常數
用作語句或等價定義的即時值的常量數值可以用四種格式之一編寫。
十進制(默認值)- 不以字符或“d”結尾。示例:10、07d
二進制 - 以“b”結尾。示例:01b、1101101b
十六進制 - 以 0-9 位數字開頭,以“h”結尾。示例:10h、09FFEh
單個字符 - 轉換為字節 ASCII 值。示例:“A”
以下運算符也只能在常量中使用并等同定義;這些語句的評估在預處理階段執行,在解析常量值之前。
move Acc, #(1+1) ; 2 : Addition move Acc, #(4-1) ; 3 : Subtraction move Acc, #(2*2) ; 4 : Multiplication move Acc, #(25/5) ; 5 : Division (truncated to integer) move Acc, #(MIN(6,7)) ; 6 : Minimum of two values move Acc, #(MAX(6, 7)) ; 7 : Maximum of two values move Acc, #'A' ; ASCII value of 'A' move Acc, #(550h | 055h) ; 555h : Logical OR move Acc, #(550h & 055h) ; 050h : Logical AND move Acc, #(550h ^ 055h) ; 505h : Logical XOR move Acc, HIGH(#1234h) ; 12h : Select high byte of word move Acc, LOW(#1234h) ; 34h : Select low byte of word move Acc, NOT(#0000h) ; FFFFh : Bitwise negation move Acc, #001h << 7 ; 080h : Shift left move Acc, #080h >> 7 ; 001h : Shift right
等同
使用 EQU 指令定義的等值用于通常使用常量值的任何位置的數字替換。他們可以使用上面為常量定義的所有格式和常量運算符。標簽不被識別為常量。
ONE equ 01 TWO equ 02 move Acc, #ONE move Acc, #(ONE+TWO)
等值也可用于后續等值的定義中。
ONE equ 01 TWO equ ONE+ONE
定義
定義允許直接 C 樣式文本替換,無需額外處理,并且最常用于包含文件中以定義外設寄存器。替換文本限制為一行;沒有公認的延續字符。無法識別 C 樣式宏。
#define PO[0] M0[0] move Acc, PO[0] ; Parses as 'move Acc, M0[0]'
數據關鍵字
DB 和 DW 指令可用于將原始字節(包括字符串值中的字節)或單詞插入到當前位置的十六進制文件中。
db 055h, 0AAh, 055h, 0AAh ; byte values dw 0AAAAh, 05555h ; word values db "MAX-IDE Environment " ; byte value for each char (padded to even count)
請注意,這些數據值將插入到代碼空間中。因此,如果 DB 語句發生在兩組指令語句之間,則定義的字節數必須為偶數,以防止出現字對齊程序集錯誤。
條件組裝
條件語句允許僅在滿足特定布爾條件時才組裝代碼塊。它們具有以下形式。
IF () statements ... ENDIF
布爾語句使用常量、等值和以下布爾運算符定義:=、!=、<、<=、> 和 >=。條件程序集塊中只能使用代碼和包含語句,不能使用宏或等值。
DEBUG equ 0 DOINC equ 1 IF (DEBUG != 0) call RoutineDbg ENDIF IF (DEBUG = 0) call Routine ENDIF IF (DOINC = 1) $include(defines.inc) ENDIF
宏
宏允許使用代碼塊來定義函數,這些代碼塊在每次調用函數時進行內聯擴展和組裝。它們具有以下形式。
MACRO [[PARAM ] [whitespace AND/OR comma] [ ] ...] [LOCAL [whitespace AND/OR comma] [ ] ...] ... ENDM
最簡單的宏類型只不過是在每次引用時插入其代碼。插入代碼中的等式、定義和嵌套宏調用都將正常處理。
ThreeNops MACRO nop nop nop ENDM ThreeNops --> nop nop nop
宏可以選擇定義一個或多個參數,這些參數是在引用宏時傳遞的值。這些值將粘貼到展開的代碼中。以下宏使用參數為任何可寫寄存器(Acc除外)提供“INC”函數,代價是一級堆棧空間。
Inc MACRO PARAM Register push Acc move Acc, Register add #1 move Register, Acc pop Acc ENDM Inc LC[0] --> push Acc move Acc, LC[0] add #1 move LC[0], Acc pop Acc
宏還可能包含本地標識符,這些標識符在擴展的代碼中重命名,以便它們在宏的每個引用中都是唯一的。
LoopN MACRO PARAM Count LOCAL L1 move LC[0], Count L1: djnz LC[0], L1 ENDM
在上面的宏中,每次引用宏并插入其代碼時,“L1”標簽都將重命名為不同的臨時值。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7557瀏覽量
151457 -
寄存器
+關注
關注
31文章
5343瀏覽量
120416 -
存儲器
+關注
關注
38文章
7493瀏覽量
163868
發布評論請先 登錄
相關推薦
評論