The boot loader's primary function is to initialize enough of the hardware and CPU to allow the hardware to communicate with the development environment for downloading a Windows CE-based run-time image.
A boot loader manages the boot process of the target device by initializing the target device, downloading the run-time image, and booting the run-time image on the target device. the boot loader is a utility that is an integral part of the OEM device development process. in some cases, it is also encoded in the final OEM product. the general purpose of the boot loader is to place the run-time image into memory, and then jump to the OS startup routine. the boot loader can obtain the run-time image in a number of different ways, including loading it over a cabled connection, such as Ethernet, a universal serial bus (USB ), or serial connection. the boot loader also loads the OS from a local storage device, such as Compact Flash, or a hard disk. the boot loader might store the run-time image in RAM or in nonvolatile storage, such as flash memory, electrically erasable programmable read only memory (EEPROM ), or some other storage device for later use.
Only couple ideas about Boot loader booting sequence.
1. Initialise the read and write clock speed for the SDRAM to from 95 MHz to 115 MHz. I don't know why 95 MHz to 115 MHz.
2. Initialise the read and write clock speed for the Flash memory to between 9 MHz and 12 MHz. I got no idea why 9 MHz and 12 MHz.
3. Initialise the QVGA display.
4. Initialise the back-light of the display.
5. initialise microprocessor FFUART (baud rate, data bits, stop bit and so forth ). (FFUART: This serial port is what developers can connect to obtain console access to the Gumstix. another module which uses this shared serial port is the VDIP module which provides a serial to usb host functionality .)
FFUART
The FFUART (for Full-Function UART) serves as the default Linux console on the Gumstix, and supports rates of up to 230kbaud. It is exposed on nearly all 60-pin expansion boards.
The Gumstix Linux kernel maps the FFUART to/dev/ttyS0.
Despite its name, the Gumstix does not use the FFUART as a "full-function" serial port by default: when used as the system console, hardware flow control is disabled.
On all of the boards which have USB, the ffuart cts and RTS signals are currently used as part of the USB hardware. the RTS is used to tell the host that it's ready (cable plugged in), and the CTS is used to detect cable insertion.
Ffuart gpio configuration:
Echo "AF1 in">/proc/gpio/GPIO34
Echo "AF2 out">/proc/gpio/GPIO39
Refer to http://docwiki.gumstix.org/index.php/UART_Schematics
UART is a type of "asynchronous transmitter/transmitter", a piece of computer hardware that translates data between parallel and serial forms. UARTs are commonly used in conjunction with other communication standards such as EIA RS-232.
As of 2008, UARTs are commonly used with RS-232 for embedded systems communications. it is useful to communicate between microcontrollers and also with PCs. extends chips provide UART functionality in silicon, and low-cost chips exist to convert logic level signals (such as TTL voltages) to RS-232 level signals.
Refer to http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter
I think FFUART is serial port for debugging. And it can be communicated with a host PC.
6. Initialise I2C controller.
7. Initialise the peripherals such as keyboard.
8. If a sequence of key presses is detected, shall change booting mode or execute a special operation.
9. Verify and validate the integrity of System Software image.
10. Copy the System Software image from flash memory to the SDRAM.
11. Pass control to the System Software image.