ENGLISH 简体中文 日本語 한국어  



   
 
キーワードまたは型番を入力    




アプリケーションノート 4312

MAXQ1850の評価キット(EVキット)およびMAXQ30用CrossWorksコンパイラ入門

要約:このアプリケーションノートでは、高性能、RISC、セキュアマイクロコントローラMAXQ1850を対象とするアプリケーションの作成、ビルド、およびデバッグの方法について解説します。ここで示す例では、MAXQ1850の評価キット(EVキット)とRowley Associates社のCrossWorks Cコンパイラを使用します。

はじめに

マキシム・インテグレーテッド・プロダクツのMAXQ1850は、電子商取引、バンキング、およびデータセキュリティの各アプリケーション向けに設計された、高性能、高セキュリティ、低ピン数、32ビットRISCマイクロコントローラです。このマイクロコントローラは、16ビットの命令を実行し、32ビットのデータパスを備えています。ほとんどの命令を単一クロックサイクルで実行することで、MAXQ1850は非常に高性能なRISCマシンになっています。また、MAXQ1850は次のような多数の重要なセキュリティ機能を備えています。
  • DES、3DES、AES、SHA-1、SHA-224、SHA-256、RSA、DSA、およびECDSAをサポートする暗号アクセラレータ
  • 真のハードウェア乱数生成器
  • 8KBの低漏れ電流バッテリバックアップNVSRAM
  • 4個の自動消滅入力
  • 高速なキー/データ消去付きのタンパ検出
  • 環境センサ(温度、電圧など)による範囲外状態の検出
MAXQ1850の評価(EV)キットは、セキュアアプリケーションのプロトタイピングに最適なプラットフォームです。このキットは、RS-232シリアルポート、2個のスマートカード用スロット(フルサイズ1個とSIMカード1個)、USBコネクタ、LCD画面、16個のプッシュボタンによるキーパッド、およびプロトタイピング用スペースを備えています。

MAXQ1850のEVキットのセットアップ

MAXQ1850のEVキットのボードを図1に示します。EVキットのパッケージには以下のハードウェアコンポーネントが含まれており、このアプリケーションノートの実装に使用します。
  1. MAXQ1850のEVキットのボード
  2. JTAGボード
  3. JTAGケーブル(MAXQ1850のEVキットのボードとJTAGボードの接続用)
  4. 9ピンのシリアルケーブル
  5. 安定化電源(5V、±5%、300mA、センタープラス)
図1. MAXQ1850のEVキットのボード
画像の拡大
(PDF、776KB)
図1. MAXQ1850のEVキットのボード

MAXQ1850のEVキットのボードとJTAGボードは、設定変更用の複数のジャンパを備えています。ジャンパの完全な一覧およびその機能については、それぞれのデータシートをご覧ください。このアプリケーションノートでは、次のようにジャンパを設定します。
  • MAXQ1850のEVキットのボードは、JU3 (リセットスイッチの近く)、JU4 (プログラムスイッチの近く)、JU30 (プロセッサの左下の近く)、およびJU104 (LCDモジュールの左下の近く)の各ジャンパを短絡させてください。また、ジャンパJU5 (バッテリの近く)とJU20 (電源入力の近く)のピン1 (PCB上の正方形のパッド)とピン2も接続してください。ジャンパJU21 (プロセッサの右上の近く)のピン2と3を接続してください。他のジャンパはすべてオープンにしてください。
  • JTAGボードは、JH3を短絡させてください。これによって、JTAGボードからEVキットのボードに5V電源が供給されます。このアプリケーションでは、ジャンパJH1とJH2は「任意」です。
JTAGケーブルでJTAGボードとMAXQ1850のキットのボードを接続してください。JTAGボード上では、ケーブルの赤い線が入っている側を、コネクタのpin 1およびpin 2と印刷されている側に接続してください。MAXQ1850のEVキットのボード上では、ケーブルの赤い線が入っている側を、コネクタのpin 1および2と印刷されている側に接続してください(ピン1は、PCB裏面の正方形のパッドです)。

