日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

Linux Bootloader

發(fā)布者:pi26最新更新時(shí)間:2024-12-03 來(lái)源: cnblogs關(guān)鍵字:Linux  Bootloader 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

引言:

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


關(guān)鍵字:Linux  Bootloader 引用地址:Linux Bootloader

上一篇:分析對(duì)比主流Bootloader的性能
下一篇:Ubuntu 16.04上安裝SkyEye及測(cè)試

推薦閱讀最新更新時(shí)間:2025-07-01 15:29

什么是Bootloader 淺談STM32中bootloader的內(nèi)存分配
1. 什么是Bootlo ad er Bootloader是 硬件 啟動(dòng)的引導(dǎo)程序,是運(yùn)行 操作系統(tǒng) 的前提。在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段小代碼。對(duì)硬件進(jìn)行相應(yīng)的初始化和設(shè)定,最終為操作系統(tǒng)準(zhǔn)備好環(huán)境。 2. Bootloader的特點(diǎn) Bootloader不屬于操作系統(tǒng),一般采用 匯編 語(yǔ)言和 C語(yǔ)言 開發(fā)。需要針對(duì)特定的硬件平臺(tái)編寫。在移植過(guò)程時(shí),首先為開發(fā)板移植Bootloader。Bootloader不但依賴于 CPU 的體系架構(gòu),而且依賴于 嵌入式系統(tǒng) 板級(jí)設(shè)備的配置。 3. STM32 中bootloader的內(nèi)存分配 stm32默認(rèn)的是從0x08000000開始啟動(dòng)程序,所以bootloader
[單片機(jī)]
什么是<font color='red'>Bootloader</font> 淺談STM32中<font color='red'>bootloader</font>的內(nèi)存分配
一文看懂汽車電子ECU bootloader開發(fā)
  隨著半導(dǎo)體技術(shù)的不斷進(jìn)步(按照摩爾定律),MCU內(nèi)部集成的邏輯功能外設(shè)越來(lái)越多,存儲(chǔ)器也越來(lái)越大。消費(fèi)者對(duì)于汽車節(jié)能(經(jīng)濟(jì)和法規(guī)對(duì)排放的要求)型、舒適性、互聯(lián)性、安全性(功能安全和信息安全)的要求越來(lái)越高,特別是近年來(lái)新能源電動(dòng)車、車聯(lián)網(wǎng)和自動(dòng)駕駛技術(shù)的興起,更大大加速了汽車電子技術(shù)的發(fā)展。汽車電子ECU(Electronic Control Unit--電控單元)集成的功能日益復(fù)雜,為了應(yīng)對(duì)軟件遠(yuǎn)程(在線)功能升級(jí)(增加新的功能)和bug修復(fù)的需求、對(duì)bootLoader(啟動(dòng)加載程序)的需求越來(lái)越多。本文詳細(xì)介紹了汽車電子ECU bootloader的一般性工作原理和開發(fā)要點(diǎn),其適用于所有的汽車電子ECU bootload
[嵌入式]
一文看懂汽車電子ECU <font color='red'>bootloader</font>開發(fā)
MC9S12XEP 的bootloader解析
MC9S12XEP 的bootloader 歸納總結(jié) 兩個(gè)要點(diǎn): 1.ROM不要重疊,bootloader的代碼與用戶應(yīng)用代碼不要重疊。各自設(shè)置各自的ROM區(qū)域; 2.bootloader有一部分代碼是在RAM里運(yùn)行的,所以RAM也不能重疊,RAM可以分為如下三種: a.) 堆棧區(qū)域; b.)bootloader代碼變量區(qū)域; c.)bootloader 中斷地址; 上述三種RAM類型,不可重疊。 先說(shuō)bootloader部分,需要處理的步驟如下: a). 為 bootloader 劃出ROM,(.prm文件修改) b). 為bootloader ROM里再劃出一塊區(qū)域,
[單片機(jī)]
STM8L自帶bootloader使用教程
筆者使用的單片機(jī)型號(hào)是:STM8L151C8T6,有64kFlash 本教程可能使用的文件下載地址: 官方固件及指導(dǎo)手冊(cè):https://www.stmcu.com.cn/Index/search?search_keywords=UM0560 百度網(wǎng)盤鏈接:https://pan.baidu.com/s/1XyBWJIhHsuwWgwGNuHaULA 提取碼:9rgk CSDN下載鏈接(提供官方源地址,可免費(fèi)下載):https://download.csdn.net/download/aaricyang/11199903 有讀者問(wèn)軟件復(fù)位可不可以,答案是不行,軟件復(fù)位地址是0x8000,NRST引腳復(fù)位地址是0
[單片機(jī)]
STM8L自帶<font color='red'>bootloader</font>使用教程
UBOOT和bootloader的關(guān)系
uboot是一個(gè)通用的免費(fèi)開放源碼的boot程序,支持很多的處理器。 以下是現(xiàn)在網(wǎng)上下載一個(gè)u-boot-1.1.1版本,用于at91rm9200系統(tǒng)的修改的例子。最后在redhat8.0上,用gcc2.95編譯通過(guò)。 在網(wǎng)上下載了uboot-1.1.1版本。要用于自己的at91rm9200的系統(tǒng),這個(gè)系統(tǒng)的情況是: SDRAM: 32Mbytes NCS1 FLASH: 8Mbytes NCS0 涉及到的文件有四個(gè): common.h flash.c flash.h ./board/at91rm9200dk/config.mk 以下簡(jiǎn)單的說(shuō)說(shuō)。 一、首先讀讀uboot自帶的readme文件,了解了一個(gè)大概。
[單片機(jī)]
Linux下18b20溫度傳感器驅(qū)動(dòng)代碼及測(cè)試實(shí)例
驅(qū)動(dòng)代碼: #include linux/module.h #include linux/fs.h #include linux/kernel.h #include linux/init.h #include linux/delay.h #include linux/cdev.h #include linux/device.h #include linux/gpio.h #include plat/gpio-cfg.h #define DEVICE_NAME TEM0 #define TEM_SHOW_CODE 0x01 //static struct cdev
[單片機(jī)]
Linux嵌入式學(xué)習(xí)-ds18b20驅(qū)動(dòng)
ds18b20的時(shí)序圖如下: 復(fù)位時(shí)序: 讀寫時(shí)序: 以下是程序代碼: #include linux/module.h #include linux/init.h #include linux/miscdevice.h #include linux/interrupt.h #include linux/io.h #include linux/fs.h #include linux/slab.h #include asm/irq.h #include linux/random.h #include linux/uaccess.h #include linux/device.h
[單片機(jī)]
<font color='red'>Linux</font>嵌入式學(xué)習(xí)-ds18b20驅(qū)動(dòng)
ARM-Linux S5PV210 UART驅(qū)動(dòng)(6)----platform device的添加
開發(fā)板是飛凌OK210 arch/arm/mach-s5pv210/mach-smdkc110.c 首先是UART的寄存器默認(rèn)配置信息: /* Following are default values for UCON, ULCON and UFCON UART registers */ #define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | S3C2410_UCON_RXILEVEL | S3C2410_UCON_TXIRQMODE | S3C2410_UCON_RXIRQMODE |
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved