jakie jest zastosowanie SPL (secondary program loader)

Jestem zdezorientowany w wyjaśnieniu moich koncepcji dotyczących tych trzech pytań

  1. Po co nam dodatkowy program ładujący ?

  2. W której pamięci zostanie załadowany i przeniesiony ?

  3. Jaka jest różnica między pamięcią wewnętrzną systemu a pamięcią RAM ?

Z tego co rozumiem przez czytanie linków jest .. SPL jest wymagane, gdy wewnętrzna pamięć systemu nie może utrzymać uboot całkowicie, więc musimy zainicjować pamięć za pomocą minimalnego kawałka o kodzie SPL . Czy SPL faktycznie się przenosi czy tylko uboot się wiąże?

Author: theadnangondal, 2015-07-06

2 answers

Pozwól, że wyjaśnię to za pomocą platformy OMAP jako przykład (tylko po to, aby podać jakieś rzeczywiste tło, a nie tylko teorię lub powszechną wiedzę). Spójrz na kilka faktów na początek:

  • na platformach OMAP pierwszym programem uruchamianym po włączeniu zasilania jest kod ROM (podobny do BIOSu na PC).
  • kod ROM szuka bootloadera (który musi być plikiem o nazwie "MLO" i znajduje się na aktywnej pierwszej partycji MMC, który musi być sformatowany jako FAT12/16/32, -- ale to Szczegóły)
  • kod ROM kopiuje zawartość tego pliku " MLO " do statycznej pamięci RAM (ponieważ zwykła PAMIĘĆ RAM nie jest jeszcze zainicjalizowana). Następne zdjęcie pokazuje układ pamięci SRAM dla OMAP4460 SoC :

Układ pamięci SRAM na OMAP4460

    Pamięć SRAM jest ograniczona (z powodów fizycznych), więc dla Bootloadera mamy tylko 48 KiB. Zwykle zwykły bootloader (np. U-Boot) jest większy. Musimy więc stworzyć jakiś dodatkowy bootloader, który zainicjalizuje zwykły RAM i skopiuj zwykły bootloader z MMC do pamięci RAM, a następnie skoczy do uruchomienia zwykłego bootloadera. Ten dodatkowy bootloader jest zwykle określany jako first-stage bootloader (w scenariuszu dwustopniowego bootloadera).

Więc ten pierwszy bootloader to U-Boot SPL ; a drugi bootloader to zwykły U-Boot (lub U-Boot proper ). Dla jasności: SPL oznacza Secondary Program Loader . Co oznacza, że kod ROM jest pierwszą rzeczą, która ładuje (i wykonuje) inny program, a SPL jest drugą rzeczą, która ładuje (i wykonuje) inny program. Zwykle więc Sekwencja startowa jest następna: kod ROM - > SPL -> U-boot - > kernel. A właściwie jest to bardzo podobne do bootowania PC, czyli: BIOS -> MBR -> GRUB -> kernel.

UPDATE

Aby wszystko było absolutnie jasne, oto tabela opisująca wszystkie etapy sekwencji rozruchowej (aby wyjaśnić możliwą niepewność w terminologii używane): {]}

+--------+----------------+----------------+----------+
| 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   |
|        |                |                |          |
+--------+----------------+----------------+----------+

Więc używam bootloadera jako synonimu U-Boot , i Program Loader jako wspólnego terminu dla każdego programu, który ładuje inny program.

Zobacz też:

[1] SPL (w Wikipedii)

[2] TPL: SPL loading SPL-Denx

[3] Bootloader (na Osdev Wiki)

[4] Boot ROM vs Bootloader

 33
Author: Sam Protsenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 23:07:28

Nie ma teoretycznej potrzeby dodatkowego programu ładującego. Jednak często istnieją pragmatyczne powody, aby je mieć. Dwa z głowy. Po pierwsze, modułowość i łatwość rozwoju.

Po drugie, proces rozruchu sprzętu może być zbyt restrykcyjny. Może się spodziewać, że book loader będzie znajdować się w określonym miejscu, w którym nie ma wystarczającej ilości miejsca na przechowywanie całego procesu rozruchowego. Primary loader robi to, co jest konieczne, aby załadować pełny proces książki (SPL). Ładowacz główny, do przykład, mogą być przechowywane w pamięci ROM z ograniczeniami pamięci.

 0
Author: user3344003,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-06 17:25:52