When the processor is reset then hardware sets the pc to 0x0000 and starts executing by fetching the instruction at 0x0000. When an undefined instruction is executed or tries to be executed the hardware responds by setting the pc to 0x0004 and starts executing the instruction at 0x0004. irq interrupt, the hardware finishes the instruction it is executing starts executing the instruction at address 0x0018.
https://stackoverflow.com/questions/21312963/arm-bootloader-interrupt-vector-table-understanding
Unlike x86/PC systems, ARM systems typically don’t have a BIOS. This means nothing initializes the hardware, reads the first sector of the disk, or finds where to execute code from.
ARM SoCs don’t have the equivalent of a user-configurable BIOS/UEFI. The boot process and how the SoC initializes its different buses and devices is entirely up to the vendor and is often a proprietary solution with almost no public documentation. The boot process may not even start with the ARM cores themselves as most platforms use ARM’s Trust Zone or a vendor equivalent to run the first few initialization processes, some vendors like Broadcom even start the boot process in the GPU (VideoCore) itself.
The VideoCore GPU is responsible for booting the Broadcom BCM283x (raspberry) system on a chip (SoC), contained on the Raspberry Pi. The SoC will boot up with its main ARM processor held in reset.- Discussion about this weird boot choice:
- sargx:
pq a GPU q faz o boot no raspberry?????
- racerxdl:
é que o SoC do raspberry é um SoC media
dá pra ele operar sem o ARM rodar
pra por exemplo pegar um sinal CSI e jogar numa tela
ou coisa do tipo
- sargx:
ahhh entendihttps://microchipdeveloper.com/32mpu:boot-sama5d2-series#toc4
https://www.design-reuse.com/articles/38128/method-for-booting-arm-based-multi-core-socs.html