引言:
Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
對(duì)于嵌入式系統(tǒng),Bootloader是基于特定硬件平臺(tái)來(lái)實(shí)現(xiàn)的。因此,幾乎不可能為所有的嵌入式系統(tǒng)建立一個(gè)通用的Bootloader,不同的處理器架構(gòu)都有不同的Bootloader。Bootloader不但依賴于CPU的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級(jí)設(shè)備的配置。對(duì)于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運(yùn)行在一塊板子上的Bootloader程序也能運(yùn)行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過(guò)來(lái),大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,U-Boot就同時(shí)支持PowerPC、ARM、MIPS和X86等體系結(jié)構(gòu),支持的板子有上百種。通常,它們都能夠自動(dòng)從存儲(chǔ)介質(zhì)上啟動(dòng),都能夠引導(dǎo)操作系統(tǒng)啟動(dòng),并且大部分都可以支持串口和以太網(wǎng)接口。本文將對(duì)各種Bootloader總結(jié)分類,分析它們的各自特點(diǎn)。可以看到表1就是我的匯總表
正文:
表1 開放源碼的Linux引導(dǎo)程序【1】
Bootloader | 描述 | x86 | ARM | PowerPC |
LILO | Linux磁盤引導(dǎo)程序 | 是 | 否 | 否 |
GRUB | GNU的LILO替代程序 | 是 | 否 | 否 |
Loadlin | 從DOS引導(dǎo)Linux | 是 | 否 | 否 |
ROLO | 從ROM引導(dǎo)Linux而不需要BIOS | 是 | 否 | 否 |
Etherboot | 通過(guò)以太網(wǎng)卡啟動(dòng)的Linux系統(tǒng)的固件 | 是 | 否 | 否 |
LinuxBIOS | 完全替代BUIS的Linux引導(dǎo)程序 | 是 | 否 | 否 |
BLOB | LART等的硬件平臺(tái)的引導(dǎo)程序 | 否 | 是 | 否 |
U-boot | 通用引導(dǎo)程序 | 是 | 是 | 是 |
RedBoot | 基于eCos的引導(dǎo)程序 | 是 | 是 | 是 |
vivi | 專為ARM處理器系列設(shè)計(jì) | 否 | 是 | 否 |
Bios-lt | 專為S3C4510B開發(fā)的引導(dǎo)程序 | 否 | 是 | 否 |
Bootldr | 康柏的支持SA1100芯片引導(dǎo)程序 | 否 | 否 | 否 |
Linux傳統(tǒng)上是通過(guò)LILO(LInux LOader)引導(dǎo)的,后來(lái)又出現(xiàn)了GNU的軟件GRUB(GRand Unified Bootloader)。這2種Bootloader廣泛應(yīng)用在X86的Linux系統(tǒng)上。你的開發(fā)主機(jī)可能就使用了其中一種,熟悉它們有助于配置多種系統(tǒng)引導(dǎo)功能。
LILO軟件工程是由Werner Almesberger創(chuàng)建,專門為引導(dǎo)Linux開發(fā)的。現(xiàn)在LILO的維護(hù)者是John Coffman,最新版本下載站點(diǎn):http://lilo.go.dyndns.org。LILO有詳細(xì)的文檔,例如LILO套件中附帶使用手冊(cè)和參考手冊(cè)。此外,還可以在LDP的“LILO mini-HOWTO”中找到LILO的使用指南。
GRUB是GNU計(jì)劃的主要bootloader。GRUB最初是由Erich Boleyn為GNU Mach操作系統(tǒng)撰寫的引導(dǎo)程序。后來(lái)有Gordon Matzigkeit和Okuji Yoshinori接替Erich的工作,繼續(xù)維護(hù)和開發(fā)GRUB。GRUB的網(wǎng)站http://www.gnu.org/software/grub/上有對(duì)套件使用的說(shuō)明文件,叫作《GRUB manual》。GRUB能夠使用TFTP和BOOTP或者DHCP通過(guò)網(wǎng)絡(luò)啟動(dòng),這種功能對(duì)于系統(tǒng)開發(fā)過(guò)程很有用。
“Loadlin不用安裝,可以存在任何DOS可以訪問(wèn)的介質(zhì)(比如磁盤,甚至是網(wǎng)絡(luò)存儲(chǔ))。當(dāng)系統(tǒng)崩潰的時(shí)候,甚至LILO也不能起來(lái),Loadlin是一項(xiàng)極佳的工具來(lái)啟動(dòng)系統(tǒng)或恢復(fù)文件系統(tǒng)?,F(xiàn)在許多cdrom就是通過(guò)Loadlin來(lái)安裝Linux,因?yàn)樗恍枰脖P,用DOS來(lái)裝載Linux。Loadlin可以適合幾乎所有的DOS系統(tǒng),啟動(dòng)限制也比較少。它使用擴(kuò)展內(nèi)存,可以驅(qū)動(dòng)大內(nèi)核和ramdisk鏡像”【4】。
ROLO ROLO: A Developer's Guide,它討論了在不利用 BIOS 的情況下引導(dǎo) Linux(Embedded Linux Works,2001 年 6 月)。
Etherboot是用來(lái)制作X86計(jì)算機(jī)無(wú)盤啟動(dòng)BOOTROM的工具,它理論上可以支持廣播的TCP/IP網(wǎng)絡(luò)。etherboot對(duì)于現(xiàn)在非常流行的CLUSTER應(yīng)用和低成本X終端非常有用?!盁o(wú)盤啟動(dòng)可以由netboot,etherboot及pxe實(shí)現(xiàn)。現(xiàn)在一般選用的是etherboot,而pxe方式是未來(lái)的方向,只是在目前條件尚未成熟”【3】。
“LinuxBIOS目標(biāo)是以能在冷啟動(dòng)狀態(tài)下啟動(dòng)Linux的Linux內(nèi)核來(lái)替代PC、Alpha和其它機(jī)器上的常規(guī)BIOS。LinuxBIOS根本上就是Linux,在通用的Linux內(nèi)核打上大約10行的補(bǔ)丁。再加上啟動(dòng)代碼,大約500行的匯編和5000行的C代碼,在Linux接管前運(yùn)行16個(gè)指令來(lái)進(jìn)入32位方式并完成DRAM和其它硬件的初始化。他們項(xiàng)目原來(lái)的動(dòng)機(jī)是維護(hù)龐大的cluster集群”【5】。
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發(fā)布的,是專門為StrongARM 構(gòu)架下的LART設(shè)計(jì)的Boot Loader。Blob的最后版本是blob-2.0.5,其發(fā)布網(wǎng)址為:http://www.lart.tudelft.nl/lartware/blob/。Blob支持SA1100的LART主板,但用戶也可以自行修改移植。 Blob也提供兩種工作模式,在啟動(dòng)時(shí)處于正常的啟動(dòng)加載模式,但是它會(huì)延時(shí) 10 秒等待終端用戶按下任意鍵而將 Blob 切換到下載模式。如果在 10 秒內(nèi)沒(méi)有用戶按鍵,則 Blob 繼續(xù)啟動(dòng) Linux 內(nèi)核。其基本功能為:
- 初始化硬件(CPU速度,存儲(chǔ)器,中斷,RS232串口)
- 引導(dǎo)Linux內(nèi)核并提供ramdisk
- 給LART下載一個(gè)內(nèi)核或者ramdisk
- 給FLASH片更新內(nèi)核或者ramdisk
- 測(cè)定存儲(chǔ)配置并通知內(nèi)核
- 給內(nèi)核提供一個(gè)命令行
Blob功能比較齊全,代碼較少,比較適合做修改移植,用來(lái)引導(dǎo)Liunx,目前大部分S3C44B0板都用Blob修改移植后來(lái)加載uClinux。
U-Boot是由開源項(xiàng)目PPCBoot發(fā)展起來(lái)的,ARMboot并入了PPCBoot,和其他一些arch的Loader合稱U-Boot。2002年12月17日第一個(gè)版本U-Boot-0.2.0發(fā)布,同時(shí)PPCBoot和ARMboot停止維護(hù)。U-Boot自發(fā)布以后已更新6次,最新版本為U-Boot-1.1.1,U-Boot的支持是持續(xù)性的。其發(fā)布網(wǎng)址為:http://sourceforge.net/projects/u-boot/。U-Boot支持的處理器構(gòu)架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)從名字就可以看出,它是在GPL下資源代碼最完整的一個(gè)通用Boot Loader。 U-Boot提供兩種操作模式:?jiǎn)?dòng)加載(Boot loading)模式和下載(Downloading)模式,并具有大型Boot Loader的全部功能。主要特性為:
- SCC/FEC以太網(wǎng)支持
- BOOTP/TFTP引導(dǎo)
- IP,MAC預(yù)置功能
- 在線讀寫FLASH,DOC, IDE,IIC,EEROM,RTC
- 支持串行口kermit,S-record下載代碼
- 識(shí)別二進(jìn)制、ELF32、pImage格式的Image,對(duì)Linux引導(dǎo)有特別的支持
- 監(jiān)控(minitor)命令集:讀寫I/O,內(nèi)存,寄存器、內(nèi)存、外設(shè)測(cè)試功能等
- 腳本語(yǔ)言支持(類似BASH腳本)
- 支持WatchDog,LCD logo,狀態(tài)指示功能等
U-Boot的功能是如此之強(qiáng)大,涵蓋了絕大部分處理器構(gòu)架,提供大量外設(shè)驅(qū)動(dòng),支持多個(gè)文件系統(tǒng),附帶調(diào)試、腳本、引導(dǎo)等工具,特別支持Linux,為板級(jí)移植做了大量的工作。U-Boot1.1.1版本特別包含了對(duì)SA1100和44B0芯片的移植,所以44B0移植主要是針對(duì)Board 的移植,包括FLASH、內(nèi)存配置以及串口波特率等等。U-Boot的完整功能性和后續(xù)不斷的支持,使系統(tǒng)的升級(jí)維護(hù)變得十分方便。Redboot是Redhat公司隨eCos發(fā)布的一個(gè)BOOT方案,是一個(gè)開源項(xiàng)目。當(dāng)前Redboot的最新版本是Redboot-2.0.1,Redhat公司將會(huì)繼續(xù)支持該項(xiàng)目,其官方發(fā)布網(wǎng)址為:http://sources.redhat.com/redboot/。Redboot支持的處理器構(gòu)架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一個(gè)完善的嵌入式系統(tǒng)Boot Loader。
Redboot是在ECOS的基礎(chǔ)上剝離出來(lái)的,繼承了ECOS的簡(jiǎn)潔、輕巧、可靈活配置、穩(wěn)定可靠等品質(zhì)優(yōu)點(diǎn)。它可以使用X-modem或Y-modem協(xié)議經(jīng)由串口下載,也可以經(jīng)由以太網(wǎng)口通過(guò)BOOTP/DHCP服務(wù)獲得IP參數(shù),使用TFTP方式下載程序映像文件,常用于調(diào)試支持和系統(tǒng)初始化(Flash下載更新和網(wǎng)絡(luò)啟動(dòng))。Redboot可以通過(guò)串口和以太網(wǎng)口與GDB進(jìn)行通信,調(diào)試應(yīng)用程序,甚至能中斷被GDB運(yùn)行的應(yīng)用程序。Redboot為管理FLASH映像,映像下載,Redboot配置以及其他如串口、以太網(wǎng)口提供了一個(gè)交互式命令行接口,自動(dòng)啟動(dòng)后,REDBOOT用來(lái)從TFTP服務(wù)器或者從Flash下載映像文件加載系統(tǒng)的引導(dǎo)腳本文件保存在Flash上。當(dāng)前支持單板機(jī)的移植版特性有:
- 支持ECOS,Linux操作系統(tǒng)引導(dǎo)
- 在線讀寫Flash
- 支持串行口kermit,S-record下載代碼
- 監(jiān)控(minitor)命令集:讀寫I/O,內(nèi)存,寄存器、 內(nèi)存、外設(shè)測(cè)試功能等
Redboot是標(biāo)準(zhǔn)的嵌入式調(diào)試和引導(dǎo)解決方案,支持幾乎所有的處理器構(gòu)架以及大量的外圍硬件接口,并且還在不斷地完善過(guò)程中。
vivi是由mizi公司設(shè)計(jì)為ARM處理器系列設(shè)計(jì)的一個(gè)bootloader,因?yàn)関ivi目前只支持使用串口和主機(jī)通信,所以您必須使用一條串口電纜來(lái)連接目標(biāo)板和主機(jī)。它的主要特性有:
- 把內(nèi)核(kernel)從flash復(fù)制到RAM,然后啟動(dòng)它
- 初始化硬件
- 下載程序并寫入flash(一般通過(guò)串口或者網(wǎng)口先把內(nèi)核下載到RAM中,然后寫入到flash)
- 檢測(cè)目標(biāo)板(bootloader會(huì)有一些簡(jiǎn)單的代碼用以測(cè)試目標(biāo)板硬件的好壞)
Bios-lt是專門支持三星(Samsung)公司ARM構(gòu)架處理器S3C4510B的Loader,可以設(shè)置CPU/ROM/SDRAM/EXTIO,管理并燒寫FLASH,裝載引導(dǎo)uClinux內(nèi)核。這是國(guó)內(nèi)工程師申請(qǐng)GNU通用公共許可發(fā)布的。Bios-lt的最新版本是Bios-lt-0.74,另外還提供了S3C4510B的一些外圍驅(qū)動(dòng),其發(fā)布網(wǎng)址為:http://sourceforge.net/projects/bios-lt。
Bootldr是康柏(Compaq)公司發(fā)布的,類似于compaq iPAQ Pocket PC,支持SA1100芯片。它被推薦用來(lái)引導(dǎo)Llinux,支持串口Y-modem協(xié)議以及jffs文件系統(tǒng)。Bootldr的最后版本為Bootldr-2.19,其發(fā)布網(wǎng)址為:http://www.wearablegroup.org/software/bootldr/。
總結(jié)及展望:由于時(shí)間有限,本文只是對(duì)于網(wǎng)絡(luò)資源的總結(jié),只想盡可能多得列出現(xiàn)有一些流行的Bootloader一些特性,如果想進(jìn)一步的研究,可以閱讀各個(gè)Bootloader的源代碼,相信對(duì)各類硬件及操作系統(tǒng)的啟動(dòng)有更加清晰的了解。
參考文獻(xiàn):
【1】、孫紀(jì)坤 張小全,《嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解-基于ARM》
【2】、《幾種Bootloader簡(jiǎn)介》,http://www.ednchina.com/blog/peter8888/3300/message.aspx
【3】、吳峰光,《etherboot無(wú)盤啟動(dòng)》,http://micro.ustc.edu.cn/Linux/text/wfg-etherboot.txt
【4】、《loadlin manual》,http://www.0wei.com/blog.php?tid=13560
【5】、《LinuxBIOS的簡(jiǎn)介》,http://blog.chinaunix.net/u/3577/showart.php?id=61761
上一篇:分析對(duì)比主流Bootloader的性能
下一篇:Ubuntu 16.04上安裝SkyEye及測(cè)試
推薦閱讀最新更新時(shí)間:2025-07-01 15:29




