web-dev-qa-db-ja.com

SPL(セカンダリプログラムローダー)の使用は何ですか

これら3つの質問に関する概念を明確にするのに混乱しています

  1. なぜセカンダリプログラムローダーが必要なのですか?

  2. どのメモリにロードされて再配置されますか?

  3. システム内部メモリとRAM?

読み取りリンクを介して理解している限り、.. システム内部メモリがubootを完全に保持できない場合はSPLが必要であるため、SPLと呼ばれる最小限のコードを使用してメモリを初期化する必要があります。 SPLは実際に再配置されますか、それとも自分自身に関連するのはubootだけですか?

20
theadnangondal

例として [〜#〜] omap [〜#〜] platformを使用して説明します(理論や一般的な知識ではなく、実際の背景を提供するためです)。手始めにいくつかの事実を見てみましょう。

  • OMAPベースのプラットフォームでは、電源投入後に最初に実行されるプログラムは ROMコード (PCのBIOSに似ています)です。
  • ROMコードはブートローダーを探します(「MLO」という名前のファイルであり、MMCのアクティブな最初のパーティションにあり、FAT12/16/32としてフォーマットされている必要がありますが、それは詳細です)
  • ROMコードはその「MLO」ファイルの内容を 静的RAM にコピーします(通常のRAMはまだ初期化されていないため)。次の図はOMAP4460のSRAMメモリレイアウトを示しています SoC

SRAM memory layout on OMAP4460

  • SRAMメモリは(物理的な理由により)制限されているため、ブートローダーには48 KiBしかありません。通常、通常のブートローダー(U-Bootなど)バイナリはそれよりも大きくなります。そのため、通常のRAMを初期化し、MMCからRAMに通常のブートローダーをコピーし、その通常のブートローダーを実行するためにジャンプする追加のブートローダーを作成する必要がありますこの追加のブートローダーは、通常、first-stage bootloader(2段階ブートローダーのシナリオ)と呼ばれます。

したがって、これは第一段階のブートローダー-Boot SPL;です。および2番目の段階のブートローダー通常のU-Boot(または-Boot固有)です。明確にするために:SPLはSecondary Program Loaderの略です。つまり、ROMコードは最初のものは他のプログラムをロード(および実行)し、SPLは2番目のものはロード(そして、他のプログラムを実行します。通常、ブートシーケンスは次のようになります。ROM code-> SPL-> u-boot-> kernel。 > MBR-> GRUB->カーネル。

[〜#〜] update [〜#〜]

物事を明確にするために、ここにブートシーケンスのすべての段階を説明する表を示します(使用される用語の不確実性を明確にするため):

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

だから私はちょうどbootloaderU-BootProgram Loader他のプログラムをロードするプログラムの一般的な用語として。

こちらもご覧ください:

[1] SPL(ウィキペディア)

[2] TPL:SPLロードSPL-Denx

[3] ブートローダー(OSDev Wiki)

[4] ブートROM vsブートローダー

50
Sam Protsenko

セカンダリプログラムローダーの理論的な必要性はありません。ただし、多くの場合、実用的な理由があります。頭の上の2つ。まず、モジュール性と開発の容易さ。

第二に、ハードウェアブートプロセスの制限が厳しすぎる場合があります。ブックローダーは、ブートプロセス全体を保存するのに十分なスペースがない特定の場所にあると予想される場合があります。プライマリローダーは、フルブックプロセス(SPL)を読み込むために必要なことを行います。たとえば、プライマリローダーは、メモリ制限付きでROMに格納できます。

1
user3344003