《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 采用MAXQ1850評估套件(EV kit)和面向MAXQ30的CrossWorks編譯器進行設計

采用MAXQ1850評估套件(EV kit)和面向MAXQ30的CrossWorks編譯器進行設計

2009-01-14
作者:美信公司

引言

??? Maxim Integrated Products的MAXQ1850是高性能、安全,、小封裝,、32位RISC微控制器,,設計用于電子商務、銀行和數(shù)據(jù)安全應用,。微控制器執(zhí)行16位指令,,有一個32位數(shù)據(jù)通道。MAXQ1850在一個時鐘周期中執(zhí)行完成大部分指令,,是性能非常高的RISC機,。MAXQ1850還具有很多重要的安全特性,包括:
  • 支持DES,、3DES,、AES、SHA-1,、SHA-224,、SHA-256、RSA,、DSA和ECDSA的密碼加速器
  • 真正的硬件隨機數(shù)發(fā)生器
  • 8KB低泄漏電池備電NVSRAM
  • 4個自毀輸入
  • 防篡改探測,,可快速擦除密鑰/數(shù)據(jù)。
  • 能夠探測超范圍條件的環(huán)境傳感器(例如,,溫度,、電壓)
??? MAXQ1850評估套件是安全應用原型開發(fā)的理想平臺。套件提供一個RS-232串口,,兩個智能卡插槽(一個全尺寸,,一個SIM卡),一個USB連接器,,一個LCD屏,,一個16按鍵鍵盤以及原型區(qū)。

設置MAXQ1850評估套件

??? MAXQ1850評估套件電路板如圖1所示,。下面列出的硬件都包含在評估套件中,,用于實現(xiàn)本應用筆記:
  1. MAXQ1850評估套件電路板
  2. JTAG電路板
  3. JTAG電纜(連接MAXQ1850評估套件電路板和JTAG電路板)
  4. 9針串行電纜
  5. 穩(wěn)壓電源(5V、±5%,、300mA,、中心正極)

圖1. MAXQ1850評估電路板


詳細電路圖
(PDF, 776KB)
圖1. MAXQ1850評估電路板



??? MAXQ1850評估電路板和JTAG電路板都有很多跳線需要進行配置。如果需要了解跳線及其功能的詳細信息,,請參考各自的數(shù)據(jù)手冊,。對于本應用筆記,請按照以下要求來配置跳線:

  • 在MAXQ1850評估套件電路板上,,短接以下跳線:JU3 (靠近Program開關),;JU4 (靠近Reset開關);JU30 (靠近處理器左下部);JU104 (靠近LCD模塊的左下部),。連接跳線JU5 (靠近電池)以及JU20 (靠近電源輸入)的引腳1 (PCB上的方形焊盤)和引腳2,。連接跳線JU21 (靠近處理器的右上部)的引腳2和引腳3。所有其他跳線應打開,。
  • 在JTAG電路板上,,短接JH3。這從JTAG電路板為評估套件電路板提供5V電源,。對于這一配置,,跳線JH1和JH2為“無關項”。
??? 在JTAG電路板和MAXQ1850套件電路板之間連接JTAG電纜,。在JTAG電路板上,,電纜上的紅條應連接至標有引腳1和引腳2的連接器一側。在MAXQ1850評估套件電路板上,,電纜上的紅條應連接至標有引腳1和引腳2的連接器一側(可以通過PCB背面的方形焊盤來識別引腳1),。

??? 注意,在老的MAXQ1850評估電路板設計中,,MAXQ1850微控制器可能采用了插槽,。如果是這樣,把MAXQ1850插入到插槽中,,其無鉛指示符“+”朝向插槽中一個角(右下)上標出的點,。

??? 在您的PC和JTAG電路板之間連接9針串行電纜(不要將其連接至MAXQ1850套件電路板)。最后,,將5V電源連接至JTAG電路板的電源連接器(J2),。它也為評估套件電路板提供電源供電。

采用CrossWorks編譯器進行設計:WalkLED

