ok, first, several links:
- Theo's no: Wow. Dream on
- The most important thing you should know is that the RaspberryPi is a strange beast
- I do not normally zero out .bss or use .data so … dont assume x and y are zero when your program starts
- WARNING: This page is not suitable for the average user. - too many disclamers of this kind - gona go buy another board"
- In order to understand the software compoonents in the RPi, you should first understandhow it boots up.
As mentioned elsewhere, "ARM CPU is the not main CPU - it's only a co-processor to the VideoCore GPU. When the RaspberryPi starts, a GPU blob is read from the SD card to the L2 cache and executed. This code then brings up all the important peripherals (RAM, clocks etc) and starts the ARM CPU. Then the 2nd stage bootloader or some operating system itself can be run on ARM CPU."
- GPU Core
- first stage bootloader, which is stored in ROM on the SoC
loader.binmerged) - the 2nd stage bootloader
start.elf- the main GPU code
config.txt- file is read by the GPU before the ARM core is initialised
fixup.dat- is used to configure the SDRAM partition between the GPU and the CPU
cmdline.txt- file for passing arguments to the Linux kernel
kernel.img- The OS kernel to load on the ARM processor
For board to boot you need an SD-card with FAT32 partition, and files mentioned above placed in a root of this partition. Binaries are available here in boot folder. Actually there are more of them there:
start_cd.elf- cut-down versions of the above files, used when GPU memory is set to 16 MB, which in result disables some GPU features
start_x.elf- testing versions of the above files, which enable potentially unstable/not-fully-tested/hacky functionality
config.txt and cmdline.txt are just a text files, you can edit them
according to docummentation.
kernel.img is usually a linux kernel - the first thing to run on ARM CPU, but it can be an additional
chained boot loader like u-boot, and for our experiments we will use the later.