RL78デバイスで、オプション・バイトの設定を行いましたが、正しく設定値がフラッシュ・メモリに書き込まれているかを確認する方法を知りたいです。
■開発環境:e2 studio Version: 5.4.0.018
■オプション・バイトの設定方法・[プロパティ] → [Setting] → [Linker] → [デバイス]の "ユーザ・オプション・バイトを設定する" にチェック(レ)を入れ、 "ユーザ・オプション・バイト値" に設定値を入力。
Linerのオプションをみると、"-user_opt_byte=7a33e8"が入っているので、オプション・バイトの設定は正しく出来ているのだと思うのですが、、、
ちゃんとその設定値がフラッシュ・メモリに書き込まれているのかが心配になり、投稿させていただいた次第です。
ちなみに、オプション・バイトの設定値は、ビルドで出力したhexファイルで確認することが可能なのでしょうか?
初歩的な質問で申し訳ございませんが、ご教授いただけると助かります。
チョコです。
":"の次の2桁がデータ数(バイト数)で,それに続く4桁が16ビットのアドレスその次の2桁がレコードタイプです。通常は00ですが,02はセグメント(16ビットのアドレスの上位にあたる)を示します。また,01は最終レコードを示します。
レコードタイプの次が実際のデータ部になります。最初に示されたデータ数×2桁になります。最後の2桁がチェックサムになります。
最初の行は,通常はセグメントを指定し,":020000020000FC"は,オレンジのレコードタイプが02で,セグメント指定なので,データ数は02(バイト)つまり16ビットになります。
黄色で示された"0000"でセグメントは0x0000であることが分かります。最後のFCがチェックサムで,ピンクの02から8ビット単位で加算すると
02 + 00 + 00 + 02 + 00 +00 + FC = 100
となりますが8ビットからの桁上がりは無視して,下位の8ビットが00になれば正常です。
2行目の":10200000555555555555555555555555555500BE6C"は,オレンジのレコードタイプが00なので,データのレコードであることを示しています。青いアドレスが2000なので,セグメントの0000と合わせて,データが0x00002000からのデータであることが分かります。ここでは,ピンクのデータ数が10なので,0x00002000から0x0000200Fまでの16バイトのデータが”55” ”55” ・・・・・ "00" "BE"となります。
オプションバイトはこの例の1行目に続いて(セグメントが0000の状態)で例えば,下のようにアドレス部分が00C0になるはずです。
:0400C0007a33e8xxYY
チョコ様
早速のご教示ありがとうございます。大変助かります。
>:0400C0007a33e8xxYY
hexファイルを確認したのですが、黄色の部分(オプション・バイト)に相当する箇所が無いです。(青色の部分(アドレス)に相当する箇所も無いです)
ということは、オプション・バイトが正しく設定されていないという事なのだと思います。
最初の質問の趣旨から変わってきて申し訳ございません。オプション・バイトの設定方法は、以下で正しいでしょうか。
【開発環境】
・e2 studio Version: 5.4.0.018
【設定方法】・[プロジェクト] → [プロパティ] → [Setting] → [Linker] → [デバイス]の "ユーザ・オプション・バイトを設定する" にチェック(レ)を入れ、 "ユーザ・オプション・バイト値"に設定値(7a33e8)を入力
ビルドで生成されるmapファイルには、
-user_opt_byte=7A33E8
が記録されています。