ブートシーケンス anchor.png

  1. Raspberry Piに電源がOn
    ARM coreは動作していない。GPU coreがonされる。この時,SDRAMはディスイネーブル。
  2. GPUの1stステージ・ブートローダーが実行される
    1stステージ・ブートローダーは,GPUの内蔵ROMに入っている。
    SD/MicroSDカードの第1パーテション(先頭のパーテーションのFAT/FAT32ファイルシステム)にある2ndステージ・ブートローダー(bootcode.bin)をL2キャッシュに読み込んで実行する。
  3. 2ndステージ・ブートローダー
    bootcode.binはSDRAMをイネーブルにする。
    SD/MicroSDカードから3rdステージ・ブートローダーであるloader.binを第1パーテション(FAT/FAT32)からRAMに読み込んで実行する。
  4. 3rdステージ・ブートローダー
    loader.binはstart.elf(GPUのfirmware)を第1パーテション(FAT/FAT32)からRAMに読み込んで実行する。
    新しいブートシーケンスでは2ndステージ・ブートローダー(loader.bin)はなくなり,bootcode.binに統合されたみたいだ。つまり,bootcode.binがstart.elfをロードする。
  5. 4thステージ・ブートローダー
    start.elfは接続されているDisplayに,テストパターン(虹色パターン)を表示する。
    そして第1パーテション(FAT/FAT32)にあるconfig.txt,cmdline.txtとkernel.imgをRAMに読み込む。
    第1パーテションにあるconfig.txtに記載されている情報から,システム設定ファイルをロードする。(各種デバイス用)
    config.txtのkernel=xxxxで指定されたLinuxカーネルをロードする。(デフォルトはkernel.imgで,RPi3の場合はkernel7.img)
    その後ARM Coreのリセット信号を解除してARM Coreを起動する。これで,Linux Kernelがブートされる。
    この時cmdline.txtの内容がカーネルコマンドオプションとして与えられるようだ。(CPUシリアル番号,MAC Address,Displayの解像度などのSoCのfirmwareから提供される値を,カーネルに引き渡す為にパラメータとして与える)
  6. Kernelが第2パーテーションのrootファイルシステムを直接マウントする。
    initramfsは使用していないようだ。
  7. systemdを最初のプロセスとして起動する。
Page Top

Raspberry Pi 4Bのブートシーケンス anchor.png

  1. Raspberry Piに電源がOn
    ARM coreは動作していない。GPU coreがonされる。この時,SDRAMはディスイネーブル。
  2. GPUの1stステージ・ブートローダーが実行される
    1stステージ・ブートローダーは,GPUの内蔵ROMに入っている。
    1stステージ・ブートローダーが新しく実装されたEEPROMのrecovery.binを読み込んで実行する。SDRAMの初期化なども行う。
    その後,MicroSDカードからstart4.elfをロードし実行する。
  3. 2ndステージ・ブートローダー(start4.elf)
    start4.elfは接続されているDisplayにテストパターン(虹色パターン)を表示する。
    その後MicroSDカードの第1パーテション(FAT/FAT32)にあるconfig.txt,cmdline.txtとkernel7.imgまたはkernel8.imgをRAMに読み込む。
    GPUがARM Coreのリセット信号を解除してARM Coreを起動する。これで,Linux Kernelがブートされる。

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1654, today: 3, yesterday: 0
最終更新: 2020-12-26 (土) 15:07:52 (JST) (1188d) by yuji