摘要:本應用筆記介紹怎樣針對MAXQ1850高性能、RISC、安全微控制器開發(fā)、構建并調試應用程序。實例采用了MAXQ1850評估套件(EV kit)和Rowley Associates公司提供的CrossWorks C編譯器。
詳細電路圖(PDF, 776KB)
圖1. MAXQ1850評估電路板
MAXQ1850評估電路板和JTAG電路板都有很多跳線需要進行配置。如果需要了解跳線及其功能的詳細信息,請參考各自的數(shù)據手冊。對于本應用筆記,請按照以下要求來配置跳線:
注意,在老的MAXQ1850評估電路板設計中,MAXQ1850微控制器可能采用了插槽。如果是這樣,把MAXQ1850插入到插槽中,其無鉛指示符“+”朝向插槽中一個角(右下)上標出的點。
在您的PC和JTAG電路板之間連接9針串行電纜(不要將其連接至MAXQ1850套件電路板)。最后,將5V電源連接至JTAG電路板的電源連接器(J2)。它也為評估套件電路板提供電源供電。
我們使用的工具包是Rowley Associates公司提供的CrossStudio。編寫本文檔時,工具包是面向MAXQ30的CrossWorks,版本2.0.0.2008063000.2293。這是本文檔中用于產生截屏的版本。為確定是否是最新版本,請訪問Rowley & Associates網站,或者發(fā)送電子郵件至 micro.support@maxim-ic.com (English only)。
在建立新方案時,點擊File New New Project。在New Project彈出框中,填寫底部的Name和Location框,從Project Templates窗口中選擇Executable類,和A C可執(zhí)行文件(圖2)。我們將調用工程WalkLED_demo,將其放到目錄C:workmaxqMAXQ1850WalkLED_demo中。
圖2. 新工程
單擊Next繼續(xù),您將看到Project Properties彈出框(圖3)。Target處理器可能是MAXQ1103。雙擊處理器序列號,選擇MAXQ1850處理器。這一頁面的所有其他部分以及后續(xù)頁面都選擇默認,因此,選擇MAXQ1850后,點擊Finish,建立工程。如果需要,您可以單擊Next,選擇其他的工程選項。
圖3. 選擇MAXQ1850處理器
在建立工程時,Project Explorer窗口(圖4)會出現(xiàn)一個新工程,通常位于應用程序窗口的右上。打開它,您將看到兩個文件夾,Source Files和System Files。打開Source Files,將看到
圖4. Project Explorer窗口
現(xiàn)在,輸入附錄A的應用代碼,或者從上面提到的來源中,將代碼剪切并粘貼到
當應用程序執(zhí)行時,您會看到LED DS1、DS2和DS3 (位于套件電路板原型區(qū)左側)按順序不斷閃爍。而在應用程序運行前,必須首先“構建”它。選擇Build Build WalkLED_demo,或者按下F7。如果一切都正確構建,您將在Output窗口看到消息“Build complete”,它旁邊有一個對勾(圖5)。如果有錯,請確定您輸入的代碼是否正確。
圖5. 工程構建后的輸出
現(xiàn)在可以運行應用程序。對此,單擊Debug Build and Debug,程序將啟動,不斷運行。單擊Pause按鈕(Break Execution,如代碼窗口上面和左側所示),程序在當前位置暫停,等待用戶的下一動作。如果沒有Build和Debug選項,找到“targets”窗口;單擊Maxim Serial JTAG Adapter;然后,單擊Connect按鈕(窗口左上角)。這樣,通過JTAG電路板連接工具包和評估套件,使能調試功能。工具包調試功能被使能后,單擊Step Over按鈕就可以開始調試過程,如圖6所示。
圖6. Step Over按鈕
按下Step Over按鈕,程序啟動后,CrossStudio通過JTAG電路把應用程序下載到MAXQ1850中,Output窗口顯示狀態(tài)消息。應用程序開始運行,然后,在代碼第一行停止(左側空白區(qū)顯示黃色箭頭)。從這一點運行應用程序時,選擇Debug Go (或者單擊Play按鈕)?,F(xiàn)在,請確定MAXQ1850電路板上的LED正在閃爍。您可能希望能夠在一定程度上修改應用程序;按照相反的順序來閃爍LED,或者改變點亮時間,更快或者更慢的閃爍。
考慮WalkLED_demo應用程序。作為一次試驗,在
選擇Pause按鈕(或者選擇Debug Break),程序在當前代碼行暫停執(zhí)行,左側空白區(qū)出現(xiàn)一個黃色箭頭。由于程序大部分時間都花在
圖7. 在
觀察右側的Locals窗口(如果看不到該窗口,單擊Debug Debug Windows Locals)。該窗口將顯示“i”變量的當前值?,F(xiàn)在,按下Step Over按鈕。讓程序運行一秒,然后,再次按下Pause按鈕。您應該看到“i”值增加了。
要退出函數(shù),應該一直按著Step Over按鈕,直到循環(huán)結束,但這會浪費很長時間。只要按下Step Out按鈕(在Step Into按鈕的右邊,如圖6所示),程序一直執(zhí)行,直到退出
通過設置斷點,也可以獲得相似的結果。函數(shù)
圖8. 加入斷點
現(xiàn)在,我們了解一下更多的調試功能。按下Step Over按鈕幾次。每按下一次,C源代碼執(zhí)行一行。您將看到,控制LED的一行代碼每執(zhí)行一次,LED閃爍一下。當暫停在
圖9. Step Into按鈕
在運行時,還可以改變變量(和寄存器)。點擊GO,然后,點擊Pause,程序應再次停止在
以及您感興趣的其他調試功能:
圖10. 在
圖11. Properties窗口
引言
Maxim Integrated Products的MAXQ1850是高性能、安全、小封裝、32位RISC微控制器,設計用于電子商務、銀行和數(shù)據安全應用。微控制器執(zhí)行16位指令,有一個32位數(shù)據通道。MAXQ1850在一個時鐘周期中執(zhí)行完成大部分指令,是性能非常高的RISC機。MAXQ1850還具有很多重要的安全特性,包括:- 支持DES、3DES、AES、SHA-1、SHA-224、SHA-256、RSA、DSA和ECDSA的密碼加速器
- 真正的硬件隨機數(shù)發(fā)生器
- 8KB低泄漏電池備電NVSRAM
- 4個自毀輸入
- 防篡改探測,可快速擦除密鑰/數(shù)據。
- 能夠探測超范圍條件的環(huán)境傳感器(例如,溫度、電壓)
設置MAXQ1850評估套件
MAXQ1850評估套件電路板如圖1所示。下面列出的硬件都包含在評估套件中,用于實現(xiàn)本應用筆記:詳細電路圖(PDF, 776KB)
圖1. MAXQ1850評估電路板
MAXQ1850評估電路板和JTAG電路板都有很多跳線需要進行配置。如果需要了解跳線及其功能的詳細信息,請參考各自的數(shù)據手冊。對于本應用筆記,請按照以下要求來配置跳線:
- 在MAXQ1850評估套件電路板上,短接以下跳線:JU3 (靠近Program開關);JU4 (靠近Reset開關);JU30 (靠近處理器左下部);JU104 (靠近LCD模塊的左下部)。連接跳線JU5 (靠近電池)以及JU20 (靠近電源輸入)的引腳1 (PCB上的方形焊盤)和引腳2。連接跳線JU21 (靠近處理器的右上部)的引腳2和引腳3。所有其他跳線應打開。
- 在JTAG電路板上,短接JH3。這從JTAG電路板為評估套件電路板提供5V電源。對于這一配置,跳線JH1和JH2為“無關項”。
注意,在老的MAXQ1850評估電路板設計中,MAXQ1850微控制器可能采用了插槽。如果是這樣,把MAXQ1850插入到插槽中,其無鉛指示符“+”朝向插槽中一個角(右下)上標出的點。
在您的PC和JTAG電路板之間連接9針串行電纜(不要將其連接至MAXQ1850套件電路板)。最后,將5V電源連接至JTAG電路板的電源連接器(J2)。它也為評估套件電路板提供電源供電。
采用CrossWorks編譯器進行設計:WalkLED
在開始使用MAXQ1850評估套件時,我們開發(fā)一個簡單的應用程序,使電路板上的三個LED閃爍。LED以固定、重復的順序閃爍,看起來象是在電路板上“走”。因此,該工程被命名為WalkLED。該程序的代碼列在附錄A中。代碼非常短,您甚至能夠在相對很短的時間內手動輸入這些代碼。您還可以從評估套件的CD中獲得源代碼文件,也可以從Maxim網站下載獲得。我們使用的工具包是Rowley Associates公司提供的CrossStudio。編寫本文檔時,工具包是面向MAXQ30的CrossWorks,版本2.0.0.2008063000.2293。這是本文檔中用于產生截屏的版本。為確定是否是最新版本,請訪問Rowley & Associates網站,或者發(fā)送電子郵件至 micro.support@maxim-ic.com (English only)。
在建立新方案時,點擊File New New Project。在New Project彈出框中,填寫底部的Name和Location框,從Project Templates窗口中選擇Executable類,和A C可執(zhí)行文件(圖2)。我們將調用工程WalkLED_demo,將其放到目錄C:workmaxqMAXQ1850WalkLED_demo中。
圖2. 新工程
單擊Next繼續(xù),您將看到Project Properties彈出框(圖3)。Target處理器可能是MAXQ1103。雙擊處理器序列號,選擇MAXQ1850處理器。這一頁面的所有其他部分以及后續(xù)頁面都選擇默認,因此,選擇MAXQ1850后,點擊Finish,建立工程。如果需要,您可以單擊Next,選擇其他的工程選項。
圖3. 選擇MAXQ1850處理器
在建立工程時,Project Explorer窗口(圖4)會出現(xiàn)一個新工程,通常位于應用程序窗口的右上。打開它,您將看到兩個文件夾,Source Files和System Files。打開Source Files,將看到
main.c
,這是您的應用程序源代碼。雙擊它,打開。圖4. Project Explorer窗口
現(xiàn)在,輸入附錄A的應用代碼,或者從上面提到的來源中,將代碼剪切并粘貼到
main.c
文件中,替換所有當前內容。當應用程序執(zhí)行時,您會看到LED DS1、DS2和DS3 (位于套件電路板原型區(qū)左側)按順序不斷閃爍。而在應用程序運行前,必須首先“構建”它。選擇Build Build WalkLED_demo,或者按下F7。如果一切都正確構建,您將在Output窗口看到消息“Build complete”,它旁邊有一個對勾(圖5)。如果有錯,請確定您輸入的代碼是否正確。
圖5. 工程構建后的輸出
現(xiàn)在可以運行應用程序。對此,單擊Debug Build and Debug,程序將啟動,不斷運行。單擊Pause按鈕(Break Execution,如代碼窗口上面和左側所示),程序在當前位置暫停,等待用戶的下一動作。如果沒有Build和Debug選項,找到“targets”窗口;單擊Maxim Serial JTAG Adapter;然后,單擊Connect按鈕(窗口左上角)。這樣,通過JTAG電路板連接工具包和評估套件,使能調試功能。工具包調試功能被使能后,單擊Step Over按鈕就可以開始調試過程,如圖6所示。
圖6. Step Over按鈕
按下Step Over按鈕,程序啟動后,CrossStudio通過JTAG電路把應用程序下載到MAXQ1850中,Output窗口顯示狀態(tài)消息。應用程序開始運行,然后,在代碼第一行停止(左側空白區(qū)顯示黃色箭頭)。從這一點運行應用程序時,選擇Debug Go (或者單擊Play按鈕)?,F(xiàn)在,請確定MAXQ1850電路板上的LED正在閃爍。您可能希望能夠在一定程度上修改應用程序;按照相反的順序來閃爍LED,或者改變點亮時間,更快或者更慢的閃爍。
使用CrossStudio調試應用程序
現(xiàn)在,讓我們了解一下MAXQ1850和CrossStudio工具的調試功能。MAXQ1850有內置JTAG引擎,支持在實際芯片上進行調試,從而不需要昂貴的仿真器或者有可能出錯的模擬器。注意,MAXQ1850還提供安全鎖定機制,在元件鎖定時,防止JTAG工作。這樣,當MAXQ1850器件用在敏感應用中時,保證了JTAG調試引擎不會帶來安全威脅。考慮WalkLED_demo應用程序。作為一次試驗,在
main.c
函數(shù)中,把Delay
函數(shù)的延時計數(shù)從200000改為2000。for(i=0;i < 2000; i++) ;現(xiàn)在,選擇Build Build and Debug,構建并運行應用程序。工具包會重新構建工程,裝入新程序,開始運行。注意,LED為始終點亮狀態(tài),而非閃爍狀態(tài)。
選擇Pause按鈕(或者選擇Debug Break),程序在當前代碼行暫停執(zhí)行,左側空白區(qū)出現(xiàn)一個黃色箭頭。由于程序大部分時間都花在
Delay
函數(shù)的“for”循環(huán)上,因此代碼很有可能停在這里(參見圖7)。圖7. 在
Delay
函數(shù)中,代碼停止運行觀察右側的Locals窗口(如果看不到該窗口,單擊Debug Debug Windows Locals)。該窗口將顯示“i”變量的當前值?,F(xiàn)在,按下Step Over按鈕。讓程序運行一秒,然后,再次按下Pause按鈕。您應該看到“i”值增加了。
要退出函數(shù),應該一直按著Step Over按鈕,直到循環(huán)結束,但這會浪費很長時間。只要按下Step Out按鈕(在Step Into按鈕的右邊,如圖6所示),程序一直執(zhí)行,直到退出
Delay
函數(shù),返回到其調用函數(shù)main.c
。通過設置斷點,也可以獲得相似的結果。函數(shù)
main.c
中,在調用Delay
函數(shù)的任一行上設置斷點時,單擊該代碼行左側的小三角。它將變?yōu)榧t圈(圖8)。現(xiàn)在,再次運行應用程序(Debug Go,或者Play按鈕)。應用程序會運行到這一點,然后暫停。圖8. 加入斷點
現(xiàn)在,我們了解一下更多的調試功能。按下Step Over按鈕幾次。每按下一次,C源代碼執(zhí)行一行。您將看到,控制LED的一行代碼每執(zhí)行一次,LED閃爍一下。當暫停在
Delay()
一行時,按下Step Into按鈕(圖9)。這會進入該函數(shù),暫停在該函數(shù)的第一行。正如前面所演示的,按下Step Out按鈕,可以退出Delay()
函數(shù)。圖9. Step Into按鈕
在運行時,還可以改變變量(和寄存器)。點擊GO,然后,點擊Pause,程序應再次停止在
Delay()
函數(shù)的中間部分。注意“i”值?,F(xiàn)在,把“i”設置為1998 (單擊“i”顯示的數(shù)值,高亮后輸入1998)。單擊Step Into按鈕,由于達到了“i”最終值,因此,您會看到循環(huán)結束。以及您感興趣的其他調試功能:
- Debug Disassembly將同時顯示C代碼和生成的匯編代碼。這樣,用戶可以進入匯編代碼,而不是C代碼,執(zhí)行時,同時顯示C代碼。
- Debug Debug Windows Call Stack將顯示應用程序到達當前位置時所調用的函數(shù)。如果在Delay()函數(shù)中暫停執(zhí)行,其顯示如圖10所示。
- 使用Debug Stop停止調試,觀察右側的Targets窗口。確定Maxim Serial JTAG Adapter Properties以粗體字顯示,觀察Properties Window下部的信息。如果沒有顯示Maxim Serial JTAG Adapter Properties,從下拉菜單中選擇它。您將看到屬性列表及其設置,如圖11所示。使用滾動條看到所有信息。Connection標題下的一個屬性是Port Name。如果您使用串口,而不是默認的COM1,那么,可以在這里改變這一選項。
圖10. 在
Delay()
函數(shù)中運行時調用堆棧圖11. Properties窗口
更多信息
軟件庫和參考設計目前正在由Maxim工程師開發(fā)。如果您需要了解庫和工具的最新信息,或者對本應用筆記還有其他問題,請聯(lián)系 microcontroller.support@maxim-ic.com (English only)。附錄A. WalkLED_main.c源代碼
#include#include #include "WalkLED.h" void main(void) { PD1 = 0x62 ; // PD1 = In Out Out In In In Out In PO1 = PO1 & PO1_5_0 ; // U10 Din (P1.5) = 0 PO1 = PO1 | PO1_1_1 ; // U10 CS (P1.1) = 1 PO1 = PO1 & PO1_6_0 ; // U10 SCLK (P1.6) = 0 while (1) { wr_SPI(0x0700) ; // U10 P7 (nLED0) = 0 Delay() ; wr_SPI(0x0800) ; // U10 P8 (nLED1) = 0 Delay() ; wr_SPI(0x0900) ; // U10 P9 (nLED2) = 0 Delay() ; wr_SPI(0x0701) ; // U10 P7 (nLED0) = 1 Delay() ; wr_SPI(0x0801) ; // U10 P8 (nLED1) = 1 Delay() ; wr_SPI(0x0901) ; // U10 P9 (nLED2) = 1 Delay() ; } } void wr_SPI(short SPI_Dat) // Write data to SPI? device U10 { int i; PO1 = PO1 & PO1_1_0 ; // U10 CS (P1.1) = 0 for(i=0;i<16;i++) { // Set Din for each data bit if (SPI_Dat < 0) PO1 = PO1 | PO1_5_1 ; // Din = 1 else PO1 = PO1 & PO1_5_0 ; // Din = 0 PO1 = PO1 | PO1_6_1 ; // SCLK = 1 PO1 = PO1 & PO1_6_0 ; // SCLK = 0 PO1 = PO1 & PO1_5_0 ; // Din = 0 SPI_Dat = SPI_Dat << 1 ; // Shift in next bit } PO1 = PO1 | 0x02 ; // CS = 1 } void Delay(void) { // Delay to make LEDs visible int i = 0 ; for(i=0;i < 200000; i++) ; }
SPI是Motorola, Inc.的商標。
評論
查看更多