Von eLinux.org:
http://elinux.org/Panda_How_to_MLO_%26_u-boot
Der Bootloader der ersten Stufe läuft vom Einschalten direkt auf der Platine. Ich kenne den Namen dieses Bootloaders nicht (aus dem offiziellen TI-Wiki heißt er Boot Rom). Dieser Bootloader initialisiert eine minimale Menge an CPU- und Board-Hardware, greift dann auf die erste Partition der SD-Karte zu (die im FAT-Format vorliegen muss), lädt eine Datei namens „MLO“ und führt sie aus. "MLO" ist der Bootloader der zweiten Stufe.
Der Bootloader der zweiten Stufe kann anscheinend entweder der X-Loader oder SPL sein. Dieser Bootloader liest anscheinend auch nur die erste Partition der SD-Karte, lädt eine Datei namens "u-boot.bin" und führt sie aus. "u-boot.bin" ist der Bootloader der dritten Stufe.
Der Bootloader der dritten Stufe ist U-boot, ein beliebter Bootloader für viele verschiedene Embedded-Boards und -Produkte. Dieser Bootloader verfügt über viele verschiedene Funktionen, darunter eine interaktive Shell, Variablen, die Möglichkeit, auf die SD-Karte zuzugreifen und deren Inhalt anzuzeigen usw. Was als nächstes passiert, hängt von der Version von U-Boot ab, die Sie für das Panda-Board haben, und davon, wie es konfiguriert ist. In einer sehr einfachen Konfiguration sucht U-Boot im Stammverzeichnis der ersten Partition der SD-Karte (die wiederum als FAT-Partition formatiert sein muss) nach der Datei „uImage“ und führt diese aus. Das ist der Linux-Kernel. U-Boot übergibt dem Kernel ein Befehlszeilenargument. Je nachdem, wie der Kernel konfiguriert ist, kann er die Befehlszeile von U-Boot akzeptieren oder eine verwenden, die beim Erstellen hineinkompiliert wurde.
Dies ist eine "Panda-Board-Sache", die nicht unbedingt auf Linux im Allgemeinen zutrifft.
Allerdings die meisten alle Systeme haben eine Art "mehrstufiges" Booten wie das obige. Wenn Sie beispielsweise einen PC mit Windows starten, sehen Sie:
- BIOS-Start
- Bootsektor wird von Festplatte oder USB geladen; oder ein PXE-Boot-Record aus dem Netzwerk gelesen wird
- Der Windows-Kernel startet (das Zeug, das Sie vor/während des "Begrüßungsbildschirms" sehen)
- Schließlich startet "Windows" selbst
Es ist also weder "ineffizient" noch ungewöhnlich.
PS:Dieser Link enthält auch eine gute Beschreibung der Boot-Ladesequenz:
- http://omappedia.org/wiki/Bootloader_Project
PPS:"MLO" steht für "Mmc LOader"
Wenn das Board hochfährt, muss die Memory Management Unit (MMU) noch eingerichtet werden, bevor die CPU mit der Verwendung des SDRAM beginnen kann. Das SoC verfügt über 56 KB SRAM, die zu diesem Zeitpunkt verwendet werden können, aber es ist zu klein, um von u-boot ausgeführt zu werden. Der zusätzliche Schritt besteht darin, dass Code, der vom SRAM ausgeführt wird, geladen und u-boot gestartet wird.