LPC23XX にはいくつかの異なるモードがあります。各モードには独自のスタックがあります。割り込みのようなものには、とりわけ、別のモードに切り替える前に、コンテキストレジスタを(現在のモードのスタックに保存すると思います)モードを切り替えることが含まれます。
RTOS を使用しているからといって、これらのスタックの目的が変わるわけではありませんが、RTOS にはそれらに関する要件がある場合があります (CMX について調べる必要がある場合があります)。
IRQ_STACK
- 割り込み (IRQ) モード スタック。
CSTACK
- ユーザー モードとシステム モードのスタック。これは、ほとんどの場合、コード実行用の通常のスタックです。
SVC_STACK
- スーパーバイザー モード スタック。一部の命令は、SVC モードでのみ実行できます。IIRC CPU はこのモードで起動し、初期設定が完了すると終了します。
FIQ_STACK
- FIQ 割り込みモード スタック。高速割り込み (FIQ) は、IRQ 中に発生する可能性があります。これは、優先度の高い IRQ のようなものです。FIQ では、FIQ と IRQ は無効になります。
UND_STACK
未定義の命令モード スタック。
ABT_STACK
データアボートなどのためのアボートモードスタック。(アボートがトリガーされたときに実行されるようにハンドラーを設定できます。)
私は IAR に詳しくありませんが、これらがサイズである場合、uVisionでは 、 、 、、UND_Stack_Size
と同等です。または同等のものは、最初の 5 つの合計でなければなりません。SVC_Stack_Size
ABT_Stack_Size
FIQ_Stack_Size
IRQ_Stack_Size
USR_Stack_Size
ISR_Stack_Size
スタックをオーバーフローさせると、悪いことが起こることに注意してください。スタックを大きくする必要がある可能性は十分にありますが、私が言ったように、おそらく最小値を調べる必要があります。CMX に必要な値。