依頼内容
ソースコードは提供されているため、既存製品のE2PROMに書かれた値を確認するよう依頼され、対応することになった。
発生した問題
E8a エミュレータを接続した際、IDコード確認画面が表示され、作業が進められなくなった。
初期対応
・依頼元にIDコードを確認する。
・プログラムを書いた担当者にIDコードを確認する。
結論から言うと、誰に聞いても昔のことで不明でした 。
初期値の入力
資料を調査した結果、ID未設定時の初期値が FFFFFFFFFFFFFF
であることが判明。
しかし、初期値として FFFFFFFFFFFFFF
を入力しても受け付けられなかった。
Flash Development Toolkitでの接続確認
Flash Development Toolkitを使用し、Motファイルを読み込んだところ、メッセージウィンドウ欄にIDコードが表示されることを確認した。

表示されているIDコードの”00000000000000“を入力して、エミュレータは無事起動しました。
原因調査
ルネサスの資料
下記ルネサスのスタートアッププログラムの説明を見ると、3ページ目の”4.1固定ベクタテーブルの設定”と 8ページ目の”4.10 IDコード書き込み”にIDコードが記載されている。
High-performance Embedded Workshop スタートアッププログラムの説明
また、E8aエミュレータの使用上の注意事項の38ページには”表7.6 IDコード格納領域”が記載されている。
FFFDFh IDコード 1バイト目
FFFE3h IDコード 2バイト目
FFFEBh IDコード 3バイト目
FFFEFh IDコード 4バイト目
FFFF3h IDコード 5バイト目
FFFF7h IDコード 6バイト目
FFFFBh IDコード 7バイト目
E8aエミュレータの使用上の注意事項
実際のプロジェクト
今回依頼されたソースには”fvector.c“がない。
Flash Development Toolkitでmotファイルを読み込むと、該当領域は”0x00“になっている

新規のプロジェクト作成で試してみる
・作成方法1
プロジェクトタイプで”Application”を選択した場合は、”fvector.c“は作成されず、代わりに”sect30.inc“にIDコード”FFFFFFFFFFFFFF“が記載される。

;---------------------------------
; fixed vector section
;---------------------------------
.section fvector,ROMDATA
.org 0fffdcH
UDI: .lword dummy_int
OVER_FLOW: .lword dummy_int
BRKI: .lword dummy_int
ADDRESS_MATCH:.lword dummy_int
SINGLE_STEP: .lword dummy_int
WDT: .lword dummy_int
DBC: .lword dummy_int
NMI: .lword dummy_int
RESET: .lword start
;=================================
; ID code & ROM code protect
;=================================
; ID code check function
.id "#FFFFFFFFFFFFFF"
・作成方法2
プロジェクトタイプで”c source startup Application”を選択した場合は、”fvector.c“は作成され、”fvector.c“にIDコードが記載される。

#pragma sectaddress fvector,ROMDATA 0xfffdc
#pragma interrupt/v _dummy_int //udi
#pragma interrupt/v _dummy_int //over_flow
#pragma interrupt/v _dummy_int //brki
#pragma interrupt/v _dummy_int //address_match
#pragma interrupt/v _dummy_int //single_step
#pragma interrupt/v _dummy_int //wdt
#pragma interrupt/v _dummy_int //dbc
#pragma interrupt/v _dummy_int //nmi
#pragma interrupt/v start
_asm(" .id ""\"#FFFFFFFFFFFFFF\"");
・今回のソースと比較
;=================================
; fixed vector section
;=================================
;----- fuction define (user) ---
.glb _int_WDT
;---------------------------------
.section fvector,ROMDATA
.org 0fffdcH
UDI: .lword dummy_int
OVER_FLOW: .lword dummy_int
BRKI: .lword dummy_int
ADDRESS_MATCH: .lword dummy_int
SINGLE_STEP: .lword dummy_int
WDT: .lword dummy_int
DBC: .lword dummy_int
NMI: .lword dummy_int
; .org 0ffffcH
RESET:
.lword start
;
; ID code check function
; .id "CodeChk"
“.id CodeCheck“の記載がないため、IDコードが”00000000000000”となっていると思われる。
コ ード生成日が2008年10月のため、当時はIDコードが自動生成されなかったではないかと思われる。
.id “#FFFFFFFFFFFFFF“を記載しコンパイルしたMotファイルを、Flash Development Toolkitで読み込むとIDコードが”FFFFFFFFFFFFFF“なりました。
コメント