新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > BootLoader簡介與基本命令

BootLoader簡介與基本命令

作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
一.BootLoader簡介
在專用的嵌入式板子運行GNU/Linux系統(tǒng)已經(jīng)變得越來越流行。一個嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€層次:
1、引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。
3、文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk來作為rootfs。
4、用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI懂。
引導(dǎo)加載程序是系統(tǒng)加電后運行的第一段軟件代碼。PC機中的引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的OS BootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的BootLoader讀到系統(tǒng)的RAM中,然后將控制權(quán)交給OS BootLoader。BootLoader的主要運行任務(wù)就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,也即開始啟動操作系統(tǒng)。
而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。比如在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。
簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。
通常,BootLoader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫ootLoader歸納出一些通用的概念來,以指導(dǎo)用戶特定的BootLoader設(shè)計與實現(xiàn)。
二.U-BOOT介紹
uboot是一個龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見的外設(shè)的驅(qū)動,是一個功能強大的板極支持包。其代碼可以從http://sourceforge.net/projects/u-boot下載
U-BOOT是由PPCBOOT發(fā)展起來的,是PowerPC、ARM9、Xscale、X86等系統(tǒng)通用的Boot方案,從官方版本0.3.2開始全面支持SC系列單板機。u-boot是一個open source的bootloader,目前版本是0.4.0。u-boot是在ppcboot以及armboot的基礎(chǔ)上發(fā)展而來,雖然宣稱是0.4.0版本,卻相當(dāng)?shù)某墒旌头€(wěn)定,已經(jīng)在許多嵌入式系統(tǒng)開發(fā)過程中被采用。由于其開發(fā)源代碼,其支持的開發(fā)板眾多。唯一遺憾的是并不支持我們現(xiàn)在學(xué)習(xí)所用samsung 44B0X的開發(fā)板。
為什么我們需要u-boot?顯然可以將ucLinux直接燒入flash,從而不需要額外的引導(dǎo)裝載程序(bootloader)。但是從軟件升級的角度以及程序修補的來說,軟件的自動更新非常重要。事實上,引導(dǎo)裝載程序(bootloader)的用途不僅如此,但僅從軟件的自動更新的需要就說明我們的開發(fā)是必要的。
同時,u-boot移植的過程也是一個對嵌入式系統(tǒng)包括軟硬件以及操作系統(tǒng)加深理解的一個過程。
四.常用U-BOOT命令介紹
1.list得到所有命令列表
2.help: help usb,列出USB功能的使用說明
3.ping:注:只能開發(fā)板PING別的機器
4.setenv:設(shè)置互環(huán)境變量:
5.setenv serverip 192.168.0.1
6.setenv ipaddr 192.168.0.56
7.setenv bootcmd tftp 32000000 vmlinux; kgo 32000000’
8.saveenv:保存環(huán)境變量
9.在設(shè)置好環(huán)境變量以后,保存變量值
10.tftp: tftp 32000000 vmlinux,把server(IP=環(huán)境變量中設(shè)置的serverip)中/tftpdroot/ 下的vmlinux通過TFTP讀入到物理內(nèi)存32000000處。
11.kgo:起動沒有壓縮的linux內(nèi)核,kgo 32000000
12.bootm:起動UBOOT TOOLS制作的壓縮LINUX內(nèi)核, bootm 3200000
13.protect: 對FLASH進行寫保護或取消寫保護, protect on 1:0-3(就是對第一塊FLASH的0-3扇區(qū)進行保護),protect off 1:0-3取消寫保護
14.erase:刪除FLASH的扇區(qū), erase 1:0-2(就是對每一塊FLASH的0-2扇區(qū)進行刪除)
15.cp: 在內(nèi)存中復(fù)制內(nèi)容, cp 32000000 0 40000(把內(nèi)存中0x32000000開始的0x40000字節(jié)復(fù)制到0x0處)
16.mw: 對RAM中的內(nèi)容寫操作, mw 32000000 ff 10000(把內(nèi)存0x32000000開始的0x10000字節(jié)設(shè)為0xFF)
17.md: 修改RAM中的內(nèi)容, md 32000000(內(nèi)存的起始地址)
18.usb:
lusb start:起動usb 功能
lusb info:列出設(shè)備
lusb scan:掃描usb storage(u 盤)設(shè)備
19.fatls:列出DOS FAT文件系統(tǒng),如:fatls usb 0列出第一塊U盤中的文件
20.fatload:讀入FAT中的一個文件,如:fatload usb 0:0 32000000 aa.txt
21.把USB中的aa.txt 讀到物理內(nèi)存0x32000000處!
22.flinfo:列出flash的信息
23.loadb:準備用KERMIT協(xié)議接收來自kermit或超級終端傳送的文件。
24.nfs: nfs 32000000 192.168.0.2:aa.txt , 把192.168.0.2(LINUX 的NFS文件系統(tǒng))中的NFS文件系統(tǒng)中的aa.txt 讀入內(nèi)存0x32000000處。



關(guān)鍵詞: BootLoader基本命

評論


技術(shù)專區(qū)

關(guān)閉