簡介
MAX-IDE是為MAXQ?微控制器系列提供的功能完備的開發和調試環境。它能夠與所有標準MAXQ評估板配合工作,具有以下特性。
- 用于MAXQ匯編應用的項目級開發環境
- 集成的MAXQ宏匯編器,包括適用于所有MAXQ微控制器的標準頭文件
- 采用JTAG/TAP接口和ROM引導裝載器提供在線應用裝載(適用于帶有閃存或者EEPROM程序存儲器的MAXQ微控制器)
- 通過JTAG/TAP接口實現在線調試,包括斷點、單步運行和存儲器/寄存器查看
更詳細信息,請參考MAXQ2000評估板數據資料,該資料可在評估板所附的CD或一下網址找到:www.maxim-ic.com.cn/MAXQ2000-KIT。
安裝MAX-IDE
系統要求- 操作系統:Windows 98, Windows NT, Windows 2000, Windows ME或者Windows XP
- 至少一個未用的串行COM端口(用于與MAXQ評估板通信),或者一個USB至串口適配器和一個未用的USB端口。
- MAX-IDE的安裝包為MAX-IDE.zip,可以從MAXQ網頁下載。
- 下載該安裝包,解壓縮,然后運行setup.exe,將MAX-IDE安裝到您的硬盤上。
- 在InstallShield對話框中,選擇典型安裝,安裝評估板MAXQ開發所需要的全部文件。
- 安裝完成后,可以從開始菜單啟動MAX-IDE。
MAX-IDE的主執行程序和幫助文件位于MAX-IDE根目錄下,默認路徑為{Program Files}\MAX-IDE。其他文件在以下子目錄中。
- Compilers子目錄含有MAX-IDE安裝的所有編譯器和匯編器的可執行程序和數據文件。至少包含標準MAXQ匯編器;也可能會安裝一些其它匯編器和編譯器,和你的獲得渠道有關。
- Devices子目錄含有庫、驅動程序和配置文件,用于將應用定位于各種MAXQ微控制器和評估板,并完成它們之間的通信。
設置JTAG接口
JTAG適配板通過一個專用的JTAG測試訪問端口(TAP),MAX-IDE與MAXQ微控制器的引導裝載程序和調試引擎接口,這個測試口符合JTAG IEEE標準1149。該接口由以下信號組成(它們通常與端口引腳復用):TMS (測試模式選擇)、TCK (測試時鐘)、TDI (測試數據輸入)和TDO (測試數據輸出)。
圖1顯示了串口-JTAG適配器(包含于所有MAXQ微控制器評估板中)是如何連接PC串行COM口和MAXQ微控制器的JTAG口的。
圖1. 用于MAXQ的串口-JTAG接口。
JTAG接口信號和電纜
JTAG適配器通過10芯帶狀電纜和2 x 5、0.100"間距的接插件與MAXQ評估板連接。該電纜傳輸的信號列在下面表1中。
表1. JTAG接口信號
Pin Number | Signal Type | Signal Name | Signal Description |
1 | Input to MAXQ | TCK | JTAG/TAP Test Clock |
2 | Ground | GND | Ground |
3 | Output from MAXQ | TDO | JTAG/TAP Test Data Out |
4 | Reference | VREF | Supplied by MAXQ kit to set the reference level for JTAG signals output by the Serial-to-JTAG board |
5 | Input to MAXQ | TMS | JTAG/TAP Test Mode Select |
6 | Input to MAXQ | nRST | Open-drain drive, connected to MAXQ reset line |
7 | None | KEY | Keyed pin for JTAG cable alignment |
8 | Power | VCC5 | +5.0V (±5%) supply provided by JTAG board |
9 | Input to MAXQ | TDI | JTAG/TAP Test Data In |
10 | Ground | GND | Ground |
連接評估板
根據所采用的評估板類型,需要對JTAG適配板、評估板或者兩者供電。此處給出兩個電路板的簡要設置方法(表2);更詳細的說明請參考評估板數據資料。注意,無論是JTAG適配板還是MAXQ評估板,所用的電源均為直流電源,中心為正。表2. 評估板設置
Evaluation Kit | JTAG Power Supply | Kit Power Supply | Jumper Settings | JTAG Header |
MAXQ2000 | 5V, ±5% | None | JTAG―Close JH1, JH2, JH3Kit―Close JU11; Close 1+2 on JU1, JU2, JU3 | J4 |
使用MAX-IDE時,請按照以下步驟設置MAXQ評估板和JTAG適配板(圖2):
- 如上所述將電源接到JTAG適配板。
- 如上所述設置評估板和JTAG適配板的跳線。可能還需要根據評估需要設置評估板上其他的跳線或者DIP開關;更詳細的信息請參考評估板數據資料。
- 連接2 x 5 10芯帶狀電纜到JTAG適配板上的P2插座和評估板上的對應插座。連接器僅能從一個方向連接;否則,請確定紅線連接至兩個插座相同編號的引腳。
- 使用直通串行電纜將JTAG適配板上的J1連接至PC COM端口。
- 打開所有電源。
圖2. MAXQ2000評估板和JTAG適配板。
在MAX-IDE中建立項目
建立一個新的MAXQ匯編項目按照以下步驟,在MAX-IDE中建立一個新的MAXQ匯編語言項目:
- 從MAX-IDE菜單選擇Device MAXQ JTAG。
- 選擇Project New Project。建立一個未命名的項目。
- 選擇Project Save Project As。選擇您希望保存項目(.prj 文件)的位置。
- 要建立一個新的匯編代碼文件,可選擇File New File。在文件中輸入匯編代碼后,選擇File Save As,在你的項目目錄下保存新建立的.asm文件。下一步,選擇Project Add Files,選擇新建的文件,加入到項目中。
- 要將已有的匯編代碼文件加入到項目中,選擇Project Add Files,然后選擇要加入的文件。
- 不必將包含文件加入到項目中,匯編過程會自動讀入包含文件。
$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項目,只需從菜單中選擇Project Open Project,然后選擇你希望打開的.prj文件。注意,如果JTAG適配板和評估板沒有正確連接和上電,打開MAXQ JTAG項目時可能會產生錯誤信息。
當一個項目已經建立或者打開后,該項目中的匯編代碼文件將被列在左側的面板上。雙擊文件名可以將其打開,以便在MAX-IDE中進行編輯,如下面的圖3所示。
圖3. MAX-IDE項目環境
運行和調試代碼
編譯項目要編譯項目文件,從菜單中選擇Debug Make或者Debug Build All,或者點擊工具條上這些命令的快捷按鈕,或者按下F7 (作用與Make相同)。MAXQ編譯器運行,如果沒有錯誤,消息窗口中將出現"Compiling...Build Successful."。構建過程中的任何錯誤將會出現在消息窗口中。
運行項目
項目被成功編譯后,可以采用以下方法之一,在調試器中執行該項目。
- 選擇Debug Run (F5)后,編譯后的項目代碼通過JTAG接口被裝入MAXQ微控制器并啟動運行。程序將持續運行,直到選擇了Debug Stop (Shift+F5)、點擊Pause按鈕或者程序執行到斷點為止。
- 選擇Debug Step Into (F11)后,編譯后的程序被載入,在源代碼的第一行暫停程序執行。
- 選擇Debug Run to Cursor (Control+F10)后,編譯后的程序被載入,并開始運行,直到程序運行到編輯窗口中光標所在的行,或者遇到斷點,先到者為準。如果光標不在源代碼行上,選擇該選項將導致錯誤。
- 將光標移到您希望建立斷點的行,選擇Debug Toggle Breakpoint。
- 將光標移到您希望建立斷點的行,點擊工具條上的禁行燈圖標。
- 在編輯窗口中,單擊您希望建立斷點的行號。
選擇Debug Stop,或者單擊工具條上的Stop圖標,將完全停止程序運行。但是,如果停止在第一行(Step Into)、光標行(Run to Cursor)或者設置了斷點的行,接下來還可以使用單步模式運行程序。也可以通過單擊Pause按鈕進入單步模式。在該模式下,以綠色箭頭標志當前運行所處的位置,可使用下列命令:
- Debug Step Into (F11), Debug Step Over (F10)和Debug Step Out(Shift+F10),在匯編調試模式下,這些命令的作用相同,即執行單個指令,將執行點轉至下一指令。
- Debug Run,從當前位置開始運行,直到下一個斷點,如上所述。
- Debug Run To Cursor,從當前位置開始運行,直到光標所在的行,如上所述。
顯示和編輯處理器寄存器
程序裝入并執行了至少一條指令后,就可以利用調試器來查看和編輯MAXQ微控制器的寄存器。選擇Window Show Registers 將顯示寄存器組。隨著調試器中代碼的執行,這些寄存器中的數值將隨之更新。雙擊可寫寄存器的數值區可以對其進行編輯,可以輸入十六進制、十進制或二進制的新值。
使用MAXQ2000評估板時應注意:如果裝配了LCD子板,不要手動編輯PO0, PD0, PO1, PD1, PO2, PD2, PO3或者PD3寄存器的值。當帶有LCD時,這些引腳上的靜態輸出會損壞LCD。
顯示和編輯處理器存儲器
程序裝入并至少執行一條指令后,就可以查看和編輯MAXQ微控制器的內部存儲器了。選擇Window Show Memory 將顯示內部存儲器。通過顯示窗口中的下拉列表,你可以選擇查看代碼、數據或者堆棧存儲器。代碼和堆棧區用16位寬顯示,數據區用8位寬顯示。數據和堆棧區的存儲器值可以編輯,雙擊某個存儲器位置并輸入新值即可。
使用MAX-IDE匯編器
MAX-IDE提供一個多道匯編器,用于開發MAXQ匯編語言應用程序。該匯編程序含有一個單道預處理器,能夠使用包含文件、符號等式、條件匯編和宏。匯編器和預處理器完全集成在MAX-IDE環境中。有關如何使用宏以及其他預處理偽指令的舉例,請參考'Macro'實例項目。
一般語法
MAXQ匯編器和預處理器均對大小寫不敏感。匯編語句遵循以下格式:
[label:] [opcode [parameter [, parameter]]] [;comment]如以下代碼:
main: move Acc, A[2] ; copy A[2] to active accumulator標志符(例如上面的'main'標號)可以含有字符[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)包含文件可以含有“include”偽指令、等同、宏和DB/DW數據聲明,但是不能含有匯編子程序。包含文件不必結束于END偽指令。
MAX-IDE為每種MAXQ微控制器提供標準包含文件,在其中定義了該類微控制器的外設寄存器組,以及應用ROM所提供函數的地址。這些包含文件可用于所有匯編語言項目;它們位于MAX-IDE主安裝目錄的Examples子目錄中。
常數
語句或等同說明中作為立即數的常數可以采用以下四種格式之一。
- 十進制(默認)―以非字符或'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
評論