was ist die Verwendung von SPL (Secondary Program Loader)

8

Ich bin verwirrt, meine Konzepte bezüglich dieser drei Fragen zu klären

  1. Warum brauchen wir einen sekundären Programmlader?

  2. in welchem ​​Speicher wird es geladen und verschoben?

  3. Was ist der Unterschied zwischen systeminternem Speicher und RAM?

soweit ich über das Lesen von Links verstehe, ist .. SPL ist erforderlich, wenn der interne Speicher des Systems den Uboot nicht vollständig halten kann. Daher müssen wir den Speicher mit einem minimalen Code namens SPL initialisieren. Versetzt sich SPL tatsächlich oder ist es nur ein Boot, das sich selbst bezieht?

    
theadnangondal 06.07.2015, 11:36
quelle

2 Antworten

24

Lassen Sie mich das anhand der OMAP -Plattform erläutern (nur um einen tatsächlichen Hintergrund zu liefern, anstatt nur Theorie oder Allgemeingültigkeit) Wissen). Werfen Sie einen Blick auf einige Fakten für Anfänger:

  • Auf OMAP-basierten Plattformen ist das erste Programm nach dem Einschalten ROM-Code (was ähnlich ist BIOS auf PC).
  • ROM-Code sucht nach dem Bootloader (der eine Datei namens "MLO" sein muss und sich auf der aktiven ersten Partition von MMC befindet, die als FAT12 / 16/32 formatiert sein muss, aber das sind Details)
  • ROM-Code kopiert den Inhalt dieser "MLO" -Datei nach statischem RAM (weil regulärer RAM noch nicht initialisiert ist) ). Das nächste Bild zeigt das SRAM-Speicherlayout für OMAP4460 SoC :

  • SRAM-Speicher ist begrenzt (aus physikalischen Gründen), also haben wir nur 48 KiB für Bootloader. Gewöhnlich ist die normale Bootloader-Binärdatei (z. B. U-Boot) größer als diese. Daher müssen wir einen zusätzlichen Bootloader erstellen, der den regulären Arbeitsspeicher initialisiert und den normalen Bootloader von MMC in den Arbeitsspeicher kopiert und dann zur Ausführung dieses regulären Bootloaders springt. Dieser zusätzliche Bootloader wird normalerweise als Bootloader der ersten Stufe bezeichnet.

Dieser Bootloader der ersten Stufe ist u-boot SPL ; und Bootloader der zweiten Stufe ist regulärer U-Boot . Um es klar zu stellen: SPL steht für Secondary Program Loader . Das bedeutet, dass der ROM-Code das erste ist, das ein anderes Programm lädt (und ausführt), und SPL ist das zweite , das ein anderes Programm lädt (und ausführt). Also normalerweise Boot-Reihenfolge ist die nächste: ROM-Code - & gt; SPL - & gt; u-boot - & gt; Kernel. Und tatsächlich ist es dem PC-Boot sehr ähnlich, nämlich: BIOS - & gt; MBR - & gt; GRUB - & gt; Kernel.

AKTUALISIEREN

Um Dinge absolut klar zu machen, hier ist die Tabelle, die alle Stufen der Bootsequenz beschreibt (um mögliche Unsicherheiten in der verwendeten Terminologie zu klären):

%Vor%

Also verwende ich Bootloader als Synonym für boot und Program Loader als gebräuchlichen Begriff für jedes Programm, das andere lädt Programm.

Siehe auch:

[1] SPL (bei Wikipedia)

[2] TPL: SPL lädt SPL - Denx

[3] Bootloader (im OSDev Wiki)

    
Sam Protsenko 06.07.2015, 18:23
quelle
0

Es gibt keinen theoretischen Bedarf für einen sekundären Programmlader. Es gibt jedoch oft pragmatische Gründe dafür. Zwei von meinem Kopf. Erstens, Modularität und einfache Entwicklung.

Zweitens kann der Hardware-Startvorgang zu restriktiv sein. Es kann davon ausgehen, dass sich der Buchlader an einer bestimmten Position befindet, an der nicht genügend Platz zum Speichern des gesamten Startvorgangs vorhanden ist. Der primäre Loader führt alle erforderlichen Schritte aus, um den vollständigen Buchprozess (SPL) zu laden. Der primäre Lader kann beispielsweise im ROM mit Speicherbeschränkungen gespeichert sein.

    
user3344003 06.07.2015 17:25
quelle