《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 采用MAXQ1103評(píng)估套件和面向MAXQ30的CrossWorks編譯器進(jìn)行設(shè)計(jì)

采用MAXQ1103評(píng)估套件和面向MAXQ30的CrossWorks編譯器進(jìn)行設(shè)計(jì)

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

?

引言

??? MAXQ1103是Maxim集成產(chǎn)品公司的新一代安全微控制器,,設(shè)計(jì)用于金融終端,。它運(yùn)行16位指令,提供一個(gè)32位數(shù)據(jù)通道,。微控制器在一個(gè)機(jī)器周期中執(zhí)行完成指令,,是性能非常高的RISC機(jī),。MAXQ1103還具有很多重要的安全特性,,包括:
  • 支持DES、3DES,、SHA-1,、SHA-224,、SHA-256,、RSA、DSA和ECDSA的密碼加速器
  • 真正的硬件隨機(jī)數(shù)發(fā)生器
  • 1KB低泄漏電池備電NVSRAM
  • 與外部電路連接的7個(gè)防篡改探測輸入
  • 環(huán)境傳感器,,例如溫度和電壓超范圍探測器
??? MAXQ1103評(píng)估(EV)套件是安全應(yīng)用原型開發(fā)的理想平臺(tái),。套件提供兩個(gè)串口,兩個(gè)智能卡插槽(一個(gè)全尺寸,,一個(gè)SIM卡),,一個(gè)USB連接器,一個(gè)LCD屏,,一個(gè)16按鍵鍵盤以及原型區(qū),。

設(shè)置MAXQ1103評(píng)估套件

??? MAXQ1103評(píng)估套件圖1所示。需要采用下面列出的硬件元件來完成本應(yīng)用筆記所討論的工作:
  1. MAXQ1103評(píng)估套件電路板
  2. JTAG電路板
  3. JTAG電纜(連接MAXQ1103評(píng)估套件電路板和JTAG電路板)
  4. 9針串行電纜
  5. 穩(wěn)壓電源(5V,、±5%,、300mA、中心正極)

圖1. MAXQ1103評(píng)估套件


詳細(xì)電路圖
(PDF, 14.4MB)
圖1. MAXQ1103評(píng)估套件



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

  • 在MAXQ1103評(píng)估套件電路板上,,短接跳線JU1,連接JU5上面的兩個(gè)引腳(最靠近JU5標(biāo)簽的兩個(gè)引腳)?,F(xiàn)在,,所有其他跳線應(yīng)打開。如果,,JU6到JU18的所有跳線都短接,,那就OK。這是智能卡通信需要的配置,,本應(yīng)用筆記不涉及,。
  • 在JTAG電路板,短接JH1和JH2,,打開JH3,。
??? 在JTAG電路板和MAXQ1103套件電路板之間連接JTAG電纜。在JTAG電路板上,,紅色電纜應(yīng)連接至標(biāo)有引腳1和引腳2的一側(cè),,以及MAXQ1103套件電路板的TCK-GND一側(cè),。

??? 注意,在早期的MAXQ1103評(píng)估套件中,,MAXQ1103 IC可能采用了插槽,。如果是這樣,把MAXQ1103插入到IC標(biāo)記向下的插槽中(無鉛指示符“+”應(yīng)在右上側(cè)),。

??? 在您的PC和JTAG電路板之間連接9針串行電纜,。不要將其連接至MAXQ1103評(píng)估套件電路板。將電源連接至這兩塊電路板,。

采用CrossWorks編譯器進(jìn)行設(shè)計(jì):Blinky

??? 我們不以“Hello World”開始,,而是構(gòu)建一個(gè)簡單的應(yīng)用程序,該應(yīng)用程序使MAXQ103套件電路板上的一個(gè)LED閃爍,。

??? 我們使用的工具包是
Rowley Associates公司提供的CrossStudio?,F(xiàn)在,工具包當(dāng)前版本是面向MAXQ30的CrossWorks (2.0.0.2008063000.2293版),,可用于產(chǎn)生本文檔的截屏顯示,。為確定是否是最新版本,請?jiān)诰€訪問Rowley Associates網(wǎng)站,,或者通過Maxim支持中心,,與我們?nèi)〉寐?lián)系。

