EZ-ARM7のフラッシュROMを書き込む方法には2通りあります。
<JTAGを使用して書き込む>
製作のページやGCCのインストールのページでも紹介しているのが、MINI EZ-USB経由のJTAGで書き込む方法です。
MINI EZ-USBを接続すればあとは書き込みツールのjtag_flashを起動するだけでOKですので、とても簡単です。
書き込み速度もUART経由の書き込みより高速ですので、通常はこちらの方法を使用します。
書き込み速度の比較(ファイルサイズ244Kbyte)
書き込み方法 時間 JTAG(EZ-USB) 24秒 UART(38.4Kbps) 139秒
書き込みの内部処理は以下のようになります。
AN2135SC(Port Bがデータバスになっている)版のMINI EZ-USBを使用する場合には、1のブートローダーモードでのリセットがかけられません。このためユーザプログラム内でウォッチドックタイマーなどを使用している場合には、フラッシュ書き込み中にウォッチドッグリセットが発生して正常な書き込みが出来なくなります。
- LPC2214をブートローダーモードでリセットをかける
- LPC2214の内臓RAMにフラッシュ書き込み用のプログラムを転送して実行する
- ARM7に内蔵されているDCC(デバッグコミニュケーションチャンネル)を使用して書き込むデータを送りこみ、セクタ単位にイレースをかけながら書き込む
- プログラムリスタート禁止(Nオプション)が指定されていなければ、ウォッチドックレジスタを操作してリセットを発生させ、リセットベクタからユーザプログラムを起動する
また、デバッガを使用する場合は4でリセットをかけないないため、プログラムを書き換え後にリセットを行わずにデバッグに突入します。このためI/O関係のレジスタが初期値に戻りません。AN2135SC版のMINI EZ-USBを使用する場合はこの点に留意ください。
jtag_flashツールに入力するのはヘキサ(HEX)ファイルになります。
このヘキサファイルは必ずしも0番地から始まる必要はありません。例えば0x2000から始まるデータファイル用のヘキサファイルを用意して、プログラムは書き換えずにデータ部分だけ書き換えることもできます。
(消去はセクタ単位で行われますので、セクタをまたがらないように注意が必要です。)
jtag_flashツールの第二パラメータにNを指定することで、フラッシュ書き込み後の自動リスタートを抑止することが出来ます。
ハードウエアのデバッグなどで書込み後すぐに起動すると困る場合は指定します。
リセット直後に起動されるブートローダは、フラッシュメモリーに書き込まれているプログラムが、ユーザの意図したものであることを確認するために、0x00000014番地をチェックします。
0x00000014の内容がベクターテーブルのチェックサムと一致する場合に、ユーザの書き込んだプログラムにジャンプします。
jtag_flashツールではベクターテーブルのチェックサムを計算して0x00000014に書き込みます。
コマンド例 処理内容 jtag_flash pgm.hex ヘキサファイル(pgm.hex)を書き込んで、実行する。 jtag_flash pgm.hex N ヘキサファイル(pgm.hex)を書き込むが、実行はしない。
書込み後にデバッガでデバッグをする際に使用する。jtag_flash R フラッシュの書き込みは行わず、CPUをリセットして書き込み済みのプログラムを実行する。 jtag_flash RN フラッシュの書き込みは行わず、CPUをリセットする。
プログラムの実行は行わない。
<UARTを使用して書き込む>
こちらの方法はLPC2214の標準的な方法でUARTチャンネル経由で書き込みます。
この方法はAN2131SCを使用したMINI EZ-USBでのみ使用できます。
書き込みツールはPHILIPS社のホームページからダウンロードすることが出来ます。
起動するとこのよう画面になります。
画面右下の「Use DTR/RTS .....」のオプションはRS-232CのDTRとRTS信号をLCP2214のリセットとブートローダーモード切替に使用するかどうかを指定します。EZ-ARM7はこの信号をEZ-USBから制御しますので、チェックしてください。
この書き込みツールはPCのシリアルポート(COMn)とLPC2214を接続することを前提にしています。
そのためMINI EZ-USBで使用するためにはMINI EZ-USBを「シリアル(COM) <-> USB」ブリッジとして動作させる必要があります。MINI EZ-USBはデバイスドライバをインストールしてFWを入れ替えることによって簡単に仮想COMとして動作させることが出来ます。
まずここのページのインストール手順に従ってPCにデバイスドライバをインストールします。
このページではEZ-USBの起動プログラムにezcom.exeを使用しますが、EZ-ARM7ではLPC2214のリセットやモード設定端子を制御する必要がありますので、替わりにezcom_lpc.exe(ダウンロード)を使用します。
(直前にJTAGとしてMINI EZ-USBを使用している場合は、ezcom_lpc.exeを実行する前にUSBケーブルの抜き差しを行う必要があります。同じ理由で仮想COMとして使用した後に、JTAGとして使用する場合もUSBケーブルの抜き差しを行ってください。)
MINI EZ-USBが仮想COMとして認識されたら、書き込みツールの右側の「Connected To Port:」でCOM番号を設定します。スピード(Use Baud Rate)は38400が良いでしょう。57600でも一応動くようですが、エラーが発生します。本来EZ-USBの仮想COMは57600までいけるのですが、今回はクロック精度の落ちるUART2を使用していますのでこのような結果になります。
画面下の中ほどにある「Read Device ID」をクリックします。正常であればPat IDやBoot Loader IDの項目が表示されるはずです。フラッシュの書き込みは「Filename:」にヘキサファイルを指定して「Upload Flash」を押せば開始します。
JTAG経由で高速に書き込みが出来るので、このPILIPSのUART書き込みツールは必要ないと感じるかもしれません。しかしこのツールは次の状況のときに必要になります。
- LPC2214は0フラッシュのx1fc番地に0x87654321を書き込むことにより、Code Read Protection機能(プログラム読み出し禁止)を有効にすることが出来ます。この状態ではJTAGは使用できなくなり、PHILIPSのツールで「Entire Device」の消去(チップイレース)のみ許可されます。
- LPC2214のブートローダ(ファームウエア)をバージョンアッププログラムがPHILIPSから提供される場合があります。この場合はPHILIPSツールでの書き換えが前提になります。(現在出荷中のEZ-ARM7はバージョンアップする必要はありません。