初期セルフテストでROMのサム検査

初期セルフテストでROMのサム検査はされていますか?

顧客から初期セルフテストでROMのサム検査をするように要求がありますが、本当に必要ですか?

  • 電源立ち上げから早く動作させたいシステムが多いのでROMもRAMもチェックしないです。とは言っても結構のんびりしたコードを書いてます。

    SHよりも新しいRL78は機能安全が考慮されてます。チェックサムではありませんがフラッシュエリアのチェックのための機能が搭載されていることがホームページに記載されてます。欧州家電安全規格(IEC60730)は多少目を通したのですが、具体的な要求が記載されてません。検討委員会などのペーパを探れば一般的なフラッシュメモリに予想される不具合が分かると思います。ルネサス様は検討委員会メンバーのようですから、具体的に営業様経由で聞いてみるのが良いと思います。

  • kijo さん

    情報ありがとうございます、なるほど「欧州家電安全規格(IEC60730)」なにか難しくなって来そうですね、対応しているのがRL78系だけなのでしょうか?今少し手間なのが製品としてROMに書き込む時いちいち内部でSUM計算させてそれをまたどこかに保存することをしています、なにかコンパイラで自動的に付与されるような方法はないものでしょうか?

  • チョコです。

    RL78は、対応したハードウェアを内蔵していますが、セットとして対応できれば

    いいだけのはずです。

    コンパイラで対応するというよりは、ライブラリで対応になるのではないかと思います。

    ライブラリを探してみてください。

  • 欧州家電安全規格(IEC60730)あるいはそれを考慮したルネサスでは、ROMデータ化けチェックが安全に必要と考えているということです。なぜ、ROMデータ化けチェックが必要なのかはいろいろとインターネットを検索したのですが答えは得られてません。私も非常に興味があります。

    また、チョコさんの「セットとして対応できればいいだけのはずです。」に同感ですが、RL78はSIL3とかアピールされてしまうと、SHでソフト(ライブラリ)のROMデータのチェックを入れても欧州安全規格を満足できないような「だけ」ではないと感じてしまいます。

  • チョコ さん

    「セットとして対応」というのはハードウェア的に確認する機能が備わっていて、ライブラリでそれを呼び出して使用するということですか?

  • kijo さん

    欧州家電安全規格(IEC60730)はまた勉強しておきます、難しそうですね、私は簡単に考えていまして、プログラムの先頭でSUMテストを行い内部のデータが実行するに値しない場合(データ化け)であればスリープモードに移行する等ですが、これを簡単に実現するため、コンパイル終了後のイベントとしてバイナリオブジェクトの最後に4バイトのSUMを追加するようなソフトを作成してそれを実行させるようにすれば良いと思いましたが、VC++等では統合開発環境に自由にコンパイル前、後にイベント追加できましたがHEWではありましたでしょうか?

  • チョコです。

    IKUZOさん。

    機能によっては、ハードが必要なものもあります。

    ただ、ROMのチェックでは、ソフトだけでも可能です。専用のハードが

    あれば、高速にできますが。

  • チョコ さん

    ありがとうございます、良くわかりました。

  • 「バイナリオブジェクトの最後に4バイトのSUM」ですがよく考えたら、バイナリオブジェクト出力等あまり使用しませんね、あまり有効な方法ではないようです。SUMテストと言っても0番地から0x7FFFのようになっている場合は簡単に実現はできるのですが、0x200000~0x280000等これどうしたらいいの?0x200000~0x280000までですよということになるとSタイプから難しい?

  • 「バイナリオブジェクトの最後に4バイトのSUM」ですが、実際にリンカをバイナリ出力に設定してみたら、キャッシュ領域などの高いアドレスは無視して実行ROM領域のみ出力してくれるようですので、外付けSUMも可能と思いました、ただコンパイル終了後のイベント追加の項目がHEW自体に無いようですので別の方法を探すのが必要かと思います。

    私の間違いでした、Sフォーマットでは214KByteに対してバイナリでは524.293KBでした。