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