Explain the boot sequence of an ARM-based microcontroller from power-on reset to the entry of the main() function.