旧式のMAXQ1850のEVキットのボードの設計では、マイクロコントローラMAXQ1850用のソケットを使用していた場合があることに注意してください。その場合は、MAXQ1850上の鉛フリーのマーク「+」をソケット内の1つの角(右下)にあるドットに合わせて、MAXQ1850をソケットに装着してください。

9ピンのシリアルケーブルでPCとJTAGボードを接続してください(MAXQ1850のキットのボードには接続しないでください)。最後に、5Vの電源をJTAGボードの電源コネクタ(J2)に接続してください。これによって、EVキットのボードにも電力が供給されます

CrossWorksコンパイラ入門:WalkLED

MAXQ1850のEVキットを初めて使用するに当たって、ボード上の3個のLEDを点滅させる簡単なアプリケーションプログラムを作成します。固定の、反復的なシーケンスでLEDを点滅させることによって、LEDがボード上で「歩いている」ように見えます。そこから、プロジェクト名はWalkLEDにしました。このプログラムのコードを付録Aに示します。コードは非常に短いため、手作業でも比較的短時間で入力することができます。しかしあらかじめ準備されたものを使用したい場合は、EVキットのCDにソースコードファイルが収録されており、またマキシムのサイトからダウンロードすることも可能です。

使用するツールスイートは、Rowley Associates社のCrossStudioです。アプリケーションノート執筆の時点では、ツールスイートの名称はCrossWorks for the MAXQ30、バージョンは2.0.0.2008063000.2293でした。このアプリケーションノートのスクリーンショットは、このバーションを使用して作成されています。最新のバージョンを確認するには、Rowley & Associates社のウェブサイトをチェックするか、またはまでメールでお問い合わせください(英語のみの対応となります)。

新しいソリューションを作成するため、File New New Projectを選択してください。New Projectポップアップで、最下部のNameボックスとLocationボックスに入力して、Executableカテゴリを選択して、Project TemplatesウィンドウでA C executableを選択してください(図2)。プロジェクト名をWalkLED_demoとして、ディレクトリC:\work\maxq\MAXQ1850\WalkLED_demoに格納します。

図2. New Project画面
図2. New Project画面

Nextをクリックして先に進むと、Project Propertiesポップアップボックスが表示されます(図3)。現在はTarget ProcessorがMAXQ1103になっている可能性があります。プロセッサの型番をダブルクリックすることによって、MAXQ1850プロセッサを選択することができます。それ以外のこのページおよび後続ページの設定はすべてそのままで問題ないため、MAXQ1850を選択した後でFinishをクリックしてください。プロジェクトが作成されます。もしそうしたければ、Nextをクリックすることによってプロジェクトのその他のオプションを調べることもできます。

図3. MAXQ1850プロセッサを選択
図3. MAXQ1850プロセッサを選択

プロジェクトが作成された時点で、通常はアプリケーションウィンドウの右上に位置するProject Explorerウィンドウ(図4)内に、新しいプロジェクトが表示されます。それを開くと、Source FilesとSystem Filesという2つのフォルダがあります。Source Filesを開くと、アプリケーションのソースコードであるmain.cが表示されます。ダブルクリックしてそのファイルをオープンしてください。

図4. Project Explorerウィンドウ
図4. Project Explorerウィンドウ

次に、付録Aのアプリケーションをタイプ入力するか、または前述のソースのいずれか1つからカット&ペーストを行うことによって、main.cファイルの現在の内容をすべて置き換えてください。

このアプリケーションを実行すると、(キットのボード上のプロトタイピング用スペースのすぐ左に位置する) DS1、DS2、およびDS3の各LEDが順番にオン/オフの点滅を行います。しかし、アプリケーションを実行する前に、「ビルド」を行う必要があります。Build Build WalkLED_demoを選択するか、または、F7を押下してください。すべてが適切にビルドされた場合、チェックマークの付いた「Build complete」というメッセージがOutputウィンドウ(図5)内に表示されます。エラーが発生した場合は、コードが正しく入力されているか確認してください。

図5. プロジェクトをビルドした後のOutput
図5. プロジェクトをビルドした後のOutput

