キーワード: MAXQ1850, MAXQ1103, DS5250, DS5002, マイクロコントローラ, セキュアマイクロコントローラ, uC, DES, 3DES, RSA, ECDSA, SHA, USBスマートカード, ISO 7816, EMV, 集積回路カード, ICカード, POS端末, 銀行端末, ATM, 決済端末, PINパッド, アクセス制御, ペイTV, セットトップボックス
関連製品
MAXQ1850のEV (評価)キットおよびMAXQ30用CrossWorksコンパイラ入門
要約:このアプリケーションノートでは、高性能、RISC、セキュアマイクロコントローラMAXQ1850を対象とするアプリケーションの作成、ビルド、およびデバッグの方法について解説します。ここで示す例では、MAXQ1850の評価(EV)キットとRowley Associates社のCrossWorks Cコンパイラを使用します。
はじめに
マキシムのMAXQ1850 は、電子商取引、バンキング、およびデータセキュリティなどのアプリケーション向けに設計された、高性能、高セキュリティ、低ピン数、32ビットRISC マイクロコントローラです。このマイクロコントローラは、16ビットの命令を実行し、32ビットのデータパスを備えています。ほとんどの命令を単一クロックサイクルで実行することで、MAXQ1850は非常に高性能なRISCマイクロコントローラになっています。また、MAXQ1850は次のような多数の重要なセキュリティ機能を備えています。
RSA、DSA、およびECDSAをサポートする2048ビットモジュラー演算アクセラレータ
AES-128、AES-192、AES-256、SHA-1、SHA-224、SHA-256、DES、および3DESをサポートする暗号ハードウェアアクセラレータ
真のハードウェア乱数生成器
8KBの低リーク電流バッテリバックアップNVSRAM
4個の自己消去入力
高速なキー/データ消去付きのタンパー検出
環境センサ(温度、電圧など)による規定範囲外の状態の検出
MAXQ1850-KIT のEV (評価)キットは、セキュアアプリケーションのプロトタイピングに最適なプラットフォームです。このEVキットは、RS-232 シリアルポート、2個のスマートカード用スロット(フルサイズ1個とSIM カード1個)、USB コネクタ、LCD 画面、16個のプッシュボタンによるキーパッド、およびプロトタイピング用スペースを備えています。
MAXQ1850のEVキットのセットアップ
MAXQ1850-KITのボードを図1 に示します。EVキットのパッケージには以下のハードウェアコンポーネントが含まれており、このアプリケーションノートの実装に使用します。
MAXQ1850-KITのボード
JTAGボード
JTAGケーブル(MAXQ1850-KITボードとJTAGボードの接続用)
9ピンのシリアルケーブル
2つの安定化電源(5V、±5%、300mA、センタープラス)
注:Rev Cキットは1000mA電源が付きます。
画像の拡大 (PDF, 5.6MB)
図1. MAXQ1850-KITボード(Rev B)
MAXQ1850-KITボードは、設定変更用の複数のジャンパを備えています。ジャンパの完全な一覧およびその機能については、データシートをご覧ください。このアプリケーションノートでは、次のようにジャンパを設定します。
JU30 (MAXQ1850の左下近く)
ピン1 (PCB 上の正方形のパッド)とジャンパJU5のピン2 (バッテリ近く)とJU20 (電源入力近く)を接続
ジャンパJU21のピン2と3 (MAXQ1850の右上近く)を接続
他のジャンパはすべてオープンにしてください。
注: MAXQ1850-KIT CDに含まれる例には異なるジャンパ設定が必要なものもあります。ジャンパ位置についてはその例のREADME.txtファイルをご参照ください。
JTAGボード(P2)とMAXQ1850-KIT (J6)ボード間にJTAGケーブルを接続してください。JTAGボードではケーブルの赤ストライプはピン1およびピン2とラベル書きされたコネクタ側に接続してください。MAXQ1850-KITボードでは、ケーブルの赤ストライプをピン1、TCK に接続してください。(ピン1はPCB裏面の正方形パッドで見分けられます。)
PCとJTAGボード間に9ピンシリアルケーブルを接続してください。最後に5V電源を接続してください。Rev AとBキットでは、JTAGボードの電源コネクタ(J2)とEVキットボード(J1)に電源を接続してください。Rev CボードではまずEVキットボードのジャンパJU31、およびJTAGボードのJH3を閉じてください。次に、電源をEVキットボード(J1)に接続してください。Rev CボードはJTAGボードに給電します。
CrossWorksコンパイラ入門
MAXQ1850-KITを使い始めるために、ボード上の3個のLED を点滅させる簡単なアプリケーションプログラムを作成します。固定の、反復的なシーケンスでLEDを点滅させることによって、LEDがボード上で「歩いている」ように見えます。ソースコードはEVキットCDに収録されており、またマキシムサイトからダウンロードする こともできます。このアーカイブZIPファイルをC:\MAXQ1850\LEDに解凍してください。
マキシムが使用するツールスイートは、Rowley Associates社のCrossStudioです。アプリケーションノート執筆の時点では、CrossWorks IDE for the MAXQ30、バージョン2.0.0.2009012302.4045が使われました。最新の改訂版を確認するには、Rowley Associates社のウェブサイト をチェックするか、またはマキシムまでお問い合わせ ください(英語のみの対応となります)。Rowley CrossWorksの詳細については付録A をご参照ください。
新しいソリューションを作成するため、File New New Project に進んでください。New Project ポップアップで、最下部のName ボックスとLocation ボックスに入力して、Project Templates ウィンドウでA C executable とExecutable カテゴリを選択してください(図2 )。プロジェクト名をLED として、ディレクトリC:\MAXQ1850\LED に格納します。
図2. New Project画面
Next をクリックして先に進むと、Project Properties ウィンドウが表示されます(図3 )。現在はTarget Processor がMAXQ1103になっている可能性があります。プロセッサの型番をダブルクリックすることによって、MAXQ1850プロセッサを選択することができます。再びNextをクリックしてProject files main.c からチェックマークをはずしてください(図4 )。自身のファイルを追加します。Finishをクリックしてプロジェクトを作成してください。
図3. MAXQ1850プロセッサを選択
図4. 新規プロジェクトのオプション
プロジェクトが作成された時点で、通常はアプリケーションウィンドウの右上に位置するProject Explorer ウィンドウ(図5 )内に、新しいプロジェクトが表示されます。プロジェクトLEDを拡大すると、Source Files とSystem Files という2つのフォルダがあります。Source Fileを右クリックしAdd Existing File を選択してください。C:\MAXQ1850\LED までブラウジングしmain.c とspi.c の両方を選択し、次にOpen をクリックしてください。
図5. Project Explorerウィンドウ
このアプリケーションを実行すると、(EVキットのボード上のプロトタイピング用スペースのすぐ左に位置する) DS1、DS2、およびDS3の各LEDが順番にオン/オフの点滅を行います。しかし、アプリケーションを実行する前に、「ビルド」を行う必要があります。Build Build LED を選択するか、または、F7 を押してください。すべてが適切にビルドされた場合、横にチェックマークの付いたBuild complete というメッセージがOutput ウィンドウに表示されます(図6 )。
図6. プロジェクトをビルドした後のOutput
アプリケーションのロードを試みる前にTargets ウィンドウでJTAG Debug Portを設定してください。Maxim Serial JTAG Adapter をダブルクリックすると太字フォントに変わります。情報については下のProperties Window を見てください。図7 にあるようにプロパティと設定のリストが表示されます。Connection Port Name を、JTAGボードが接続されているシリアルポートに設定してください。
図7. Targetプロパティウィンドウ
アプリケーションをロードするためにはDebug Go を使うか、またはF5 を押してください。プログラムはJTAG付きのEVキットにロードを行い、main 関数の始めに止まります。Go オプションが使えない、またはプログラムがロードしない場合は、トラブルシューティングとして付録B をご参照ください。
この点からアプリケーションを実行するためにはDebug Go を選んでください(またはPlay ボタンのように見えるボタンをクリックしてください)。ここでMAXQ1850-KITのボード上のLEDが点滅していることを確認してください。アプリケーションをここで変更したいと思うかもしれません。その場合は、逆シーケンスでLEDを点滅させようとしたり、点灯される時間量を変えると点滅が早くなったり遅くなったりします。
CrossStudioを使用したアプリケーションのデバッグ
次に、MAXQ1850とCrossStudioツールのデバッグ機能の一部について調べてみましょう。MAXQ1850は、実際のシリコン上におけるデバッグを可能にして、高価なエミュレータや潜在的に不正確性を持つシミュレータをなくす、組込みのJTAGエンジンを備えています。また、MAXQ1850はセキュリティロック機構も備えており、デバイスがロックされている間はJTAGの動作が防止されることに注意してください。これによって、機密性の高いアプリケーションにMAXQ1850デバイスを配備した場合、JTAGデバッグエンジンがセキュリティ上の脅威にならないことが保証されます。
LEDアプリケーションについて考えてみてください。まずDebug Stop を使って現在のデバッグセッションを止めます。実験として、main.c 関数内のDelay 関数で遅延カウンタを200000 から2000 に変更してください。
for(i=0;i < 2000; i++) ;
そして、Build Build and Debug を選択してアプリケーションのビルドと実行を行ってください。ツールセットによってプロジェクトが再ビルドされ、新しいプログラムがロードされ、実行が開始されます。今度はLEDがオン/オフの点滅を行わず、連続的に点灯するようになったことに注意してください。
Pause ボタンを選択することによって(またはDebug Break を選択)、現在のコード行でプログラムの実行が停止して、左マージンに黄色の矢印が表示されます。このプログラムは大部分の時間をDelay 関数のfor ループの実行に費やしているため、おそらくコードはそこで停止するはずです(図8 を参照)。
図8. Delay 関数内でコードの実行が停止した状態
右側にあるLocalsウィンドウを見てください。(表示されていない場合は、Debug Debug Windows Locals に進んでください)。このウィンドウには、変数i の現在の値が表示されます。ここで、Step Over ボタンまたはDebug Step Over を押してください。プログラムを1秒間動作させた後、再度Pause ボタンを押してください。i の値が増加しているはずです。
この関数を抜けるには、ループが終了するまでStep Over ボタンを押し続けても構いませんが、それには時間がかかります。単にStep Out ボタンまたはDebug Step Out を押すことによって、Delay 関数を抜けて呼出し元の関数main.c に戻るまでプログラムが実行されます。
ブレークポイントを設定することによっても、これと同様の結果を得ることができます。main.c 関数内でDelay 関数を呼び出している任意の行にブレークポイントを設定するには、それらのコード行の1つで左に表示されている小さな三角形をクリックしてください。三角形が赤い丸に変化します(図9 )。再度アプリケーションを実行してください(Debug Go またはPlay ボタン)。アプリケーションはそのポイントまで実行して停止します。
図9. ブレークポイントを追加した状態
他のデバッグ機能についても調べてみましょう。Step Over ボタンを数回押してください。1回押すごとに、Cのソースコードが1行ずつ実行されます。各LEDを制御している行を通過するたびに、LEDが点滅するはずです。Delay() という行の1つで停止したところで、Step Into ボタンまたはDebug Step Into を押してください。すると、その関数の内部に入って、実行可能な最初の行で停止します。すでに見たように、Step Out ボタンを一度クリックするだけで、Delay() 関数から抜けることができます。
実行中に、変数(およびレジスタ)を書き換えることも可能です。Go をクリックして、Pause をクリックすると、プログラムはまたDelay() 関数の途中で再び停止するはずです。「i」の値を見てください。ここで、i に1998 をセットしてみます。(i の値として表示されている部分をクリックして、ハイライト表示されたら1998 を入力してください) Step Into ボタンをクリックすると、i が最終値に達したため、ループが終了するはずです。
その他にも、いくつか興味深いデバッグ機能が存在します。
Debug Disassembly は、Cコードと、生成されたアセンブリコードを一緒に表示します。これを使用すれば、Cコードの代わりにアセンブリコードをステップ実行することが可能で、アセンブリコードの実行に伴ってCコードも表示されます。
Debug Debug Windows Call Stack は、アプリケーションが現在の位置に到達するまでに呼び出された関数を表示します。Delay() 関数の中で実行を一時停止した場合は、図10 のような表示になります。
図10. Delay() 関数を実行中のCall Stack
補足情報
全MAXQ1850機能用のコード例付きEVキットCDがご利用可能です。このCDのご請求をご希望の場合または、このアプリケーションに関して問題をお持ちの場合は、マイクロコントローラサポート までお問い合わせください(英語のみの対応となります)。
MAXQ30用Rowley CrossWorksの公式文書の入手についてはここ をクリックしてください。
付録A. Rowley CrossStudio
Rowley CrossWorks IDEバージョン
EVキットCDにあるLED例および全ての例はMAXQ30用Rowley CrossWorksの最新バージョン(リリース2.0.0.2009012309.4045)で開発されました。このIDEバージョンを使うことが大変重要 です。このIDEバージョンのプロジェクトファイルは旧バージョンと互換性がありません 。どのリリース版をお持ちかを確認するためにはCrossStudio Help About CrossStudio を開いてください。
MAXQ30用Rowley CrossWorksを入手するには
MAXQ30用CrossStudioはRowley社から入手可能です。http://www.crossstudio.co.uk/maxq/index.htm
「Latest Downloads CrossWorks for MAXQ30」下の「Version 2.0 for Windows」を選んでください。実行可能なファイルをダウンロードしインストールしてください。
Rowley社はCrossWorks IDEの30日間の評価期間を提供しています。指示 に従ってください。
MAXQ30用Rowley CrossWorksのライセンスを購入するためには :
Eメールまたはお電話+44(0)1453 549536がご利用いただけます(英語のみの対応)。
付録B. トラブルシューティング
プロジェクト例で問題をコンパイル
付属のプロジェクトファイルから用例をコンパイルしようとした際に問題が生じた場合は、Rowley CrossWorksコンパイラのバージョンの非互換性による問題によるところが多々あります。この非互換性は、プロジェクトのビルドができない、正しい出力ファイルを生成しない、デバッグセッションの開始の失敗、デバッグボタンのグレイ化、ベンダーパッケージがインストールされていないことを知らせるエラー表示など異常な振る舞いを起こすことがあります。
この問題を直すには、現在インストールされているIDEでプロジェクトファイルを再度作成してください。まずプロジェクトディレクトリから現在の.hzpおよび.hzsファイルを削除してください。上記指示またはEVキットCDのREADME.txtファイルのセクションDに従ってください。プロジェクトは正しく作成されデバッグします。
シリアル-JTAGボードに関する問題
マキシムのシリアルJTAGアダプタでMAXQ1850-KITへの接続について、Rowley CrossWorksが問題を報告する場合は以下のステップを1度試してみてください。
JTAGプログラミングケーブルの向きが正しいことを確かめてください。シリアルJTAGアダプタボード(コネクタP2)とMAXQ1850 (コネクタJ6)の両方でピン1に赤ストライプが向かっていることを確かめてください。ピン1はEVキットPCBの裏面の正方形パッドによって確認できます。
シリアルJTAGアダプタボードとEVキットの両方が電源に接続されていることを確認してください。シリアルJTAGアダプタボードLED DS1は点灯しているはずです。MAXQ1850-KITボードではLCDスクリーンの一番上の行にかすかな正方形がいくつか見えるはずです。
Rowley CrossWorksで正しいシリアル通信ポートが選択されていることを確認してください。Targets ウィンドウからマキシムのシリアルJTAGアダプタをダブルクリックして、ポート名がシリアルJTAGアダプタボードに接続されているシリアルポートに対応していることを確認してください。
シリアルJTAGアダプタボードとEVキットの両方から電源ケーブルを切断してください。Targets ウィンドウのMaxim Serial JTAG Adapter を右クリックして、Disconnect を選択してください。両電源ケーブルを再接続して、Connect を選択してください。
アプリケーションノート4027 「How to Update the Firmware in the MAXQ Serial-to-JTAG Board 」の説明に従ってシリアルJTAGアダプタボードのファームウェアをリロードしてください。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。
APP 4312: Feb 23, 2009
アプリケーションノート4312,
AN4312,
AN 4312,
APP4312,
Appnote4312,
Appnote 4312