it-swarm.com.de

was ist die Verwendung von SPL (Secondary Program Loader)

Ich bin verwirrt, wenn ich meine Konzepte bezüglich dieser drei Fragen kläre

  1. warum brauchen wir einen sekundären Programmlader? 

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

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

soweit ich unter Leseverbindungen verstehe ist .. SPL ist erforderlich, wenn der systeminterne Speicher den uboot nicht vollständig halten kann. Daher müssen wir den Speicher mit einem minimalen Code namens SPL initialisieren. Verschiebt sich die SPL tatsächlich oder bezieht sie sich nur auf uboot?

15
theadnangondal

Lassen Sie mich dies am Beispiel von OMAP platform erklären (nur um etwas Hintergrundwissen zu vermitteln und nicht nur Theorie oder allgemeines Wissen). Werfen Sie einen Blick auf einige Fakten für Anfänger:

  • Auf OMAP-basierten Plattformen lautet das erste Programm, das nach dem Einschalten ausgeführt wird, ROM code (das dem BIOS auf dem PC ähnelt).
  • Der ROM-Code sucht nach Bootloader (muss eine Datei mit dem Namen "MLO" sein und sich auf der aktiven ersten Partition der MMC befinden. Diese muss als FAT12/16/32 formatiert sein.
  • Der ROM-Code kopiert den Inhalt dieser "MLO" -Datei nach static RAM (da das reguläre RAM noch nicht initialisiert ist). Das nächste Bild zeigt das SRAM-Speicherlayout für OMAP4460 SoC :

SRAM memory layout on OMAP4460

  • Der SRAM-Speicher ist begrenzt (aus physikalischen Gründen), so dass wir nur 48 KiB für den Bootloader haben. Normalerweise ist ein regulärer Bootloader (z. B. U-Boot) größer als dieser Wert. Wir müssen also einen zusätzlichen Bootloader erstellen, der den regulären RAM initialisiert und den regulären Bootloader von MMC in den RAM-Speicher kopiert und diesen regulären Bootloader dann ausführt. Dieser zusätzliche Bootloader wird normalerweise als First-Stage-Bootloader bezeichnet (im zweistufigen Bootloader-Szenario).

Also ist dieser First-Stage Bootloader U-Boot SPL ; und Second-Stage-Bootloader ist regulärer U-Boot (oder U-Boot - richtig ). Um es klar zu sagen: SPL steht für Secondary Program Loader. Was bedeutet, dass ROM code das erste ist, das ein anderes Programm lädt (und ausführt), und SPL das zweite Ding , das ein anderes Programm lädt (und ausführt) . Daher ist normalerweise die Bootsequenz die nächste: ROM code -> SPL -> u-boot -> Kernel. Und eigentlich ist es dem PC-Boot sehr ähnlich, das heißt: BIOS -> MBR -> GRUB -> Kernel.

UPDATE

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

+--------+----------------+----------------+----------+
| Boot   | Terminology #1 | Terminology #2 | Actual   |
| stage  |                |                | program  |
| number |                |                | name     |
+--------+----------------+----------------+----------+
| 1      |  Primary       |  -             | ROM code |
|        |  Program       |                |          |
|        |  Loader        |                |          |
|        |                |                |          |
| 2      |  Secondary     |  1st stage     | u-boot   |
|        |  Program       |  bootloader    | SPL      |
|        |  Loader (SPL)  |                |          |
|        |                |                |          |
| 3      |  -             |  2nd stage     | u-boot   |
|        |                |  bootloader    |          |
|        |                |                |          |
| 4      |  -             |  -             | kernel   |
|        |                |                |          |
+--------+----------------+----------------+----------+

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

Siehe auch:

[1] SPL (bei Wikipedia)

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

[3] Bootloader (bei OSDev Wiki)

[4] Boot ROM vs Bootloader

42
Sam Protsenko

Es besteht kein theoretischer 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 ist der Hardware-Startvorgang möglicherweise zu restriktiv. Es kann davon ausgegangen werden, dass sich der Book Loader an einem bestimmten Ort befindet, an dem nicht genügend Speicherplatz zum Speichern des gesamten Startvorgangs vorhanden ist. Der primäre Lader führt alles aus, was zum Laden des vollständigen Buchprozesses (SPL) erforderlich ist. Der primäre Lader kann zum Beispiel in ROM mit Speicherbeschränkungen gespeichert werden.

1
user3344003