Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>LPC23XX have a few different modes. Each mode has its own stack. Things like interrupts involve switching mode by saving the context registers (to the current mode's stack, I believe) before switching to a different mode, among other things.</p> <p>That you are using an RTOS doesn't change the purpose of these stacks, but sometimes RTOSes may have requirements about them (you might want to look this up for CMX).</p> <ul> <li><code>IRQ_STACK</code> - Interrupt (IRQ) mode stack.</li> <li><code>CSTACK</code> - User and system modes stack. This is your regular stack for code execution most of the time.</li> <li><code>SVC_STACK</code> - Supervisor mode stack. Some instructions can only be run in SVC mode. IIRC the CPU starts in this mode and drops out of it after the initial setup has been done.</li> <li><code>FIQ_STACK</code> - FIQ interrupt mode stack. Fast interrupts (FIQs) can occur during an IRQ - they're like a higher priority IRQ. FIQs and IRQs are disabled when in a FIQ.</li> <li><code>UND_STACK</code> Undefined instruction mode stack.</li> <li><code>ABT_STACK</code> Abort mode stack, for data aborts and so on. (You can set up handlers to run when an abort is triggered.)</li> </ul> <p>I'm not familiar with IAR, but if these are sizes then they are equivalent to <code>UND_Stack_Size</code>, <code>SVC_Stack_Size</code>, <code>ABT_Stack_Size</code>, <code>FIQ_Stack_Size</code>, <code>IRQ_Stack_Size</code>, and <code>USR_Stack_Size</code> in uVision. <code>ISR_Stack_Size</code> or equivalent should be the sum of the first five.</p> <p>Remember, overflowing the stack(s) makes bad things happen. You quite possibly need to make your stack(s) larger, but like I said, you probably need to look up the min. required values for CMX.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload