Boot process of embedded system is similar to PC from overview level, but slightly different from microscopic level.
Here's the boot process of an Android device:
PC-BIOS/BootMonitor, MBR and GRUB/LILO etc are all combined in one Boot Strap Firmware
called Bootloader
. Its init.S
initializes stacks, zeros the BSS segment and calls _main() in main.c
. The main.c
initializes hardware (clocks, board, keypad, console) and creates Linux tags which in turns loads Linux Kernel image in memory.
Linux Kernel sets up the system, loads drivers and starts running the first process init
.
The init
process involves setup of File System (mount points of /sys
etc are created at this point) and execution of init.rc
.
Execution of init.rc
: It is boot-up script which uses Android-Specific syntax. Zygot
process in init.rc brings up Dalvik VM
and starts the system server.
All these are happened before Boot Animation is displayed.
For more details of processes, check out this article: http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html