bootlodaer簡介

Boot Loader 就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核準備好正確的環境。通常,Boot Loader 是嚴重地依賴於硬件而實現的,因此建立一個通用的 Boot Loader 幾乎是不可能的。
      每種不同的 CPU 體系結構都有不同的 Boot Loader。有些 Boot Loader 也支持多種體系結構的 CPU,比如 U-Boot 就同時支持 ARM 體系結構和MIPS。除了依賴於 CPU 的體系結構外,Boot Loader 實際上也依賴於具體的嵌入式板級設備的配置。

      從固態存儲設備上啓動的 Boot Loader 大多都是 2 階段的啓動過程,也即啓動過程可以分爲 stage 1 (彙編部分)和 stage 2 (C語言部分)兩部分。

     第一階段:A,基本的硬件初始化(屏蔽依賴於CPU體系架構的所有中斷,關閉CACHE);B,爲第二階段準備RAM;C,複製第二階段的CODE到RAM;D,設置堆棧;E,跳轉到第二階段的C入口點。

     第二階段:A,初始化本階段的硬件設備;B,建立內存映射;C,將內核映像和根文件系統映像從FLASH讀到RAM中;D,設置內核啓動參數;E,調用內核。

                                          


      大多數 Boot Loader 都包含兩種不同的操作模式:"啓動加載"模式和"下載"模式。但從最終用戶的角度看,Boot Loader 的作用就是用來加載操作系統,而並不存在所謂的啓動加載模式與下載工作模式的區別。啓動加載(Boot loading)模式:這種模式也稱爲"自主"(Autonomous)模式。也即 Boot Loader 從目標機上的某個固態存儲設備上將操作系統加載到 RAM 中運行,整個過程並沒有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產品發佈的時侯,Boot Loader 顯然必須工作在這種模式下。下載(Downloading)模式:在這種模式下,目標機上的 Boot Loader 將通過串口連接或網絡連接等通信手段從主機(Host)下載文件,比如:下載內核映像和根文件系統映像等。從主機下載的文件通常首先被 Boot Loader 保存到目標機的 RAM 中,然後再被 Boot Loader 寫到目標機上的FLASH 類固態存儲設備中。這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口。最常見的情況就是,目標機上的 Boot Loader 通過串口與主機之間進行文件傳輸,傳輸協議通常是 xmodem/ymodem/zmodem 協議中的一種。但是,串口傳輸的速度是有限的,因此通過以太網連接並藉助 TFTP 協議來下載文件是個更好的選擇,在通過以太網連接和 TFTP 協議來下載文件時,主機方必須有一個軟件用來的提供 TFTP 服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章