??? 在建立新方案時(shí),,點(diǎn)擊File New New Project,。在New Project彈出框中,填寫底部的Name和Location框,,從Project Templates窗口中選擇“A C executable” (圖2),。我們調(diào)用工程BlinkyDemo,將其放到目錄C:\work\maxq\maxq1103\blinky中,。

圖2. 選擇“A C executable”,,填寫工程名稱和位置


圖2. 選擇“A C executable”,填寫工程名稱和位置



??? 單擊Next繼續(xù),,您將看到Project Properties彈出框,。選擇默認(rèn)值即可,單擊Finish,,建立工程(您可以單擊Next,,選擇其他的選項(xiàng);本工程在這些選項(xiàng)中使用所有默認(rèn)值),。

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

圖3. Project Explorer窗口


圖3. Project Explorer窗口

??? 自動(dòng)生成的源代碼非常簡單,我們只需要加入幾行就可以使我們的閃爍應(yīng)用程序工作,。復(fù)制以下應(yīng)用程序代碼(替換main.c文件中當(dāng)前的所有內(nèi)容),。

#include 
#include 

void delayms(unsigned long count)
{
  unsigned int x;
  while (count > 0)
  {
    for (x=0;x<2500;x++)
    {
      __no_operation();
    }
    count--;
  }
}

void main(void)
{
  // set port 0 to all output
  PD0 = 0xff;
  while (1)
  {
    // toggle bits 0, 1, 7
    PO0 = PO0 ^ 0x83;
    delayms(500);
  }
}

??? 當(dāng)我們運(yùn)行這一應(yīng)用程序時(shí),,會(huì)看到LED DS1,、DS2和DS3 (位于套件電路板MAXQ1103的左下側(cè))閃爍,接通0.5s,,關(guān)斷0.5s,。注意,“delayms”函數(shù)并不恰好是一毫秒,,而是非常接近,,達(dá)到了blinky應(yīng)用程序的目的。

??? 在運(yùn)行演示實(shí)例前,,必須首先構(gòu)建它,。選擇Build Build BlinkyDemo?;蛘甙聪翭7來構(gòu)建,。如果一切都正確構(gòu)建,您將在Output窗口看到消息“Build complete”,,它旁邊有一個(gè)對(duì)勾(圖4),。如果有錯(cuò),請確定您輸入的代碼是否正確,。

圖4. 工程構(gòu)建后的輸出


圖4. 工程構(gòu)建后的輸出



??? 運(yùn)行應(yīng)用程序時(shí),,單擊Debug Step Over。也可以按下F10,,或者單擊帶有向下箭頭工具條中的圖標(biāo)(圖5),。

圖5. Step Over按鈕


圖5. Step Over按鈕



??? CrossStudio通過JTAG電路板把應(yīng)用程序下載到MAXQ1103中,Output窗口顯示狀態(tài)消息,。應(yīng)用程序?qū)㈤_始運(yùn)行,,然后,在代碼第一行停止(左側(cè)空白區(qū)顯示黃色箭頭),。運(yùn)行應(yīng)用程序時(shí),,單擊“Play”按鈕(或者選擇Debug Go)?,F(xiàn)在,請確定MAXQ1103電路板上的LED正在閃爍,。您可能希望能夠在一定程度上修改應(yīng)用程序,。使LED按順序閃爍,或者改變點(diǎn)亮?xí)r間,,更快或者更慢的閃爍,。

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

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

??? 現(xiàn)在,我們返回到最初的Blinky應(yīng)用程序,,在主函數(shù)中,,把延時(shí)從500改到5:
    delayms(5);

???

??? 現(xiàn)在,構(gòu)建并運(yùn)行應(yīng)用程序,。注意,,LED持續(xù)點(diǎn)亮,而不是不斷閃爍,。這就是簡單演示代碼第一次編寫并運(yùn)行時(shí)的情況,。

??? 這樣會(huì)帶來一個(gè)基本問題:“燈的確是連續(xù)點(diǎn)亮,還是閃爍非???,而無法察覺呢”?如果燈是連續(xù)點(diǎn)亮,那就有必要檢查原理圖和引腳分配,,確定一切OK,。如果LED只是很快地閃爍(太快,以至于看不清間隔),,那就只需要調(diào)整時(shí)間,,這是可能需要做的工作。為回答這一問題,我們現(xiàn)在使用CrossStudio的調(diào)試工具,。

