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

Я смущен, очищая свои концепции относительно этих трех вопросов

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

  2. в какой памяти он загружается и переехал ?

  3. в чем разница между внутренней памятью системы и ОЗУ ?

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

2 ответов


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

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

SRAM memory layout on OMAP4460

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

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

обновление

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

+--------+----------------+----------------+----------+
| 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] загрузочный диск против загрузчика


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

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