Reference : https://github.com/freebsd/crochet
PHASE ONE: Initialize the hardware
==================================
This first boot phase is common to any use of RaspberryPi, whether
you're booting Linux, FreeBSD, or any other software. It loads a
series of proprietary boot loader files that initialize the
hardware and ultimately load and run some executable.
These initial bits are loaded from the first partition on the SD card.
That partition must be formatted as FAT16 or FAT32.
* At power on, the ARM core is off and the GPU is on. SDRAM is disabled.
* GPU ROM code reads bootcode.bin from SD card and executes it on the GPU.
* bootcode.bin enables SDRAM and loads start.elf
(Note: bootcode.bin used to execute loader.bin and loader.bin then
loaded start.elf. This is no longer true since Oct 2012; loader.bin
is gone and bootcode.bin now loads start.elf directly.)
(If gpu_mem is set very low, then bootcode.bin reads start_cd.elf
instead. This is a stripped-down version which lacks the
video support; suitable for systems that run purely with serial
console.)
(Q: Does bootcode.bin read config.txt? Seems like it
must if it loads start_cd.elf depending on the memory config.)
* bootcode.bin executes start.elf on the GPU (start.elf is
the "GPU firmware" that remains resident.)
* start.elf reads config.txt and uses it to configure the hardware.
* start.elf loads an FDT machine description into memory
at a fixed address.
* Optional: start.elf reads cmdline.txt with arguments for kernel.img
The next part depends on what OS you are loading. In any
case, start.elf remains in place on the GPU. Video drivers
in the OS talk to start.elf (they don't communicate directly
with the GPU).
PHASE TWO for LINUX:
====================
If you're booting Linux, start.elf loads a file called
kernel.img containing the Linux kernel.
'IT > embedded' 카테고리의 다른 글
How to install Windows 10 IoT Core in Rpi2 (0) | 2016.04.25 |
---|---|
어셈블리 레지스터 (0) | 2016.01.26 |
어셈블리 데이터 타입/명령어 (0) | 2016.01.26 |
라즈베리 파이 부트 시퀀스(Raspberry Pi Boot Sequence) (0) | 2015.07.28 |
[어셈블리] 세그먼트(Segment)란? (0) | 2015.07.16 |