アプリ版:「スタンプのみでお礼する」機能のリリースについて

マイコンにて組み込みOSでスタックオーバーフローするとその振る舞いはどうなるのでしょうか?

SH2を使っています。
組み込みOSはNorti4を使っています。
タスク作成したときにスタック容量を指定しています。
タスクはひとつです。

タスクのスタックより前の領域には定義メモリ(グローバルメモリ)の領域になっています。
タスクのスタックより後の領域は大きな領域(数Kbyte)ほどあいています。

この場合にタスクのある関数の動作中にスタックオーバーフローが起きた場合、どうなるのでしょうか?

思いついた選択肢は以下のとおりです。

1.定義メモリ(グローバルメモリ)の領域をオーバーフロー分書き換えて、その関数が終了したら呼び出し元の関数に戻る。
その後、書き換えられた定義メモリ(グローバルメモリ)による影響で処理によってはマイコンが意図しない動作になる。
2.スタックオーバーフローした時点でアドレス例外などの例外処理に飛んでしまう。
3.スタックオーバーフローした時点で、暴走し戻れなくなる。
4.その以外

どんなことが考えられますでしょうか?

A 回答 (1件)

メモリ保護されていれば2、そうでなければ1が普通。

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!