что такое использование SPL (загрузчик вторичной программы)
Я смущен, очищая свои концепции относительно этих трех вопросов
зачем нам нужен дополнительный загрузчик программ ?
в какой памяти он загружается и переехал ?
- в чем разница между внутренней памятью системы и ОЗУ ?
насколько я понимаю, через чтение ссылок .. SPL требуется, когда внутренняя память системы не может полностью удерживать uboot, поэтому мы необходимо инициализировать память с помощью минимального фрагмента кода под названием SPL. Действительно ли SPL перемещается или это только uboot, который относится к себе?
2 ответов
позвольте мне объяснить это с помощью OMAP платформа в качестве примера (просто чтобы обеспечить некоторый фактический фон, а не просто теорию или общие знания). Взгляните на некоторые факты для начала:
- на платформах на основе OMAP первая программа запускается после включения питания код ROM (который похож на BIOS на ПК).
- ROM-код ищет загрузчик (который должен быть файлом с именем "MLO" и расположен на активном первом разделе MMC, который должен отформатируйте как FAT12 / 16 / 32, -- но это детали)
- ROM-код копирует содержимое этого файла " MLO " в статическое ОЗУ (потому что регулярная ОЗУ еще не инициализирована). На следующем рисунке показан макет памяти SRAM для OMAP4460 SoC:
- память 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 и Загрузчика Программы как общий термин для любой программы, которая загружает другие программы.
Читайте также:
теоретическая потребность во вторичном программном загрузчике отсутствует. Однако часто существуют прагматические причины для того, чтобы иметь его. Два с моей головы. Во-первых, модульность и простота разработки.
во-вторых, процесс загрузки оборудования может быть слишком ограничительным. Можно ожидать, что загрузчик книг будет находиться в определенном месте, где недостаточно места для хранения всего процесса загрузки. Основной загрузчик делает все необходимое для загрузки процесса полной книги (SPL). Предварительные выборы загрузчик, например, может храниться в ПЗУ с ограничениями памяти.