I am posting this question with respect to the ARM7TDMI processor. During the startup we create stacks for the different processor modes in the startup assembly code . Also during creation of the task we create a memory area for the task stacks . How are these two related ?
The startup code must allocate stacks for Supervisor mode and IRQ mode as a minimum. It is best to then call main() from Supervisor mode.
Tasks run in System mode. Each task has its own stack but this is allocated from the kernel heap when the task is created so the startup code does not need to set aside any RAM for this.