??? 在開始使用MAXQ1850評估套件時,,我們開發(fā)一個簡單的應用程序,,使電路板上的三個LED閃爍。LED以固定,、重復的順序閃爍,,看起來象是在電路板上“走”。因此,,該工程被命名為WalkLED,。該程序的代碼列在附錄A中。代碼非常短,,您甚至能夠在相對很短的時間內(nèi)手動輸入這些代碼,。您還可以從評估套件的CD中獲得源代碼文件,也可以從Maxim網(wǎng)站下載獲得,。

??? 我們使用的工具包
Rowley Associates公司提供的CrossStudio,。編寫本文檔時,,工具包是面向MAXQ30的CrossWorks,版本2.0.0.2008063000.2293,。這是本文檔中用于產(chǎn)生截屏的版本。為確定是否是最新版本,,請訪問Rowley & Associates網(wǎng)站,,或者發(fā)送電子郵件至 [email protected] (English only)。

??? 在建立新方案時,,點擊File New New Project,。在New Project彈出框中,填寫底部的Name和Location框,,從Project Templates窗口中選擇Executable類,,和A C可執(zhí)行文件(圖2)。我們將調(diào)用工程WalkLED_demo,,將其放到目錄C:workmaxqMAXQ1850WalkLED_demo中,。

圖2. 新工程


圖2. 新工程

??? 單擊Next繼續(xù),您將看到Project Properties彈出框(圖3),。Target處理器可能是MAXQ1103,。雙擊處理器序列號,選擇MAXQ1850處理器,。這一頁面的所有其他部分以及后續(xù)頁面都選擇默認,,因此,選擇MAXQ1850后,,點擊Finish,,建立工程。如果需要,,您可以單擊Next,,選擇其他的工程選項。

圖3. 選擇MAXQ1850處理器


圖3. 選擇MAXQ1850處理器



??? 在建立工程時,,Project Explorer窗口(圖4)會出現(xiàn)一個新工程,,通常位于應用程序窗口的右上。打開它,,您將看到兩個文件夾,,Source Files和System Files。打開Source Files,,將看到main.c,,這是您的應用程序源代碼。雙擊它,,打開,。

圖4. Project Explorer窗口


圖4. Project Explorer窗口



??? 現(xiàn)在,,輸入附錄A的應用代碼,或者從上面提到的來源中,,將代碼剪切并粘貼到main.c文件中,,替換所有當前內(nèi)容。

??? 當應用程序執(zhí)行時,,您會看到LED DS1,、DS2和DS3 (位于套件電路板原型區(qū)左側)按順序不斷閃爍。而在應用程序運行前,,必須首先“構建”它,。選擇Build Build WalkLED_demo,或者按下F7,。如果一切都正確構建,,您將在Output窗口看到消息“Build complete”,它旁邊有一個對勾(圖5),。如果有錯,,請確定您輸入的代碼是否正確。

圖5. 工程構建后的輸出


圖5. 工程構建后的輸出



??? 現(xiàn)在可以運行應用程序,。對此,,單擊Debug Build and Debug,程序?qū)?,不斷運行,。單擊Pause按鈕(Break Execution,如代碼窗口上面和左側所示),,程序在當前位置暫停,,等待用戶的下一動作。如果沒有Build和Debug選項,,找到“targets”窗口,;單擊Maxim Serial JTAG Adapter;然后,,單擊Connect按鈕(窗口左上角),。這樣,通過JTAG電路板連接工具包和評估套件,,使能調(diào)試功能,。工具包調(diào)試功能被使能后,單擊Step Over按鈕就可以開始調(diào)試過程,,如圖6所示,。

圖6. Step Over按鈕


圖6. Step Over按鈕



??? 按下Step Over按鈕,程序啟動后,,CrossStudio通過JTAG電路把應用程序下載到MAXQ1850中,,Output窗口顯示狀態(tài)消息,。應用程序開始運行,然后,,在代碼第一行停止(左側空白區(qū)顯示黃色箭頭),。從這一點運行應用程序時,選擇Debug Go (或者單擊Play按鈕)?,F(xiàn)在,,請確定MAXQ1850電路板上的LED正在閃爍。您可能希望能夠在一定程度上修改應用程序,;按照相反的順序來閃爍LED,,或者改變點亮時間,,更快或者更慢的閃爍,。

使用CrossStudio調(diào)試應用程序

??? 現(xiàn)在,讓我們了解一下MAXQ1850和CrossStudio工具的調(diào)試功能,。MAXQ1850有內(nèi)置JTAG引擎,,支持在實際芯片上進行調(diào)試,從而不需要昂貴的仿真器或者有可能出錯的模擬器,。注意,,MAXQ1850還提供安全鎖定機制,在元件鎖定時,,防止JTAG工作,。這樣,當MAXQ1850器件用在敏感應用中時,,保證了JTAG調(diào)試引擎不會帶來安全威脅,。

??? 考慮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ù)中,,代碼停止運行


圖7. 在Delay函數(shù)中,代碼停止運行



??? 觀察右側的Locals窗口(如果看不到該窗口,,單擊Debug Debug Windows Locals),。該窗口將顯示“i”變量的當前值。現(xiàn)在,,按下Step Over按鈕,。讓程序運行一秒,然后,,再次按下Pause按鈕,。您應該看到“i”值增加了。

??? 要退出函數(shù),,應該一直按著Step Over按鈕,,直到循環(huán)結束,但這會浪費很長時間,。只要按下Step Out按鈕(在Step Into按鈕的右邊,,如圖6所示),程序一直執(zhí)行,,直到退出Delay函數(shù),,返回到其調(diào)用函數(shù)main.c

??? 通過設置斷點,,也可以獲得相似的結果,。函數(shù)main.c中,在調(diào)用Delay函數(shù)的任一行上設置斷點時,,單擊該代碼行左側的小三角,。它將變?yōu)榧t圈(圖8)。現(xiàn)在,,再次運行應用程序(Debug Go,,或者Play按鈕)。應用程序會運行到這一點,,然后暫停,。

圖8. 加入斷點


圖8. 加入斷點



??? 現(xiàn)在,我們了解一下更多的調(diào)試功能,。按下Step Over按鈕幾次,。每按下一次,C源代碼執(zhí)行一行,。您將看到,,控制LED的一行代碼每執(zhí)行一次,,LED閃爍一下。當暫停在Delay()一行時,,按下Step Into按鈕(圖9),。這會進入該函數(shù),暫停在該函數(shù)的第一行,。正如前面所演示的,,按下Step Out按鈕,可以退出Delay()函數(shù),。

圖9. Step Into按鈕


圖9. Step Into按鈕



??? 在運行時,,還可以改變變量(和寄存器)。點擊GO,,然后,,點擊Pause,程序應再次停止在Delay()函數(shù)的中間部分,。注意“i”值?,F(xiàn)在,,把“i”設置為1998 (單擊“i”顯示的數(shù)值,,高亮后輸入1998)。單擊Step Into按鈕,,由于達到了“i”最終值,,因此,您會看到循環(huán)結束,。

??? 以及您感興趣的其他調(diào)試功能:

  • Debug Disassembly將同時顯示C代碼和生成的匯編代碼,。這樣,用戶可以進入?yún)R編代碼,,而不是C代碼,,執(zhí)行時,同時顯示C代碼,。
  • Debug Debug Windows Call Stack將顯示應用程序到達當前位置時所調(diào)用的函數(shù),。如果在Delay()函數(shù)中暫停執(zhí)行,其顯示如圖10所示,。
  • 使用Debug Stop停止調(diào)試,,觀察右側的Targets窗口。確定Maxim Serial JTAG Adapter Properties以粗體字顯示,,觀察Properties Window下部的信息,。如果沒有顯示Maxim Serial JTAG Adapter Properties,從下拉菜單中選擇它,。您將看到屬性列表及其設置,,如圖11所示,。使用滾動條看到所有信息。Connection標題下的一個屬性是Port Name,。如果您使用串口,,而不是默認的COM1,那么,,可以在這里改變這一選項,。

圖10. 在Delay()函數(shù)中運行時調(diào)用堆棧


圖10. 在Delay()函數(shù)中運行時調(diào)用堆棧

圖11. Properties窗口
圖11. Properties窗口

更多信息

??? 軟件庫和參考設計目前正在由Maxim工程師開發(fā)。如果您需要了解庫和工具的最新信息,,或者對本應用筆記還有其他問題,,請聯(lián)系 [email protected] (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.的商標,。

?

?

?

?


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者,。如涉及作品內(nèi)容、版權和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]