常見bootloader介紹

 

一、BootLoader簡介

  在專用的嵌入式板子運行操作系統已經變得越來越流行。一個嵌入式系統從軟件的角度看通常可以分爲三個層次:


  1、 引導加載程序。包括固化在固件(firmware)中的Booter代碼(可選),和Loader兩大部分。

  2、 操作系統。特定於嵌入式板子的定製內核以及內核的啓動參數;以及在內核和應用程序之間可能還會包括一個嵌入式圖形用戶界面,常用的嵌入式GUI有:MicroWindows和MiniGUI等。

  3、 用戶應用程序。特定於用戶的應用程序。


  引導加載程序是系統加電後運行的第一段軟件代碼,稱之爲Bootloader。BootLoader是Booter和Loader的合寫:前者意味着要初始化嵌入式系統硬件使之運行起來,至少是部分運行起來,與PC機中的BIOS作用相似;後者意味着將嵌入式操作系統映像加載到內存中,並跳轉過去運行。如PC機中MBR上的BootLoader(PC機中的引導加載程序由BIOS(其本質就是一段固件程序)和位於硬盤MBR中的OS BootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬件檢測和資源分配後,將硬盤MBR中的BootLoader讀到系統的RAM中,然後將控制權交給OS BootLoader。BootLoader的主要運行任務就是將內核映象從硬盤上讀到 RAM 中,然後跳轉到內核的入口點去運行,也即開始啓動操作系統。)

  而在嵌入式系統中,通常並沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啓動程序),因此整個系統的加載啓動任務就完全由BootLoader來完成。比如在一個基於ARM7TDMI core的嵌入式系統中,系統在上電或復位時通常都從地址0x00000000處開始執行,而在這個地址處安排的通常就是系統的BootLoader程序。

  簡單地說,BootLoader就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核準備好正確的環境。

  通常,BootLoader是嚴重地依賴於硬件而實現的,特別是在嵌入式世界。因此,在嵌入式世界裏建立一個通用的BootLoader幾乎是不可能的。儘管如此,我們仍然可以對BootLoader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現。

        Bootloader並不是嵌入式系統必不可少的組成部分,但是在系統中有Bootloader可以給嵌入式產品的開發調試帶來很多便利。

二、常見bootloader介紹

1.Redboot

  Redboot是Redhat公司隨eCos發佈的一個BOOT方案,是一個開源項目。

  當前Redboot的最新版本是Redboot-2.0.1,Redhat公司將會繼續支持該項目。

  Redboot支持的處理器構架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一個完善的嵌入式系統Boot Loader。

  Redboot是在ECOS的基礎上剝離出來的,繼承了ECOS的簡潔、輕巧、可靈活配置、穩定可靠等品質優點。它可以使用X-modem或Y-modem協議經由串口下載,也可以經由以太網口通過BOOTP/DHCP服務獲得IP參數,使用TFTP方式下載程序映像文件,常用於調試支持和系統初始化(Flash下載更新和網絡啓動)。Redboot可以通過串口和以太網口與GDB進行通信,調試應用程序,甚至能中斷被GDB運行的應用程序。Redboot爲管理FLASH映像,映像下載,Redboot配置以及其他如串口、以太網口提供了一個交互式命令行接口,自動啓動後,REDBOOT用來從TFTP服務器或者從Flash下載映像文件加載系統的引導腳本文件保存在Flash上。當前支持單板機的移植版特性有:

  - 支持ECOS,Linux操作系統引導

  - 在線讀寫Flash

  - 支持串行口kermit,S-record下載代碼

  - 監控(minitor)命令集:讀寫I/O,內存,寄存器、 內存、外設測試功能等

  Redboot是標準的嵌入式調試和引導解決方案,支持幾乎所有的處理器構架以及大量的外圍硬件接口,並且還在不斷地完善過程中。

