it-swarm.com.ru

какая польза от SPL (вторичный загрузчик программ)

Я запутался в прояснении своих концепций относительно этих трех вопросов

  1. зачем нужен вторичный загрузчик программ? 

  2. в какую память он загружается и перемещается?

  3. в чем разница между системной внутренней памятью и RAM?

насколько я понимаю, через чтение ссылок ... SPL требуется, когда внутренняя память системы не может полностью удержать загрузчик, поэтому нам нужно инициализировать память, используя минимальный фрагмент кода под названием SPL . SPL на самом деле перемещается или это только uboot, который связывает себя?

15
theadnangondal

Позвольте мне объяснить это, используя OMAP platform в качестве примера (просто чтобы предоставить некоторую реальную информацию, а не просто теорию или общеизвестные знания). Взгляните на некоторые факты для начинающих:

  • На платформах OMAP первая программа, запускаемая после включения, - это ROM код (что похоже на BIOS на ПК).
  • Код ПЗУ ищет загрузчик (это должен быть файл с именем «MLO» и расположенный в активном первом разделе MMC, который должен быть отформатирован как FAT12/16/32, - но это детали)
  • Код ПЗУ копирует содержимое этого файла "MLO" в static RAM (потому что обычный RAM еще не инициализирован). На следующем рисунке показана схема памяти SRAM для OMAP4460 SoC :

SRAM memory layout on OMAP4460

  • Память SRAM ограничена (по физическим причинам), поэтому у нас есть только 48 КиБ для загрузчика. Обычно двоичный файл обычного загрузчика (например, U-Boot) больше этого. Поэтому нам нужно создать дополнительный загрузчик, который будет инициализировать обычный RAM и скопировать обычный загрузчик из MMC в RAM, а затем перейдет к выполнению этого обычного загрузчика. Этот дополнительный загрузчик обычно называется начальный загрузчик первого этапа (в двухэтапном сценарии загрузчика).

Так что этот начальный загрузчик первого этапа является U-Boot SPL; и загрузчик второго уровня является обычным U-Boot (или U-Boot собственно). Для ясности: SPL означает загрузчик вторичной программы. Это означает, что код ROM - это первая вещь, которая загружает (и выполняет) другую программу, а SPL - это вторая вещь, которая загружает (и выполняет) другую программу. Поэтому обычно последовательность загрузки следующая: ROM код -> SPL -> u-boot -> ядро. И на самом деле это очень похоже на загрузку с ПК, а именно: BIOS -> MBR -> GRUB -> ядро.

ОБНОВЛЕНИЕ

Чтобы прояснить ситуацию абсолютно, вот таблица, описывающая все этапы последовательности загрузки (чтобы прояснить возможную неопределенность в используемой терминологии):

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

Поэтому я просто использую загрузчик как синоним для U-Boot и Загрузчик программ как общий термин для любой программы, которая загружает другую программу.

Смотрите также:

[1] SPL (в Википедии)

[2] TPL: SPL загружается SPL - Denx

[3] Загрузчик (на OSDev Wiki)

[4] Boot ROM vs Bootloader

42
Sam Protsenko

Нет теоретической необходимости во вторичном загрузчике программ. Тем не менее, часто есть прагматические причины для его наличия. Два от макушки головы. Во-первых, модульность и простота разработки.

Во-вторых, процесс загрузки оборудования может быть слишком ограниченным. Можно ожидать, что загрузчик книг будет находиться в определенном месте, где недостаточно места для хранения всего процесса загрузки. Основной загрузчик делает все, что необходимо для загрузки полного процесса книги (SPL). Например, основной загрузчик может храниться в ROM с ограничениями памяти.

1
user3344003