??? 按下Pause按鈕(或者選擇Debug Break),。在代碼停止的地方,出現(xiàn)一個(gè)黃色箭頭,。代碼很有可能停止在delayms()函數(shù)的‘for’循環(huán)中(參見圖6),。

圖6. 在delayms()函數(shù)中,代碼停止運(yùn)行


圖6. 在delayms()函數(shù)中,,代碼停止運(yùn)行



??? 觀察右側(cè)的Locals窗口(如果看不到該窗口,,單擊Debug Debug Windows Locals)。該窗口將顯示變量“x”和“count”的當(dāng)前值?,F(xiàn)在,,按下Step Over按鈕幾次。在Locals窗口中,,您應(yīng)該看到x值增加了(可以連續(xù)按下Step Over,,直到循環(huán)結(jié)束,但這可能需要很長的時(shí)間),。

??? 現(xiàn)在,,已經(jīng)很容易回答“燈是在閃爍嗎”這一問題了? 對(duì)此,,需要在main函數(shù)的delayms(5)一行設(shè)置斷點(diǎn),,單擊該代碼行左側(cè)的小三角。它將變?yōu)榧t圈(圖7)?,F(xiàn)在,,再次運(yùn)行應(yīng)用程序(Debug Go,或者Play按鈕),。應(yīng)用程序會(huì)運(yùn)行到這一點(diǎn),,然后暫停?,F(xiàn)在,,點(diǎn)擊Go若干次后,您會(huì)看到,,隨著您的點(diǎn)擊,,燈接通和關(guān)斷。這驗(yàn)證了燈是在閃爍,,只是太快,,我們的眼睛無法察覺。

圖7. 加入斷點(diǎn)


圖7. 加入斷點(diǎn)

??? 現(xiàn)在,,我們借這個(gè)機(jī)會(huì)了解一下更多的調(diào)試功能,。按下Step Over按鈕幾次,按順序執(zhí)行三行代碼:while(1)PO0 = PO0 ^ 0x83delayms(5),。您將看到,,當(dāng)通過PO0行時(shí),燈閃爍?,F(xiàn)在,,當(dāng)暫停在delayms(5)行時(shí),按下Step Into按鈕(圖8),,進(jìn)入delayms()函數(shù)(而不是Step Over,,這會(huì)執(zhí)行整個(gè)函數(shù))。

圖8. Step Into按鈕


圖8. Step Into按鈕



??? 在運(yùn)行時(shí),,還可以改變變量(和寄存器),。清除所有斷點(diǎn)(Debug Breakpoints Clear All Breakpoints),單擊Go,。單擊Pause,,程序應(yīng)再次停止在delayms()函數(shù)的中間部分。注意“x”和“count”值?,F(xiàn)在,,把x設(shè)置為2499 (單擊x顯示的數(shù)值,高亮后輸入2499),。執(zhí)行幾次Step Over或者Step Into,,您會(huì)看到循環(huán)結(jié)束,“count”值也遞減了,。

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

  • Debug Disassembly將同時(shí)顯示C代碼和生成的匯編代碼,。這樣,用戶可以進(jìn)入?yún)R編代碼,,而不是C代碼,,同時(shí)知道對(duì)應(yīng)于C代碼的什么位置。
  • Debug Debug Windows Call Stack將顯示應(yīng)用程序到達(dá)當(dāng)前位置時(shí)所調(diào)用的函數(shù),。如果在delayms()函數(shù)中暫停執(zhí)行,,其顯示如圖9所示。
  • 使用Debug Stop停止調(diào)試,,觀察右側(cè)的Targets窗口,。確定Maxim Serial JTAG Adapter以粗體字顯示,觀察下面的配置選項(xiàng),。如果您使用串口,,而不是默認(rèn)的COM1,那么,,可以在這里改變這一選項(xiàng),。

圖9. 在delayms()函數(shù)中運(yùn)行時(shí)調(diào)用堆棧


圖9. 在delayms()函數(shù)中運(yùn)行時(shí)調(diào)用堆棧

?

?

?

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