2011/06/08 MCU事業本部 ソフトウェア統括部 MCUツール技術部 Rev. 0.00
ルネサス エレクトロニクス株式会社
オンチップデバッギングエミュレータ
E8/E8a/E1/E20を使用
の際に、
IDコードがわからなくなった場合の対処方法
(
M16Cファミリ(R32C含む)、R8Cファミリ用)
IDコードチェック機能の概要
M16Cファミリ、R8CファミリのIDコードチェック機能は、マイコン内蔵フ
ラッシュの読み出しや消去を禁止する機能です。
IDコードは、ユーザにより内蔵フラッシュメモリに書き込まれ、デバッガや
フラッシュプログラマ使用時にこのIDコードと一致するIDコードを入力し
なければ、内蔵フラッシュの読み出しや消去を一切行うことができません。
※新しいデバイスでは強制イレーズ機能をもったものがあります。
ご使用のマイコンが強制イレーズ機能に対応しているかどうかは、
マイコンのハードウェアマニュアルを参照してください。
このため、IDコードを忘れてしまった場合は、ルネサスでもどうにもするこ
とはできません。
しかしながら、最後にダウンロードしたプログラムがわかっていれば、そこ
で設定されているIDコードを調べることは可能です。
本資料ではその方法についてご紹介します。
E8/E8a/E1/E20デバッガでのIDコードの取り扱い
IDコードはマイコンのフラッシュメモリをオンボード
プログラマなどで簡単に読んだり書き換えたり
できないようにするための
マイコンの機能
です。
右のダイアログでは、
フラッシュメモリに書き込まれ
ている7バイトのIDコードを入力してください。
(このダイアログはIDコードを設定するダイアログではありません。)
IDコードは、プログラムダウンロード時に初めてユーザプログラムに設定された
値が書き込まれます。ただし、デバッグ用のモード(E8/E8a起動時のダイアログ
の上2つ、E1/E20起動時のダイアログのデバッグモード)でプログラムをダウン
ロードした場合は、ユーザプログラムのIDコードはフラッシュに反映されず常に
全FFとなります。
E1/E20はR8Cファミリの一部のマイコンのみ対応。
R32C M16C R8C IDコード1バイト目 FFFFFFE8h FFFFFFE9h FFFFFFEAh FFFFFFEBh FFFFFFECh FFFFFFEDh FFDFh IDコード2バイト目 FFFDFh FFFE3h FFFEbh FFFEFh FFFF3h FFFF7h FFE3h IDコード3バイト目 FFEbh IDコード4バイト目 FFEFh IDコード5バイト目 FFF3h IDコード6バイト目 FFF7h ※フラッシュメモリに書き込まれているIDコードが全FFの場合はデバッガが自動的にIDを照合します。 E8aの画面例: E8のV.2.09以前では Download emulator firmwareおよびDoes not emulator firmwareIDコードの設定方法
IDコードの設定方法としては、以下の三種類があります。 アセンブラ指示命令「.ID」を使用する【推奨】 例:IDコードを0x1234567890abcdに設定する場合 (1) アセンブラソースの場合 .id “#1234567890abcd” (2) Cソースの場合_asm(“ .id “”¥” #1234567890abcd¥””);
ロードモジュールコンバータLMC30の「-ID」オプションを使用する HEWのメニュー[ビルド]→[Rensas M16C Standard Tool Chain]を 選択し、右のダイアログのロードモジュールコンバータタブで設定する。 なお、M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ[M3T-NC30WA] Ver6.00 Release00以降は-IDオプションは無いのでこの設定はできません。 アセンブラで直接設定する 以下のように固定ベクタの定義の際に IDコードに該当する最上位を設定する方法 です。 org 00FFDCH
.lword int_und | (55000000h) ; UND :
IDコードの設定方法
注意1: アセンブラの「.ID」アセンブラ指示命令を使用する方法と、LMC30コマンドの「-ID」オプ ションを使用する方法では、x30,motファイルへの値の反映のされ方が異なりますので注 意してください。このため、「.ID」アセンブラ指示命令を使用することを推奨します。 なお、M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ[M3T-NC30WA] Ver6.00 Release00以降は-IDオプションは無いのでこの注意事項は該当しません。 .IDで指定した場合 x30,motファイル共に値が反映される -IDで指定した場合 motファイルのみに値が反映される この差異により、-IDオプションを使用し、かつx30ファイルを使用してフラッシュへの書き 込みを行った場合、ユーザプログラムに設定したIDコードが実チップに反映されないとい う問題が発生します。 注意2: ユーザがIDコードを指定しなかった場合、固定割り込みベクタの最上位がIDに割り当て られているため、通常ゼロとなります。また、IDコードが格納されているベクタをユーザプ ログラムで記述していない場合は、フラッシュの初期値FFとなります。 該当する固定ベクタが宣言されている場合→IDコードの該当バイトは00となる 該当する固定ベクタが宣言されていない場合→ IDコードの該当バイトはFFとなるIDコードの設定方法
注意3:コンパイラの制限事項により、アセンブラ指示命令 .id、.ofsregによる IDコード、オプション機能選択レジ スタの設定が正しく行なわれない場合があります。
M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ[M3T-NC30WA] Ver6.00 Release00以降は 以下の制限事項は改善されており該当しません。
FAQ 104698 ソースプログラムのファイル名およびディレクトリ名には、以下の制限があります。
• ディレクトリ名、ファイル名、ワークスペース名には、ASCII文字のみ使用可能です。 • 例えば漢字やカタカナは使用できません。
• M3T-NC30WA, M3T-NC308WAの V.5.40 Release 00より古いバージョンでは、空白文字を含む ディレクトリ名は使用できません。 • ファイル名に使用するピリオド(.)は一つのみ使用可能です。 • ネットワークパス名は使用できません。ドライブ名を割り当ててください。 • ショートカットは使用できません。 • "…"表記を用いて2つ以上のディレクトリを指定することはできません。 • パス指定を含めたファイル名の長さが128文字以上になるものは使用できません。 なお上記を使用した場合、以下のような現象が発生することがあります。 • アセンブラ指示命令 .id、.ofsreg、.protect、.rvector および .svector で 設定した値が正しく動作しない。 そのため、IDコードやオプション機能選択 レジスタの値を正しく設定できない等の問題が発生します。
• スタックサイズ使用量を参照する Call Walker および STKViewer が 正しく表示されない。 • アブソリュートモジュールファイルのマップ情報を参照する MAPViewer が正しく表示されない。 • 上記アセンブラ指示命令で設定した内容が、.mapファイルに表示されない。
• Can't open file"などのコンパイルエラーが発生する。
• 「問題が発生したため、lnxx.exeを終了します」のようなメッセージを 出力してリンカが異常終了する。 • 可変ベクタテーブルの自動生成機能が正しく動作しない。
IDコードがわからなくなった場合の対処方法
0x00000000000000を試してみてください。
→IDコードを設定していない場合に0x00000000000000となる場合があります。
強制イレーズ機能を持ったマイコンの場合は、強制イレーズ用
のIDコード「ALeRASE」を入力してみてください。
ASCIIを選択して 「ALeRASE」と入力 Hexを選択して IDコードを入力 入力したIDコードが 一致しなかった場合 は、再度このダイア ログが表示されま す。 その場合は、このダ イアログをキャンセ ルし、ユーザシステ ムの電源を再度入 れなおしてください。 (連続してIDを入力 しても受け付けられ ないことがありま す。)IDコードがわからなくなった場合の対処方法
最後にダウンロードしたプログラムがわかっていてアセンブラ指示命令「.ID」ま
たはロードモジュールコンバータLMC30の「-ID」オプションを使用していた場合
→このケースでは、拡張子「.ID」のIDファイルが生成されていますので、このファ
イルの内容を参照すれば、IDコードがわかります。
最後にダウンロードしたプログラムがわかっているが、どのようにIDコードを設
定したかわからない場合
→次ページ以降の方法を試してみてください。
上記のいずれでも解決しない場合は、ルネサスとしても対応できません。
シミュレータによる
IDコードの確認方法
最後にダウンロードしたプログラムがわかっている場合は、そのプログラムをシミュレータ に読み込ませてIDコードが格納されている領域を見ることで、IDがどうなっているかを確 認することができます。 (1) シミュレータセッションの追加 作成したワークスペースにシミュレータセッションを追加します。→追加後(3)へ 既にシミュレータ用のセッション (SessionM16C_R8C_Simulator,SessionR32C_100_Simulator)がある場合は、(2)に進 んでください。 セッション名を入力し、ターゲットに てシミュレータ用セッションを選択 使用している マイコンを選択シミュレータによる
IDコードの確認方法
(2) セッションの切り替え
既にシミュレータセッションがある場合は、HEWのセッションをシミュレータ用のセッション (SessionM16C_R8C_Simulator,SessionR32C_100_Simulator)に切り替えます。
シミュレータによる
IDコードの確認方法
(3) シミュレータの設定
シミュレータセッションを作成、もしくは切り替えを行うと以下のINITダイアログが
表示されます。
参照ボタンを押して対応するMCU
ファイルを選択する
MCUファイルを選択後、
OKボタンを押す
シミュレータによる
IDコードの確認方法
(4) プログラムの書き込みに、
x30ファイル使用した場合
は、以下のように、x30ファ
イルをダウンロードした後に、メモリウィンドウにて、IDコードの領域に何が書かれ
ているかを確認します。→motファイルを使用した場合は(5)を参照してください。
ダウンロード後、メモリウィンドウ
をオープンしてIDの値を確認
これはR8Cの例です。赤字の部分がIDコードとなり、こ
の例では、0x1234567890abcdとなっていることがわ
かります。
※ダウンロードの前に、IDコード領域をFF(フラッシュの初期値)にフィルしてか
らダウンロードを行ってください。
シミュレータによる
IDコードの確認方法
HEWの[デバッグ]→[デバッグの設定]を選択しデバッグの選択ダイアログを開き[追加]ボ タンを押します。 この設定はプロジェクトに保存さ れますので2回目以降は不要で す。(5) プログラムの書き込みに
motファイルを使用した場合
は、まずmotファイルを
HEWに登録する必要があります。
ダウンロードモジュール
ダイアログが開きます。
(次ページ)
シミュレータによる
IDコードの確認方法
ダウンロードモジュールダイアログにて、以下のように設定します。 フォーマット:S-Record
シミュレータによる
IDコードの確認方法
デバッグの設定ダイアログに戻り、 以下の設定を行います。
以下の設定になっていることを確認します。 R8C/Tinyの場合:
E8:R8C E8 SYSTEM E8a:R8C/E8a SYSTEM E1/E20:R8C E1/E20 SYSTEM
M16Cの場合:
E8:M16C E8 SYSTEM E8a:M16C E8a SYSTEM R32Cの場合:
E8a:R32C E8a SYSTEM
ダウンロードモジュールダイアロ グで設定したフォーマットと同じ ものを選択します。