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_SizeABT_Stack_SizeFIQ_Stack_SizeIRQ_Stack_SizeUSR_Stack_SizeISR_Stack_Size
スタックをオーバーフローさせると、悪いことが起こることに注意してください。スタックを大きくする必要がある可能性は十分にありますが、私が言ったように、おそらく最小値を調べる必要があります。CMX に必要な値。