これで、アプリケーションを実行することができます。それには、Debug Build and Debugを選択すると、プログラムが起動して動作を継続します。Pauseボタン(コードウィンドウ左上のBreak Execution)をクリックすると、プログラムが現在位置で停止してユーザの次の操作を待ちます。Build and Debugオプションが選択可能になっていない場合は、「targets」ウィンドウに移動して、Maxim Serial JTAG Adapterをクリックして、最後にConnectボタン(ウィンドウ上部の左端)をクリックしてください。これによって、JTAGボードを通してツールセットがEVキットに接続され、デバッグ機能が有効化されます。ツールセットのデバッグ機能が有効化された後は、単に図6に示すStep Overボタンをクリックすることによって、デバッグプロセスを開始することができます。

図6. Step Overボタン
図6. Step Overボタン

Step Overボタンでプログラムを起動すると、CrossStudioによってアプリケーションがJTAGボードを通してMAXQ1850にダウンロードされ、その間Outputウィンドウにステータスメッセージが表示されます。アプリケーションの実行が開始され、コードの1行目で一時停止します(左マージンの黄色の矢印で位置が示されます)。ここからプログラムを動作させるには、Debug Goを選択してください(またはPlayボタンに似た外観のボタンをクリックしてください)。そしてMAXQ1850ボード上のLEDが点滅していることを確認してください。ここで、アプリケーションに少し変更を加えてみると良いでしょう。LEDを逆順に点滅させたり、点灯時間を変えて点滅を早くしたり遅くしたりしてください。

CrossStudioを使用したアプリケーションのデバッグ

次に、MAXQ1850とCrossStudioツールのデバッグ機能の一部について調べてみましょう。MAXQ1850は、実際のシリコン上におけるデバッグを可能にして、高価なエミュレータや潜在的に不正確性を持つシミュレータを不要にする、組込みのJTAGエンジンを備えています。また、MAXQ1850はセキュリティロック機構も備えており、デバイスがロックされている間はJTAGの動作が防止されることに注意してください。これによって、機密性の高いアプリケーションにMAXQ1850デバイスを配備した場合、JTAGデバッグエンジンがセキュリティ上の脅威にならないことが保証されます。

WalkLED_demoアプリケーションについて検討します。実験として、main.cファイル内のDelay関数で、ディレイカウンタを200000から2000に変更してください。

for(i=0;i < 2000; i++) ;
そして、Build Build and Debugを選択してアプリケーションのビルドと実行を行ってください。ツールセットによってプロジェクトが再ビルドされ、新しいプログラムがロードされ、実行が開始されます。今度はLEDがオン/オフの点滅を行わず、連続的に点灯するようになったことに注意してください。

Pauseボタンをクリックすることによって(またはDebug Breakを選択することによって)、現在のコード行でプログラムの実行が一時停止して、左マージンに黄色の矢印が表示されます。このプログラムは大部分の時間をDelay関数の「for」ループの実行に費やしているため、おそらくコードはそこで停止するはずです(図7を参照)。

図7. <code>Delay</code>関数内でコードの実行が停止した状態
図7. Delay関数内でコードの実行が停止した状態

右側にあるLocalsウィンドウを見てください(表示されていない場合は、Debug Debug Windows Localsを選択してください)。このウィンドウには、変数「i」の現在の値が表示されています。ここで、Step Overボタンをクリックしてください。プログラムを1秒間動作させた後、再度Pauseボタンをクリックしてください。「i」の値が増大しているはずです。

この関数を抜けるには、ループが終了するまでStep Overボタンを押し続けても構いませんが、それには時間がかかります。単にStep Outボタン(図6でStep Intoボタンの右にあるボタン)をクリックすることによって、Delay関数を抜けて呼出し元のmain.cに戻るまでプログラムが実行されます。

ブレークポイントを設定することによっても、これと同様の結果を得ることができます。main.c内でDelay関数を呼び出している任意の行にブレークポイントを設定するには、それらのコード行の左に表示されている小さな三角形をクリックしてください。三角形が赤い丸に変化します(図8)。再度アプリケーションを実行してください(Debug GoまたはPlayボタン)。アプリケーションはそのポイントまで実行して停止します。

図8. ブレークポイントを追加した状態
図8. ブレークポイントを追加した状態

