ブートシーケンス
- Raspberry Piに電源がOn
ARM coreは動作していない。GPU coreがonされる。この時,SDRAMはディスイネーブル。
- GPUの1stステージ・ブートローダーが実行される
1stステージ・ブートローダーは,GPUの内蔵ROMに入っている。
SD/MicroSDカードの第1パーテション(先頭のパーテーションのFAT/FAT32ファイルシステム)にある2ndステージ・ブートローダー(bootcode.bin)をL2キャッシュに読み込んで実行する。
- 2ndステージ・ブートローダー
bootcode.binはSDRAMをイネーブルにする。
SD/MicroSDカードから3rdステージ・ブートローダーであるloader.binを第1パーテション(FAT/FAT32)からRAMに読み込んで実行する。
- 3rdステージ・ブートローダー
loader.binはstart.elf(GPUのfirmware)を第1パーテション(FAT/FAT32)からRAMに読み込んで実行する。
新しいブートシーケンスでは2ndステージ・ブートローダー(loader.bin)はなくなり,bootcode.binに統合されたみたいだ。つまり,bootcode.binがstart.elfをロードする。
- 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から提供される値を,カーネルに引き渡す為にパラメータとして与える)
- Kernelが第2パーテーションのrootファイルシステムを直接マウントする。
initramfsは使用していないようだ。
- systemdを最初のプロセスとして起動する。
Raspberry Pi 4Bのブートシーケンス
- Raspberry Piに電源がOn
ARM coreは動作していない。GPU coreがonされる。この時,SDRAMはディスイネーブル。
- GPUの1stステージ・ブートローダーが実行される
1stステージ・ブートローダーは,GPUの内蔵ROMに入っている。
1stステージ・ブートローダーが新しく実装されたEEPROMのrecovery.binを読み込んで実行する。SDRAMの初期化なども行う。
その後,MicroSDカードからstart4.elfをロードし実行する。
- 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がブートされる。
Counter: 1654,
today: 3,
yesterday: 0
最終更新: 2020-12-26 (土) 15:07:52 (JST) (1188d) by yuji
Copyright©2008 Yuji Ueno All Rights Reserved.
新しくコメントをつける