Your question is Microcontroller Boot to main. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
Walk me through the step-by-step process of how a microcontroller boots up from reset to the execution of main().
Describe the sequence from reset release through the reset handler, stack initialization, vector-table lookup, runtime setup, and transfer to main(). Explain what startup code and the linker contribute, including how initialized and zero-initialized global data become valid in RAM.
Scope your answer to a typical ARM Cortex-M microcontroller using a C or C++ firmware image, and distinguish hardware actions from compiler-generated and user-provided startup code.