RL78のメモリ空間をポインタ経由で正しくアクセスできない箇所(アドレス)がある

はじめまして、よろしくお願いします。

早速ですがRL78のCでポインタを使用してコード領域をアクセスしようとしていますが(たとえば

チェックサムを求める等)、ところどころ、正しいデータが読めないようなので困っています。

CubeSuiteでステップ実行させると、正しい値が変数に入っているのですが、RUNさせると

間違った値が変数に入ってきます。

最初、Flashのメモリウェイト設定がよくないのかと、マニュアルを探しましたが該当箇所を見つけることが

できませんでした。

漠然とした質問ですが、お答えいただけないでしょうか?

ちなみにRL78L13の128k版ですので、ポインタはFAR宣言しています。

よろしくお願いします。

Parents Reply Children
  • ありがとうございます。早速見てみましたが、下位2バイトしか加算されない等知らなかったことがあり、勉強になりました。しかし今回伺いたいのは、例えば、ポインタ *pointer が0x1000 を指しているとして、0x1000のデータは0x88が書かれているとして、 work = *pointer;を実行したらwork に0x88以外の物が入る、というものなのです。その前後は正しく読めたりしています。
  • > 例えば、ポインタ *pointer が0x1000 を指しているとして、0x1000のデータは0x88が書かれているとして、 work = *pointer;を実行したらwork に0x88以外の物が入る、というものなのです。

    ブレークポイントを設定してるとそんな感じの動作になりますね。
  • うおちゃんさん

    RL78をE1エミュレーターでデバッグすると00H番地などOCD予約領域にデバッギング・モニタが配置されるのでうおちゃんさんの指摘通りの現象が発生します。
    そのためデバッギングモニタを配置しない状態でデバッグしないとチェックサムがずれてしまいます。

    「RL78 デバッグ・モニタなしで、オンチップ・デバッグ」が参考になるかと思います。

    PS
    ソフトブレークポイントについてはFujitaさんのおっしゃる通りですね。

  • 丁寧な説明ありがとうございます。皆さんのレスポンスの速さに感激しております。