RX631スタック領域等を保護するには?

IKUZOと申します、お伺いしたいのですが、
RX631でスタック領域を保護したいのですが、
MPUを使用するのでしょうか?
特権命令例外を使用するのでしょうか?
スタック領域というのは保護可能なんでしょうか?
スタック領域というのは簡単に壊すことができるので、
保護することができれば、安全ではないかと

Parents
  • 何がスタックを壊すと考えてますか?
    1.もともとの設定で必要なスタックサイズを取らない。
    2.ソフトエラー。
    3.プログラムが予定以外でスタックエリアを書き換えに行く。
    4.ヒープエリアが浸食してくる。
    他にありますかね?

    1ならCallWalkerでチェックして十分なサイズを取っておけば割り込みスタック領域がオーバーフローしてユーザスタック領域を壊す様なことはないと思います。
    2は特別な場所でなければ気にしなくても良いと思います。高所など宇宙線が無視できない場所なら金属ケースが必須と思います。
    3はバグだと思ってます。プログラムを直した方が良いと思います。意図的にバグは作らないので発生させないような対処はできないと思います。発生してしまった場合はデータの検証機能やフローの検証機能でリセットと思います。
    4は難しいと思います。制限するとダイナミックなデータの良さが無くなってしまうように感じます。私はマイコンでmalloc、realloc、calloc、newを使いません。ダイナミックなデータを使うならメモリー管理機能の付いたOSが必須に思えます。

    >MPUを使用するのでしょうか?
    から、IKUZOさんの欲しい答えはまったく違うような感じもします。

  • kijoさんいつもお世話になっています
    「スタックを壊す」原因はなにかということですよね
    項目で指定されましたとうりで、いろいろあると思うので、ここで何を想定してるの?
    ということだと思います、これはC言語の場合ポインターが使用できたりしますので
    うっかり他のアドレスを書き換えることはないのかということです、
    Windows等の場合使用できるアドレス範囲が決まっているので、比較的安心です、
    大きなファイルをロードしてしまったり、そんなのサイズチェックすればいいのですが、
    忘れることもありますし、プログラム品質の問題なのかもしれませんが、例外や検出の仕組み
    を入れておくことで、逆方向からプログラム品質を向上させることにもなると思いますので。
Reply
  • kijoさんいつもお世話になっています
    「スタックを壊す」原因はなにかということですよね
    項目で指定されましたとうりで、いろいろあると思うので、ここで何を想定してるの?
    ということだと思います、これはC言語の場合ポインターが使用できたりしますので
    うっかり他のアドレスを書き換えることはないのかということです、
    Windows等の場合使用できるアドレス範囲が決まっているので、比較的安心です、
    大きなファイルをロードしてしまったり、そんなのサイズチェックすればいいのですが、
    忘れることもありますし、プログラム品質の問題なのかもしれませんが、例外や検出の仕組み
    を入れておくことで、逆方向からプログラム品質を向上させることにもなると思いますので。
Children
No Data