他のデバッグ機能についても調べてみましょう。Step Overボタンを数回クリックしてください。1回クリックするごとに、Cのソースコードが1行ずつ実行されます。各LEDを制御している行を通過するたびに、LEDが点滅するはずです。Delay()という行の1つで停止したところで、Step Intoボタン(図9)をクリックしてください。すると、その関数の内部に入って、実行可能な最初の行で停止します。すでに見たように、Step Outボタンを一度クリックするだけで、Delay()関数から抜けることができます。

図9. Step Intoボタン
図9. Step Intoボタン

実行中に、変数(およびレジスタ)を書き換えることも可能です。GOをクリックして、Pauseをクリックすると、プログラムはまたDelay()関数の途中で停止するはずです。「i」の値を見てください。ここで、「i」に1998をセットしてみます(「i」の値として表示されている部分をクリックして、ハイライト表示されたら1998を入力してください)。Step Intoボタンをクリックすると、「i」が最終値に達したため、ループが終了するはずです。

その他にも、いくつか興味深いデバッグ機能が存在します。
  • Debug Disassemblyは、Cコードと、生成されたアセンブリコードを一緒に表示します。これを使用すれば、Cコードの代わりにアセンブリコードをステップ実行することが可能で、アセンブリコードの実行に伴ってCコードも表示されます。
  • Debug Debug Windows Call Stackは、アプリケーションが現在の位置に到達するまでに呼び出された関数を表示します。Delay()関数の中で実行を一時停止した場合は、図10のような表示になります。
  • Debug Stopでデバッグを終了して、右側にあるTargetsウィンドウを見てください。Maxim Serial JTAG Adapter Propertiesが太字で表示されていることを確認して、その下のProperties Windowの情報を参照してください。Maxim Serial JTAG Adapter Propertiesが表示されていない場合は、ドロップダウンメニューからそれを選択してください。プロパティの一覧とそれらの設定内容が図11のように表示されます。スクロールバーを使用して、利用可能なすべての情報を見てください。Connectionという見出しの下に、Port Nameというプロパティがあります。デフォルトのCOM1以外のシリアルポートを使用する場合は、ここで場所を変更することができます。
図10. <code>Delay()</code>関数を実行中のコールスタック
図10. Delay()関数を実行中のCall Stack

図11. Properties Window
図11. Properties Window

補足情報

ソフトウェアライブラリおよびリファレンス設計が、現在マキシムのエンジニアによって開発中です。利用可能なライブラリとツールに関する最新の情報が必要な場合、またはこのアプリケーションノートに関して何か問題がある場合は、までお問い合わせください(英語のみの対応となります)。

付録A. WalkLEDのmain.cのソースコード

#include <maxq1850.h>
#include <inmaxq.h>
#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.の商標です。


関連製品  APP 4312: Feb 23, 2009
DS5002 セキュアマイクロプロセッサチップ フルデータシート
(PDF, 1.2MB)
無料
サンプル
DS5250 高速セキュアマイクロコントローラ 要約版データシート
(PDF, 60kB)
DS8007 マルチプロトコルのデュアルスマートカードインタフェース フルデータシート
(PDF, 368kB)
無料
サンプル
DS8023 スマートカードインタフェース フルデータシート
(PDF, 308kB)
DS8024 スマートカードインタフェース フルデータシート
(PDF, 308kB)
無料
サンプル
DS8113 スマートカードインタフェース フルデータシート
(PDF, 228kB)
無料
サンプル
MAXQ1103 高性能セキュアRISCマイクロコントローラ 要約版データシート
(PDF, 64kB)
MAXQ1850 高速ゼロ化技術を用いたセキュア暗号コントローラ 要約版データシート
(PDF, 60kB)

自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。


We Want Your Feedback!



フィードバックをお寄せください。
内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。—マキシムはお客様からいただく訂正、提案を元に改善していきます。 このページを評価し、フィードバックを送信する。

 

ダウンロード、PDFフォーマットダウンロード、PDFフォーマット(439kB)
 AN4312, AN 4312, APP4312, Appnote4312, Appnote 4312

        •         •         •     プライバシーポリシー     •     法的お知らせ

    Copyright © 2009 by Maxim Integrated Products