ubootソースコード分析は、最初のフェーズを開始します1-

1、ヘッダファイルは、単純なが含まれています

  • #include <config.hの>:ファイルの内容は、実際には、ヘッダファイルが含まれています。#include <コンフィグ/ x210_sd.h>」。
  • #/ version.hを含む含ま/ version_autogenerated.h、ヘッダファイルを自動的に構成中に生成される含めます。コンテンツの内側の線ます。#define U_BOOT_VERSION「U-ブート1.3.4」

図2に示すように、16バイトのヘッダのスタートコード

3、例外ベクタテーブルが構築されます

4、と整列パディング0xdeadbeefが

5、TEXT_BASE c3e00000を置くためのスペースの割り当て

6、DDR 33e00000の放電uboot物理アドレスの割り当て空間

7、SVCにCPUモード

8、セット、のL2 L1cache及びMMU

9、一旦ブートメディア識別情報を記憶するので、コードのセクションをバックアップした後、このR3格納0×03を実行します。

10、スタック、セットアップおよびコールlowlevel_initを ;目的:スタックは、現在はまだ全体のコードであるため、SRAMの設定SRAMを実行するため、その場合にはDDRは、初期化はまだできていません

    詳細10.1lowlevel_init

(1)第1のLRスタック

冷たいパワー;(2)DDRの再初期化を防止し、リセット状態をチェックし、ホットスタートが低電力状態にリセットされ、または再初期化する必要はありません。DDRがで初期化するために必要とされるの  DDR。

(3)IO状態の回復

(4)オフウォッチドッグ

(5)関連するSRAMのSROM GPIOを提供

(6)開発ボード電動ラッチ

現在のコードが実行されるかどうか(7)判断SRAM又はでDDR理由:位置コードによるクロックニーズを初期化するかどうかを決定し、DDR

(8)[DDRクロック初期化し、初期化]シリアル印字初期化「O」、Trustゾーン初期化

    • 256MBのメモリアドレス範囲は、ベアメタルDMC0 0x20000000-0x2FFFFFFFあります。
    • DMC0で256MBのメモリアドレス範囲のubootで0x30000000-0x3FFFFFFFです。
    • ubootで、利用可能な物理アドレス範囲:0x30000000-0x4FFFFFFF。DMC0,40000000-4FFFFFFF 30000000-3FFFFFFFで512メガバイトの合計は、DMC1あります。
(9)リターンアドレス、印刷 'K'

図11は、ラッチ電力が再びボード設けられています

12は、再びスタックを設定する、の目的:DDRは初期化されているので、へ転換すべきスタックスタックをリセットするので、DDRを

図13は、再び、再配置するかどうかを決定するために現在のアドレスを決定するかどうかを決定するためにubootにする再配置します。

14、D0037488読み取りからメモリアドレス、チャネルはSD0、この値EB000000を開始し、SD2チャネルこの値EB200000から出発して、呼movi_bl2_copy機能を行う再配置を

15、マッピングテーブルとオープンMMU

  • アドレスマッピングは、追加の収入1:アクセス制御、メモリブロック上で管理し、各仮想アドレスのマッピングを分離され、各ブロック間のその後のマッピング関係ながらも、ブロックを読み取る(アクセス制御を可能にします、書き込み可能、読み取り専用、書き込み専用、非アクセス制御など)
  • 追加の収入アドレスマッピング2:キャッシュ

16は、再びスタックを設定し、スタックの目的を設定するには、この時間は、場所(メモリを無駄にすることなく、安全、コンパクト)より適切にスタックすることです。

17、クリーンアップBSSノートは表し始めと終わりアドレスbssセグメントのシンボルをリンカスクリプトからであるu-boot.ldsが来ます。

18、第二段階へのジャンプ、実行_start_armboot

 
 
 

おすすめ

転載: www.cnblogs.com/zyj23/p/12315377.html
おすすめ