オブジェクトコンバーターによるCRC演算の結果出力機能について

使用デバイス:RL78/G13,G14

開発環境:CA78K0R

プログラムコードの領域をブート、フラッシュの2領域に分割して開発を行います。

ブート領域はスワップ機能を使わず、16KByte固定として残りをフラッシュ領域に割り当てる形としたのですが、

ブート側のオブジェクトコンバーターによるCRC演算の結果出力が、フラッシュ側に反映されていないように見えます。

多分hexファイルへの埋め込みだけで、ロードモジュールに反映されていないのが原因とは思いますが、

何か対策方法とかありますでしょうか?

Parents
  • すみません、所要でバタバタしていたので返信がかなり遅くなりました。

    みなさんご返信ありがとうございました。
    なぜ必要か、という事に関して一応回答しておきますと、

    ブート領域を固定とするわけなので、フラッシュ領域だけを書き換えて、
    ブート領域だけはずっと書きっ放しになるわけです。
    (理屈上プログラムをRAM展開すれば書き換えをできるようにはしておきますが)

    そこでROMに異常が生じた場合、フラッシュ側で異常が生じたのか、
    ブート側で異常が生じたのか、切り分けをしたいと考えたわけですが、
    フラッシュ側だけだと、どちらに異常が生じたか簡単に切り分けができない。

    フラッシュ側を何度か書き直す手順を踏めば結果的にはわかるとは思いますが、
    書き換えの手順上(誰かに作業をぶん投げるには)手間ですし、ブート側に自分で
    CRCを埋め込むのはファイル管理上の観点からよろしくありません。
    折角機能があるのだから何とかできないのかなと、考えて質問をしました。

    出来なければ出来ないで致し方ないので、問題ありません。
Reply
  • すみません、所要でバタバタしていたので返信がかなり遅くなりました。

    みなさんご返信ありがとうございました。
    なぜ必要か、という事に関して一応回答しておきますと、

    ブート領域を固定とするわけなので、フラッシュ領域だけを書き換えて、
    ブート領域だけはずっと書きっ放しになるわけです。
    (理屈上プログラムをRAM展開すれば書き換えをできるようにはしておきますが)

    そこでROMに異常が生じた場合、フラッシュ側で異常が生じたのか、
    ブート側で異常が生じたのか、切り分けをしたいと考えたわけですが、
    フラッシュ側だけだと、どちらに異常が生じたか簡単に切り分けができない。

    フラッシュ側を何度か書き直す手順を踏めば結果的にはわかるとは思いますが、
    書き換えの手順上(誰かに作業をぶん投げるには)手間ですし、ブート側に自分で
    CRCを埋め込むのはファイル管理上の観点からよろしくありません。
    折角機能があるのだから何とかできないのかなと、考えて質問をしました。

    出来なければ出来ないで致し方ないので、問題ありません。
Children
  • 豆大福 さん
    ほや です。こんにちは。

    諸々百も承知だと怒られそうですが…

    オブジェクトコンバータはロードモジュールからバイナリを抜き出してHexファイルを吐き出すもので、ロードモジュールに書き戻す事はしていないはずです。
    デバッガでロードモジュールをダウンロードしてもCRCが入っていないのはそのためでしょう。

    デバッガで見る時には、Hexを書込みまたはデバッガでダウンロードした上にシンボル情報だけをロードモジュールからダウンロードして動かす必要があります。

    また、事前に取り決めておいた固定番地にCRCが配置されるようにさえしておけば、それがフラッシュ側にあろうがブート側のアドレス範囲にあろうがやる事は変わらないと思います。