2010年1月10日日曜日

スタックオーバーフロー


MPLAB C30で調子よくプログラムを作って、デバッグモードで動かして確認を繰り返していた。
すると、動かしている途中でリセットがかかるようになってしまった。

MPLABには、画像のようなメモリーの使用量が表示できる機能がある。
これを見る限り、まだまだ余裕があると思っていたのだが、どうも違うようである。

マニュアルによると、ソフトウェアでスタック領域の監視を行っているようで、デフォルトのままだとスタックオーバーフローが発生したらリセットするようになっているのだ。

ここら辺が、一般的なPC上で開発するソフトウェアと組み込み用のそれとの大きな違いだ。普段PCのメモリーがたっぷりある環境で開発することに慣れているので、いつものように関数なんかはどんどん作ってしまうのだが、これがスタックの浪費につながってしまうのだ。

スタックの消費量を抑えるように、プログラムの見直しをしなくては。

0 件のコメント:

コメントを投稿