オプション・バイトの確認方法について

RL78デバイスで、オプション・バイトの設定を行いましたが、正しく設定値がフラッシュ・メモリに書き込まれているかを確認する方法を知りたいです。


■開発環境:e2 studio  Version: 5.4.0.018


■オプション・バイトの設定方法
・[プロパティ] → [Setting] → [Linker] → [デバイス]の
 "ユーザ・オプション・バイトを設定する" にチェック(レ)を入れ、
 "ユーザ・オプション・バイト値"
 に設定値を入力。

Linerのオプションをみると、"-user_opt_byte=7a33e8"が入っているので、オプション・バイトの設定は正しく出来ているのだと思うのですが、、、

ちゃんとその設定値がフラッシュ・メモリに書き込まれているのかが心配になり、投稿させていただいた次第です。

ちなみに、オプション・バイトの設定値は、ビルドで出力したhexファイルで確認することが可能なのでしょうか?

初歩的な質問で申し訳ございませんが、ご教授いただけると助かります。

  • チョコです。
    hexファイルで確認はできますよ。
    単に,アドレスがC0~C2に相当するところの値を確認すればいいだけです。
  • チョコ様
    ご回答ありがとうございます。
    hexファイルを見ると、以下のようになっています。
    :020000020000FC
    :10200000555555555555555555555555555500BE6C
    :24201000EC6D2E00ECB82C00ECE42C00FFFFFFFFEC272E00EC232D00FFFFFFFFEC6D2D00ECA02D00A5
    :04210000EC4E2F0072
       :(続く)

    >アドレスがC0~C2に相当するところの
    上記のアドレスがC0~C2に相当するところとは、具体的にどのように見ればよいでしょうか。
    初歩的な質問ですみません。
  • チョコです。

    ":"の次の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

    が記録されています。

  • チョコです。
    日ごろCS+環境を使用し,e2 studioは使ったことはありませんので,設定方法は分かりません。
    hexファイルをシミュレータにダウンロードさせて,0x000C0番地からメモリの内容を確認できませんか。これが,一番簡単な確認方法だと思います。
  • kenさん、こんにちは。NoMaYと申します。

    > ビルドで生成されるmapファイルには、
    >  -user_opt_byte=7A33E8
    > が記録されています。

    それでしたら、e2 studio上での設定は合っていると思うのです。思ったのですが、HEXファイルの先頭50行ほどを切り取って、zipファイルに固めて、添付されてはどうでしょうか?HEXファイルの見間違いがあったりしないだろうか?こちらでも確認してみると良いのではないか?と気になったからです。

  • チョコ様、NoMaY様
    どうもありがとうございます。
    テキストエディタの検索機能で、hexファイルの中身にオプションバイトの設定値(7a33e8)が含まれているかを確認いたのですが、ヒットしませんでした。もう少し設定周りを試行してみます。
  • kenさん、こんにちは。NoMaYです。

    > テキストエディタの検索機能で、hexファイルの中身にオプションバイトの設定値(7a33e8)が含まれているかを確認いたのですが、ヒットしませんでした。

    HEXファイルに限らずエディタで検索する時の「あるある」と言っては何ですが、行を跨いでいることがあるので、念のため、7a、33、e8、でそれぞれ個別に先頭50行ほどあたりまで見てはどうでしょうか?(それも、既にされているかも知れませんが、、、)

    はやり、mapファイルに-user_opt_byte=7A33E8が記録されていて(つまり、リンカオプションには正しく指定されていて)、それでもHEXファイルに出ていないというのは、すごく不思議な気がするのです、、、

    mapファイルの先頭部分(例えば以下のような部分)を見せて頂く事は出来ますか?(でも、以下はCS+での例ですが、HEXファイル(というか私はMOTファイルですが)を生成するのは、また別のビルドステップに分かれていたかも知れません。MOTファイル出力を指定している部分が無いなぁ、と今気付きました、、、)(ちなみに、私自身は、特に非公開にせず投稿しています。)

    -subcommand=DefaultBuild\freertos_sampleprog2_ccrl_c.clnk
    -Input=略(非公開)
    ...
    -Input=略(非公開)
    -SECURITY_ID=略(非公開)
    -DEVICE=C:\Renesas\CS+\CC\Device\RL78\Devicefile\DR5F104ML.DVF
    -DEBug
    -NOCOmpress
    -OPtimize=SPeed
    -OUtput=DefaultBuild\freertos_sampleprog2_ccrl_c.abs
    -LIBrary=C:\Renesas\CS+\CC\CC-RL\V1.02.00\lib\rl78em4s.lib
    -LIBrary=C:\Renesas\CS+\CC\CC-RL\V1.02.00\lib\rl78em4r.lib
    -OCDBG=85
    -DEBUG_MONITOR=7FF00-7FFFF
    -USER_OPT_BYTE=EFFFF8
    -ENTry=_start
    -LISt=DefaultBuild\freertos_sampleprog2_ccrl_c.map
    -SHow=ALL
    -AUTO_SECTION_LAYOUT
    -ROm=.data=.dataR
    -ROm=.sdata=.sdataR
    -NOMessage
    -CHange_message=Warning=2300
    -STACk
    -Total_size
    -NOLOgo
    -end

     

  • kenさん、こんにちは。NoMaYです。

    e2 studio v7.8.0で手元のプロジェクトでインテル拡張HEXファイルを生成させるようにe2 studioを設定したところ(素朴にプロジェクトのプロパティで設定したところ)、以下のようなHEXファイルが生成されました。これとkenさんの最初の数行の部分を比較して気付いたのですが、kenさんの方ではリセット番地すら出力されていないのではないですか?ひょっとして、ブート部とフラッシュ部に分けるような作りになっていて、そのフラッシュ部の方のHEXファイルではありませんか?

    手元のプロジェクトのHEXファイル(赤文字部分がユーザオプションバイト部分)

    :020000020000FC
    :80000000D800FFFF2F010000AC0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000750100002602C8010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
    :210082000000000000000000000000000000000000000000000000000000000000000A000053
    :0400C000EFFFF885D1
    :0A00C4000000000000000000000032
    :0A00CE00FFFFFFFFFFFFFFFFFFFF32
    :FF00D800CBF820FE300E51FD6102FD880C36003F30EA50EF04CC0000A747DFF93620FE3020FEEF04CC0000A747DFF94100322100EF08B31149820048EA50F643DFF44100320000EF08B3114980004820FEF643DFF4FD660CF6EFFEC1C3C5C78EFD088EFCC1AF0851C1AFEA5016AEF8BBFDC107AFEA5016ABBEF8C0BF0851C09EFC089EFDC6C4C2C061FCAFEA5016ABBEF8C0BF0851C09EFC089EFDC6C4C2C061FCC1C3C5C78EFD088EFCC1AF0851C1AFEA5016AEF8BBFDA60644000061E8FDC107AFEA5016ABBEF8C0BF0851C09EFC089EFDC6C4C2C061FCC1C3C5C78EFD708EFCC130D650FD040CC09EFC609EFDC6C4C2C061FCC1C3C5C78EFD708EFCC1C7AF46016028
       :(続く)

    kenさんのHEXファイル

    :020000020000FC
    :10200000555555555555555555555555555500BE6C
    :24201000EC6D2E00ECB82C00ECE42C00FFFFFFFFEC272E00EC232D00FFFFFFFFEC6D2D00ECA02D00A5
    :04210000EC4E2F0072
       :(続く)

     
  • kenさん、こんにちは。NoMaYです。

    その後、どうでしょうか?設定周りを試行されるとのことでしたが、進展はありましたでしょうか?