ブートシーケンスとは何ですか?


35

Raspberry Piの起動シーケンスは、電源アプリケーション(または、それが異なる場合はウォームリセット)からロゴの出現までの典型的なセットアップ(NOOBSなど)でどのようなものか疑問に思います。またはそれが記述されている場所。

そのシーケンスの最も必要な一般的な画像に加えて、私は初期段階に最も興味があります:

  1. ARM CPUのリセットベクトルとは何ですか?それはどのように/どこで定義されていますか?
  2. 最初のARM CPU命令はどのメモリからフェッチされますか?それはどこにあり、このコードを保存するためにどのテクノロジーが使用されていますか?
  3. そのARM32またはThumb(またはおそらくJazelle)コードですか?それはリセットベクトルの下位ビットに依存しますか?
  4. その初期ブートコードのソース(または逆アセンブリ、またはダンプ)は利用可能ですか?そうでない場合、JTAGポートを使用してそれを判断することを妨げる技術的なものはありますか?法律に関しては、私が住んでいる場所(フランス)で適用される法律の理解を信頼するリスクを負う準備ができています。そうしないという要件。
  5. 周辺機器はどの順序で初期化され、どのコードで初期化されますか?
  6. ARM CPUのほかに、BCM2835で実行されているプロセッサ/オートマトンがありますか?肯定的には、そのブートシーケンスはARM CPUとどのように関連していますか?

ARM CPUのテクニカルリファレンスマニュアルBCM2835 ARM Peripherals、またはその他のドキュメントに飛び込む準備ができました。

更新:投稿した後、私はこれこれを見つけ、BCM2835のGPUがARMのマスターとして機能しており、ブートシーケンスに大きく関与していると述べました。


4
ソースコード、ブートローダー、SoCファームウェアなど、その情報のほとんどはクローズドソースであると言えます。今のところ、割り当ては不明です。あなたは一つのことを知っている必要があります。BCMはGPUであり、CPUではありません。ブートローダーはGPUセクションで開始し、そこでRAMを初期化して、ソースコードにアクセスできる最初の場所であるCPUに渡します(別名Raspbian)。がんばろう。この質問は非常に幅広く、答えるのが難しいです。
ピョートルクラ

回答:


38

Raspberry Piの起動シーケンスは基本的に次のとおりです。

  1. ステージ1ブートはオンチップROMにあります。L2キャッシュにステージ2をロードします
  2. ステージ2はbootcode.binです。SDRAMを有効にし、ステージ3をロードします
  3. ステージ3ですloader.bin.elfフォーマットとロードについて知っているstart.elf
  4. start.elfロードしますkernel.img。その後も読み込みconfig.txtcmdline.txtおよびbcm2835.dtb DTBファイルが存在する場合、それは時にロードされ0×100、@&カーネル0×8000 の場合は、disable_commandline_tagsそれがカーネル@をロードする設定されている0×0 それ以外の場合は、カーネル@をロード0×8000し、でATAGSを置きます0×100
  5. kernel.img その後、ARM上で実行されます。

すべてはkernel.img、ARMにロードされるまでGPUで実行されます。

私はこの図が非常に便利だと感じました:

起動シーケンス


2
有用。第2ステージのブートローダーbootcode.binがGPU、ARM(およびどの種類のコード)、またはこれらの混合によって実行されるコードであるかを明確にできますか?3番目のステージでも同じですloader.bin(見かけ上、それが消えていない場合)。
fgrieu

3
@fgrieu答えを編集して説明を追加しました。すべてはkernel.img、ARMで実行されるまでGPU で実行されます。
-SG60

1
これによると loader.bin使用されなくなりました。 bootcode.bin直接負荷start.elfに応じて、このGitはコミット
HeatfanJohn

@ SG60:HeatfanJohnの情報で回答を更新できますか?
ピーターモーテンセン

誰もNOOBSブートについて知っていますか?明らかに、recover.elfといくつかのソフトブートの動作を含むプロセスは少し異なります。少し低いレベルでubootを動作させることに興味があります。
サム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.