設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- FAN6224同步整流控制器正激續(xù)流整流典型應(yīng)用
- LTC3621EMS8E-2 1.2Vout、同步至 600kHz、強(qiáng)制連續(xù)模式同步降壓型穩(wěn)壓器的典型應(yīng)用
- MC34071ADR2G快速建立逆變器的典型應(yīng)用
- LT3970EMS-3.3 5V 降壓轉(zhuǎn)換器的典型應(yīng)用
- LT1171HVIT、2.5A 高效恒流充電器的典型應(yīng)用
- 具有輕負(fù)載效率的 NCP5252 2.0 A、1.0 MHz 集成同步降壓穩(wěn)壓器的典型應(yīng)用
- DC124,使用 LTC1416 高速 14 位、400Ksps 模數(shù)轉(zhuǎn)換器的演示板
- AD8618ARZ-REEL單電源緩沖DAC輸出運(yùn)算放大器典型應(yīng)用電路
- 使用 MaxLinear, Inc 的 SPX385AS-1.2/TR 的參考設(shè)計(jì)
- 使用 NXP Semiconductors 的 MC34SB0410AE 的參考設(shè)計(jì)
- 48-基于51單片機(jī)的矩陣電子秤設(shè)計(jì)
- 迅為6818/4418開發(fā)板Yocto開發(fā)指南
- 飛思靈楊清:RISC-V在工業(yè)交換機(jī)上的應(yīng)用
- ONLYOFFICE宣布新的合作伙伴計(jì)劃,擴(kuò)大在中國(guó)市場(chǎng)的在線業(yè)務(wù)
- 擴(kuò)大非存儲(chǔ)業(yè)務(wù) 三星等等大舉投資系統(tǒng)半導(dǎo)體
- 51單片機(jī)C51程序
- PWM里的控制
- 工業(yè)機(jī)器人更加準(zhǔn)確的方位
- 瑞薩電子發(fā)布首顆22納米微控制器樣片
- 06-S3C2440學(xué)習(xí)之移植2012u-boot到S3C2440(移植過(guò)程四)支持Nand Flash+支持DM9000網(wǎng)卡
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達(dá)進(jìn)化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- 公安部:目前我國(guó)市售汽車搭載的“智駕”系統(tǒng),都不具備“自動(dòng)駕駛”功能
- 德賽西威-旗艦級(jí)AI智能座艙域控制器 | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- Mobileye推出駕駛員監(jiān)測(cè)系統(tǒng)(DMS)技術(shù) ,實(shí)現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會(huì)盛大啟幕,雙城聯(lián)動(dòng)激發(fā)智慧出行產(chǎn)業(yè)新動(dòng)能
- Vicor Corporation 2025年第二季度財(cái)報(bào):專利訴訟和解推動(dòng)強(qiáng)勁增長(zhǎng)
- 智能底盤2.0競(jìng)賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機(jī)器人執(zhí)行關(guān)節(jié)?
- 特斯拉今年第二季度報(bào)告怎么說(shuō)?保持微利還想擴(kuò)大銷售?
- 京東數(shù)科將有大事,工商變更、注冊(cè)資本增幅900%
- “新基建”的號(hào)召,新能源充電樁三足立鼎格局前狼后虎
- 采用μC/OS-II系統(tǒng)和LPC2131微處理器實(shí)現(xiàn)自適應(yīng)均衡器的設(shè)計(jì)
- 基于arm的指紋識(shí)別門禁系統(tǒng)是如何設(shè)計(jì)的
- 虛構(gòu)業(yè)務(wù)+虛增利潤(rùn),深交所對(duì)新綸科技及相關(guān)當(dāng)事人受處分
- 中興通訊中國(guó)終端項(xiàng)目在程度落戶
- STM32單片機(jī)用FSMC接口控制SRAM
- 發(fā)揮5G、AI等優(yōu)勢(shì),華為和成都簽署人工智能大數(shù)據(jù)中心合作
- MSP430G2553捕獲程序案例與經(jīng)驗(yàn)分享