2.ARMboot

  ARMboot是一個ARM平臺的開源固件項目,它特別基於PPCBoot,一個爲PowerPC平臺上的系統提供類似功能的姊妹項目。鑑於對PPCBoot的嚴重依賴性,已經與PPCBoot項目合併,新的項目爲U-Boot。

  ARMboot發佈的最後版本爲ARMboot-1.1.0,2002年ARMboot終止了維護。

  ARMboot支持的處理器構架有StrongARM ,ARM720T ,PXA250 等,是爲基於ARM或者StrongARM CPU的嵌入式系統所設計的。

  ARMboot的目標是成爲通用的、容易使用和移植的引導程序,非常輕便地運用於新的平臺上。ARMboot是GPL下的ARM固件項目中唯一支持Flash閃存,BOOTP、DHCP、TFTP網絡下載,PCMCLA尋線機等多種類型來引導系統的。特性爲:

  -支持多種類型的FLASH

  -允許映像文件經由BOOTP、DHCP、TFTP從網絡傳輸;

  -支持串行口下載S-record或者binary文件

  -允許內存的顯示及修改

  -支持jffs2文件系統等

  Armboot對S3C44B0板的移植相對簡單,在經過刪減完整代碼中的一部分後,僅僅需要完成初始化、串口收發數據、啓動計數器和FLASH操作等步驟,就可以下載引導uClinux內核完成板上系統的加載。總得來說,ARMboot介於大、小型Boot Loader之間,相對輕便,基本功能完備,缺點是缺乏後續支持。

3.U-Boot

  U-Boot是由開源項目PPCBoot發展起來的,ARMboot併入了PPCBoot,和其他一些arch的Loader合稱U-Boot。2002年12月17日第一個版本U-Boot-0.2.0發佈,同時PPCBoot和ARMboot停止維護。

  U-Boot自發布以後已更新6次,最新版本爲U-Boot-1.1.1,U-Boot的支持是持續性的。

  U-Boot支持的處理器構架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)從名字就可以看出,它是在GPL下資源代碼最完整的一個通用Boot Loader。

  U-Boot提供兩種操作模式:啓動加載(Boot loading)模式和下載(Downloading)模式,並具有大型Boot Loader的全部功能。主要特性爲:

  -SCC/FEC以太網支持

  -BOOTP/TFTP引導

  -IP,MAC預置功能

  -在線讀寫FLASH,DOC, IDE,IIC,EEROM,RTC

  -支持串行口kermit,S-record下載代碼

  -識別二進制、ELF32、pImage格式的Image,對linux引導有特別的支持

  -監控(minitor)命令集:讀寫I/O,內存,寄存器、內存、外設測試功能等

  -腳本語言支持(類似BASH腳本)

  -支持WatchDog,LCD logo,狀態指示功能等

  U-Boot的功能是如此之強大,涵蓋了絕大部分處理器構架,提供大量外設驅動,支持多個文件系統,附帶調試、腳本、引導等工具,特別支持Linux,爲板級移植做了大量的工作。U-Boot1.1.1版本特別包含了對SA1100和44B0芯片的移植,所以44B0移植主要是針對Board 的移植,包括FLASH、內存配置以及串口波特率等等。U-Boot的完整功能性和後續不斷的支持,使系統的升級維護變得十分方便。

4.Blob

  Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發佈的,是專門爲StrongARM 構架下的LART設計的Boot Loader。

  Blob的最後版本是blob-2.0.5。

  Blob支持SA1100的LART主板,但用戶也可以自行修改移植。

  Blob也提供兩種工作模式,在啓動時處於正常的啓動加載模式,但是它會延時 10 秒等待終端用戶按下任意鍵而將 Blob 切換到下載模式。如果在 10 秒內沒有用戶按鍵,則 Blob 繼續啓動 Linux 內核。其基本功能爲:

  初始化硬件(CPU速度,存儲器,中斷,RS232串口)

  -引導Linux內核並提供ramdisk

  - 給LART下載一個內核或者ramdisk

  -給FLASH片更新內核或者ramdisk

  -測定存儲配置並通知內核

  -給內核提供一個命令行

  Blob功能比較齊全,代碼較少,比較適合做修改移植,用來引導Liunx,目前大部分S3C44B0板都用Blob修改移植後來加載uClinux。

Bios-lt

  Bios-lt是專門支持三星(Samsung)公司ARM構架處理器S3C4510B的Loader,可以設置CPU/ROM/SDRAM/EXTIO,管理並燒寫FLASH,裝載引導uClinux內核。這是國內工程師申請GNU通用公共許可發佈的。

  Bios-lt的最新版本是Bios-lt-0.74,另外還提供了S3C4510B的一些外圍驅動。

Bootldr

  Bootldr是康柏(Compaq)公司發佈的,類似於compaq iPAQ Pocket PC,支持SA1100芯片。它被推薦用來引導Llinux,支持串口Y-modem協議以及jffs文件系統。

  Bootldr的最後版本爲Bootldr-2.19。

原文:http://blog.csdn.net/xiazhaoqiang/article/details/5966361

 

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