1

FreeRTOS を使用して ATMega323_WinAVR にプロデューサー/コンシューマー アルゴリズムを実装しようとしています。デバッグ時に AVR Studio 4 で次のエラーが発生します。

AVR Simulator: Excessive stack overflow, stop sim

スタック ポインターは次の行で停止します。

static void prvCopyDataToQueue (
  xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition){

このエラーが表示されるのはなぜですか?

ありがとう!

4

2 に答える 2

1

プログラムをビルドするとき、リンカは RAM 内のどこにスタックを配置するかを定義し、デバッガはスタックがそこにあることを期待します。FreeRTOS スケジューラを実行している場合、各タスクには作成時にスタックが割り当てられるため、スタックは FreeRTOS ヒープから取得されます。デバッガーは、タスクがスタックをオーバーフローしたかどうかを知る方法がありません。これは、スタックがどこにあるかを認識せず、FreeRTOS を認識していないためです。

デバッガーでそのチェックをオフにしてから、FreeRTOS でスタック チェックをオンにすることをお勧めします (スタック オーバーフローをチェックしたい場合は、開発中にのみお勧めします)。

よろしく。

于 2011-11-18T10:30:17.540 に答える
0

このスレッドを見てください。シミュレーターのスタック ウォッチャーに問題がある可能性があります。

于 2011-11-18T09:59:21.320 に答える