FreeRTOSのxSemaphoreGiveFromISR
関数とそれに付随するportEND_SWITCHING_ISR
マクロを使用して、I2Cトランザクションの終了を処理する割り込み内にセマフォを渡そうとしています。FreeRTOSのISRからセマフォを与えた後にスタックオーバーフローが発生する
私がするたびに、私は自分のプログラムのアプリケーションスタックオーバーフローフック機能に終わります。実際のバージョンからの唯一の変更はISRにこの行を追加することでした。スタックのサイズを8192
から16384
に倍増しましたが、これは役に立ちませんでした。
誰かが私をつかまえていることについての考えを持っていますか?
私configCHECK_FOR_STACK_OVERFLOW
値は、あなたが割り込みRTOS configKERNEL_INTERRUPT_PRIORITYよりも優先度が同じレベルで実行されていることを確認することをお勧めします。1.
どのプロセッサを使用していますか? ISRに使用される別個のスタック、または1つの共通スタックがありますか? ISRスタックがある場合は、十分な大きさですか? – TJD
@TJD Cypress PSoC5デバイス内のCortex M3です。別のISRスタックがある場合は良い質問ですが、わかりません。私はまた、それが設定されている場合、それを設定する方法も知らない。 –
私がドキュメントを理解していれば、スケジューラが起動するまではメイン関数を実行するためのスタックが1つあります。これは割り込み処理用でもあります。各タスクには独自のスタックがあります。メインスタックのサイズと、すべてのタスクスタックのサイズに使用していた定数の両方を2倍にしましたが、何の効果もありませんでした。 –