Hardware Reference
In-Depth Information
Chapter 2
Boot
When the power is first applied to the Raspberry Pi, or it has been reset (for more
information, see the “Reset” section in Chapter 3 of Raspberry Pi Hardware Reference
[Apress, 2014]), a boot sequence is initiated. As you will see in this chapter, it is the GPU
that actually brings up the ARM CPU.
The way that the Raspberry Pi is designed, it must be booted from firmware found on
the SD card. It cannot boot from any other source. RISC code for the GPU is provided by
the Raspberry Pi Foundation in the file bootcode.bin .
After the second-stage boot loader has been executed, it is possible that other
operating systems or ARM boot loaders such as U-Boot can be initiated.
Booting ARM Linux
Generally speaking, Linux under the ARM architecture needs a small amount of
assistance to get started. The following are some of the minimal things that the boot
loader needs to do: 25
1.
Initialize and configure memory (with MMU, cache, and DMA
disabled)
2.
Load the kernel image into memory
3.
Optionally, load an initial RAM disk image
4.
Initialize and provide boot parameters to the loaded kernel
(ATAG list)
Obtain/determine the Linux machine type ( MACH_TYPE )
5.
6.
Execute the kernel image with the correct starting register
values ( r1 = machine number, r2 points to the ATAG list)
7.
Additionally, the boot loader is expected to perform some
initialization of a serial and/or video console.
In the Raspberry Pi, this boot-loading assistance comes from the embedded GPU in
the SoC. The GPU supports a small RISC core that is able to run from initial code found
in its ROM. From this small amount of code, the GPU is able to initialize itself and the SD
card hardware. From the media on the SD card, it is able to bootstrap itself the rest of the
way. For this reason, the Raspberry Pi must always bootstrap from an SD card.
 
Search WWH ::




Custom Search