Tuesday, December 1, 2009

Usual Arm Boot Sequence

The processor always starts at the reset vector. This may depend on
the boot pins. The MMU is off when the processor is reset.

Following is the typical sequence of initialization: (assuming that
the bootloader is burned on and is running from a non-volatile memory
like NOR flash.)
1. Initialize the SDRAM controller.
2. Set up the stacks for various (ARM) processor modes. (undef, irq,
fiq ... )
3. Clear up the BSS space. (uninitialized variables)
4. Relocate the code to run from RAM (not always necessary).
5. Copy the .data section (initialized variables) to RAM.
6. Jump to C code.
7. Initialize the external bus controller for various address spaces
(chip selects). This depends on what devices you have connected to the
bus and what are their timing parameters.
8. Initialize various devices. (by calling their init functions)
9. Load the filesystem driver.
10. Search for the kernel.
11. Copy kernel to RAM. Set up command line parameters for the
kernel.
12 Jump to kernel entry point.

No comments:

Post a Comment