6. 低消費電力モード
7.3 オンボードプログラミング
フラッシュメモリの書き込み/消去を行うためのモードとしてオンボードで書き込み/消去ができるブートモ ードとPROMライタで書き込み/消去を行うライタモードが用意されています。このほかユーザモードでもオン ボードで書き込み/消去を行うことが可能です。リセット状態からリセットスタートすると本LSIはTEST端子、
NMI端子およびポートの入力レベルによって表7.1のように異なるモードへ遷移します。各端子の入力レベルは 少なくともリセット解除の4ステート前に確定させる必要があります。
ブートモードに遷移すると、LSI内部に組み込まれているブートプログラムが起動します。ブートプログラムは SCI3を経由して外部に接続されたホストから書き込み制御プログラムを内蔵RAMに転送し、フラッシュメモリ を全面消去したうえで書き込み制御プログラムを実行します。オンボード状態での初期書き込みや、ユーザモー ドで書き込み/消去ができなくなった場合の強制復帰等に使用できます。ユーザモードではユーザが用意した書 き込み/消去プログラムに分岐することで任意のブロックを消去し書き換えることができます。
表7.1 プログラミングモード選択方法
TEST NMI P85 PB0 PB1 PB2 リセット解除後のLSIの状態 0 1 X X X X ユーザモード
0 0 1 X X X ブートモード 1 X X 0 0 0 ライタモード
【注】X:Don’t care
7.3.1 ブートモード
ブートモードにおけるリセット解除から書き込み制御プログラムに分岐するまでの動作を表7.2に示します。
1. ブートモードではフラッシュメモリへの書き込み制御プログラムをホスト側に準備しておく必要がありま す。書き込み制御プログラムは「7.4 書き込み/消去プログラム」に沿ったものを用意してください。
2. SCI3は調歩同期式モードに設定され、送受信フォーマットは「8ビットデータ、1ストップビット、パリティ なし」です。
3. ブートプログラムが起動すると、ホストから連続送信される調歩同期式シリアル通信データH'00のLow期間 を測定してビットレートを計算し、SCI3のビットレートをホストのビットレートに合わせ込みます。リセッ ト解除はRXD端子がHighの状態で行ってください。必要に応じてRXD端子およびTXD端子は、ボード上でプ ルアップしてください。リセット解除からLow期間を測定できるまで約100ステートかかります。
4. ビットレートの合わせ込みが終了すると調整終了の合図としてH'00を1バイト送信しますので、ホストは調整 終了の合図を正常に受信したらH'55を1バイト送信してください。正常に受信できなかった場合はリセットに よりブートモードを再起動してください。ホスト側のビットレートと本LSIのシステムクロック周波数の組み 合わせによっては許容範囲内にビットレートを合わせ込めない場合が生じます。このため、ホストの転送ビ ットレートと本LSIのシステムクロック周波数を表7.3の範囲としてください。
5. ブートモードでは内蔵RAMの一部をブートプログラムで使用します。ホスト側から送信される書き込み制御 プログラムを格納できるエリアはH'F780〜H'FEEF番地です。プログラムの実行が書き込み制御プログラムへ 移行するまでブートプログラムエリアは使用できません。
6. 書き込み制御プログラムに分岐するときSCI3は送受信動作を終了(SCR3のRE=0、TE=0)しますが、BRR には合わせ込んだビットレートの値は保持されるので、引き続き書き込み制御プログラムでホストとの間の 書き込みデータやベリファイデータの送受信に使用できます。TXD端子はHighレベル出力状態(PCR22=1、
P22=1)となっています。書き込み制御プログラムへ分岐直後のCPUの汎用レジスタは不定です。特にスタ ックポインタはサブルーチンコールなどで暗黙的に使用されるため、書き込み制御プログラムの冒頭で初期 化してください。
7. ブートモードはリセットにより解除されます。リセット端子をLowレベルにして最低20ステート経過後、NMI 端子を設定してリセットを解除してください。WDTのオーバフローリセットが発生した場合もブートモード は解除されます。
8. ブートモードの途中でTEST端子、NMI端子の入力レベルを変化させないでください。
表7.2 ブートモードの動作 項
目 ブ
| ト モ
| ド 起 動 ビ ッ ト レ
| ト の 合 わ せ 込 み フ ラ ッ シ ュ メ モ リ 消 去
通信内容 処理内容
ホストの動作 本LSIの動作
処理内容
所定のビットレートでH'00を連続送信
リセットスタート後 ブートプログラムへ分岐 ブートプログラム起動
・受信データH'00のLow期間を測定
・ビットレートを計算し、SCI3のBRRを設定
・ビットレート合わせ込み終了後、ホストへ H'00を送信
H'55受信
内蔵RAMに転送された書き込み 制御プログラムへ分岐し実行を開始 H'00,H'00・・・H'00
H'00 H'55 H'00を正常に受信したらH'55送信
ブートプログラム 消去エラー
フラッシュメモリのデータをチェックし、
書き込まれている場合は全ブロックを 消去してホストへH'AAを送信。
(消去できなかった場合はH'FFを 送信して、動作を停止)
H'FF
H'AA受信 H'AA
H'AA受信 ホストへH'AAを送信
H'AA 書
き 込 み 制 御 プ ロ グ ラ ム の 転 送
受信した2バイトデータをホストへ エコーバック
受信したデータをホストへ エコーバックするとともに RAMへ転送(N回繰り返し)
上位バイト、下位バイト エコーバック
エコーバック H'XX 転送する書き込み制御プログラムの
バイト数(N)を上位バイト、下位バイト の順に2バイト送信
書き込み制御プログラムを1バイト毎に 送信(N回繰り返し)
表7.3 ビットレート自動合わせ込みが可能なシステムクロック周波数 ホストのビットレート LSIのシステムクロック周波数範囲 19200bps 16〜20MHz
9600bps 8〜16MHz 4800bps 4〜16MHz 2400bps 2〜16MHz
7.3.2 ユーザモードでの書き込み/消去
ユーザモードでもユーザが用意した書き込み/消去プログラムに分岐することで任意のブロックをオンボード で消去し書き換えることができます。分岐のための条件設定やオンボードでの書き換えデータ供給手段をユーザ 側で用意する必要があります。また、必要に応じてフラッシュメモリの一部に書き込み/消去プログラムを書き 込んでおくか、書き込み/消去プログラムを外部から供給するためのプログラムを書き込んでおく必要がありま す。書き込み/消去中はフラッシュメモリを読み出せないため、ブートモードと同様書き込み/消去プログラム は内蔵RAMに転送して実行してください。図7.2にユーザモードでの書き込み/消去手順の例を示します。書き 込み/消去プログラムは「7.4 書き込み/消去プログラム」に沿ったものを用意してください。
フラッシュメモリのアプリケーション プログラムに分岐 RAM上の書き込み/消去
プログラムに分岐 書き込み/消去制御プログラムを
RAMに転送 リセットスタート
書き込み/消去制御プログラムを実行
(フラッシュメモリの書き換え)
書き込み/消去?
Yes No
フラッシュメモリのアプリケーション プログラムに分岐
図7.2 ユーザモードにおける書き込み/消去例