【整理】BIOS、BootLoader、uboot对比
生活随笔
收集整理的這篇文章主要介紹了
【整理】BIOS、BootLoader、uboot对比
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
bios
BIOS是英文"Basic Input Output System"的縮略語,直譯過來后中文名稱就是"基本輸入輸出系統"。其實,它是一組固化到計算機內主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機后自檢程序和系統自啟動程序。 其主要功能是為計算機提供最底層的、最直接的硬件設置和控制。
BIOS,Basic Input Output System 基本輸入輸出系統,意思是主板級別的一個小系統。負責系統(主要是主板)的硬件初始化,例如CPU,內存,硬盤,鍵盤,顯示卡,網卡等等硬件的初始化。初始化是BIOS的主要工作。傳統的個人電腦上面BIOS會有一個int19 軟件中斷功能,在初始化完成后,BIOS會進入int19中斷,尋找啟動介質,如軟盤,光盤,硬盤,flash或者網絡等等,讀取第一個扇區的內容到內存的0000:7C00處,跳入這個地址執行。這里int19就是一個bootloader,啟動引導器。所以BIOS具有Boot Loader的功能。當然,目前的BIOS功能已經被擴充了很多,例如電源管理方面的ACPI接口,USB驅動,PXE網絡引導功能,硬盤加密,TPM接口,BIOS配置界面,BIOS自動恢復等等。
BootLoader
BootLoader是一段小程序,可以把它想象成PC機linux上的GRUB/LILO引導程序,只不過在嵌入式linux中,沒有BIOS,而是直接從flash中運行,來裝載內核。它可以初始化硬件設備,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統做好準備。
1.引導加載程序
包括固化在固化中的boot程序(可選),和BootLoader兩大部分
2.linux內核
特定于嵌入式平臺的定制內核
3.文件系統
包括了系統命令和應用程序
--------------------------------------------------------------------------------
?BootLoader-->Boot Parameters-->Kernel-->Root Filesystem?
--------------------------------------------------------------------------------
為什么需要進行bootloader移植?
答:1.因為每種不同的CPU體系結構都有不同的BootLoader
2.BootLoader依賴于具體的嵌入式板級設備的配置
--------------------------------------------------------------------------------
BootLoader啟動過程可分為單階段和多階段(stage1、stage2),其中stage1完成初始化硬件,如CPU寄存器、內存控制器,為stage2準備內存空間。一般stage1是可以直接在nor flash中運行的,并將stage2復制到內存RAM中,設置堆棧,然后跳轉到stage2(從這也可以看出stage2是在RAM中運行的,與stage1不同)
BootLoader的stage1通常包括以下步驟:
1.硬件設備初始化? 如CPU寄存器、內存控制器
2.為加載BootLoader的stage2準備RAM空間
3.拷貝BootLoader的stage2到RAM空間中
4.設置好堆棧??? 為什么?為了跳轉到stage2的入口,因為stage2大多數是用C語言寫的
5.跳轉到stage2的C入口點
BootLoader的stage2通常包括以下步驟:
1.初始化本階段要使用到的硬件設備??? 各種設備,如網卡
2.將內核映像和根文件系統映像從flash上讀到RAM中去
3.調用內核
--------------------------------------------------------------------------------
uboot??
支持多種嵌入式操作系統的引導
UBOOT目錄結構
1.Borad??? ??? 與開發板有關的文件。第一個開發板都以一個子目錄出現在當前目錄中
2.Common??? 實現Uboot支持的命令
3.Cpu??? ??? 與特定CPU架構相關的代碼,支持的CPU對應一個子目錄(注意CPU與開發板的區別)
3.Disk??? ??? 對磁盤的支持
4.Doc??? ??? 文檔目錄
5.Drivers??? Uboot支持的設備驅動程序? 如各種網卡、串品、USB、支持CFI的Flash
6.Fs ??? ??? 文件系統的支持
7.Iclude??? Uboot使用的頭文件。該目錄下configs目錄有與開發板相關的配置頭文件??? ??? 該目錄下的asm目錄有與CPU體系結構相關的頭文件
8.Net??? ??? 與網絡協議相關的代碼??? 各路協議的實現
9.Tools??? ??? 生成Uboot的工具,如:mkimage,crc等等
Uboot編譯分為兩步
1.執行每種board相關的配置??? 如:make amdk_2420
2.編譯生成uboot.bin文件??? ??? 如:make CROSS_COMPILE=arm-linux-(指定正確路徑)
--------------------------------------------------------------------------------
UBOOT基于單板機提供了豐富的命令集操作
UBOOT命令
printenv查看環境變量(相當全局變量?)
setenv 添加、修改、刪除環境變量
1.setenv name value
set environment variable 'name' to 'value...'
2.setenv name
delete environment variable 'name'
saveenv保存環境變量
將當前定義的所有變量及其值存入flash中
--------------------------------------------------------------------------------
---------------------文件下載------------------------------------
tftp 通過網絡下載文件???? 使用前,配置好網絡
配置網絡:1.setenv ethaddr 12:34:56:78:8A:BC
2.setenv ipaddr 192.168.1.1
3.setenv serverip 192.168.1.254? (tftp服務器的地址)
連接下載:tftp 32000000 uImage
把server(IP=環境變量中設置的serverip)服務目錄下的uImage通過tftp讀入到0x32000000處
md 顯示內存區的內容
md[.b,.w,.l]address??? 如:md.w 1000000
mm[.b,.w,.l]address??? 如:mm.w 100000
mm 修改內存,地址自動遞增??? 提供了一種互動修改存儲器內容的方法,如果沒有輸入任何值,按回車內容保持不變,輸入空格然后按下回車,結束輸入
flinfo??? 查看Flash扇區信息
--------------------------------------------------------------------------------
protect Flash寫保護? 打開或關閉扇區寫保護
用法:
protect off all??? ??? 關閉所有扇區的寫保護
protect on all ??? ??? 打開所有扇區的寫保護
protect off start end ??? 關閉從start到end扇區的寫保護-----》protect off 0 1ffff(前一扇區減去1?)
protect on start end ??? 打開從start到end扇區的寫保護
--------------------------------------------------------------------------------
erase 擦除flash扇區
用法: erase start end??? 如: erase 30000 1efff
在使用cp命令向Nor型Flash寫入數據之前必須先使用erase命令擦除flash
cp 數據拷貝
cp [.b,.w,.l]saddress daddress len
cp提供了一種內存與內存,內存與Flash之間數據拷貝的方法
如:cp.b 31000000 50000 d0000 即是將內存地址0x31000000處的數據(長度為0xd0000)拷貝到地址0x50000處(Flash中)
--------------------------------------------------------------------------------
執行程序
go 執行內存中的二進制代碼,一個簡單的跳轉到指定地址
go addr[arg...]
start application at address 'addr',
passing 'arg' as arguments
bootm 執行內存中的二進制代碼
bootm [addr[arg...]]? ??? ?要求二進制代碼有固定格式的文件頭
boot application image stored in memory passing arguments 'arg...';
when booting a Linux kernel,'arg' can be the address of an initrd image
bdinfo??? 顯示開發板信息? (可用于啟動linux內核)
bdinfo命令將在終端顯示諸如內存地址和大小、時鐘頻率、MAC地址等信息
這些信息在傳遞給LIUNX內核一些參數時可能會用到
設置自動啟動
setenv bootcmd tftp 31000000 uImage \;bootm 31000000
saveenv 轉自:?http://blog.csdn.net/conowen/article/details/7253620
總結
以上是生活随笔為你收集整理的【整理】BIOS、BootLoader、uboot对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Altium Designer -- 差
- 下一篇: eureka自我保护功能