linux根文件系统的移植 课程设计,linux课程设计bootloader的移植.doc
linux課程設(shè)計(jì)bootloader的移植
嵌
入
式
Linux
課
程
設(shè)
計(jì)
報(bào)
告
課題:嵌入式Linux下的bootloader之u-boot的移植
姓名: 胡歡
專業(yè)班級(jí): 電信三班
學(xué)號(hào):080102031122
指導(dǎo)老師: 劉小洋
時(shí)間: 2011-10-12
一 概述:
(1 ) BootLoader是什么?
系統(tǒng)上電之后,需要一段程序來進(jìn)行初始化:關(guān)閉WATCHDOG、改變系統(tǒng)時(shí)鐘、初始化存儲(chǔ)控制器、將更多的代碼復(fù)制到內(nèi)存中等。如果它能將操作系統(tǒng)內(nèi)核復(fù)制到內(nèi)存中運(yùn)行,無論從本地,比如Flash;Bootloader。
簡(jiǎn)單地說,Boot Loader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序,因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來完成。
Bootloader 是可以添加功能的,比如網(wǎng)絡(luò)功能。通過串口或網(wǎng)絡(luò)從PC下載燒寫文件、將存儲(chǔ)在Flash 上壓縮的文件解壓后再運(yùn)行等,這樣的Bootloader是比較強(qiáng)大的,也稱為Monitor。實(shí)際上,在最終產(chǎn)品中用戶并不需要使用這些功能,它們只是為了方便開發(fā)。
Bootloader 的實(shí)現(xiàn)非常依賴于具體硬件,在嵌入式系統(tǒng)中硬件配置千差萬別,即使是相同的CPU,它的外設(shè)也可能不同,比如Flash不同,所以不可能有一個(gè)Bootloader 支持所有的CPU、所有的電路板。即使是支持CPU 架構(gòu)比較多的U-Boot,也不是一拿來就可以使用的,需要進(jìn)行一些移植。
(2) 為什么需要BootLoader?
引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。PC機(jī)中的引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的OS BootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬件檢測(cè)和資源分配后,將硬盤MBR中的BootLoader讀到系統(tǒng)的 RAM中,然后將控制權(quán)交給OS BootLoader。BootLoader的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到 RAM 中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開始啟動(dòng)操作系統(tǒng)。
而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來完成。比如在一個(gè)基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。
簡(jiǎn)單地說,BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。
嵌入式Linux軟件結(jié)構(gòu)與分布在一般情況下嵌入式Linux系統(tǒng)中的軟件主要分為以下及部分:(1)引導(dǎo)加載程序:其中包括內(nèi)部ROM中的固化啟動(dòng)代碼和Boot Loader兩部分。而這個(gè)內(nèi)部固化ROM是廠家在芯片生產(chǎn)時(shí)候固化的,作用基本上是引導(dǎo)Boot Loader。有的芯片比較復(fù)雜,比如Omap3,他在flash中沒有代碼的時(shí)候有許多啟動(dòng)方式:USB、UART或以太網(wǎng)等等。而S3C24x0則很簡(jiǎn)單,只有Norboot和Nandboot。(2)Linux kernel 和drivers。(3)文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上的文件系統(tǒng)(EXT4、UBI、CRAMFS等等)。它是提供管理系統(tǒng)的各種配置文件以及系統(tǒng)執(zhí)行用戶應(yīng)用程序的良好運(yùn)行環(huán)境的載體。(4)應(yīng)用程序。用戶自定義的應(yīng)用程序,存放于文件系統(tǒng)之中。在Flash 存儲(chǔ)器中,他們的 一般分布如下:
U-Boot主要目錄結(jié)構(gòu)- board 目標(biāo)板相關(guān)文件,主要包含SDRAM、FLASH驅(qū)動(dòng);- common 獨(dú)立于處理器體系結(jié)構(gòu)的通用代碼,如內(nèi)存大小探測(cè)與故障檢測(cè);- cpu 與處理器相關(guān)的文件。如mpc8xx子目錄下含串口、網(wǎng)口、LCD驅(qū)動(dòng)及中斷初始化等文件;- driver 通用設(shè)備驅(qū)動(dòng),如CFI FLASH驅(qū)動(dòng)(目前對(duì)INTEL FLASH支持較好)- doc U-Boot的說明文檔;- examples可在U-Boot下運(yùn)行的示例程序;如hello_world.c,timer.c;- include U-Boot頭文件;尤其configs子目錄下與目標(biāo)板相關(guān)的配置頭文件是移植過程中經(jīng)
總結(jié)
以上是生活随笔為你收集整理的linux根文件系统的移植 课程设计,linux课程设计bootloader的移植.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 多人在同一分支上迭代开发时,如何
- 下一篇: 固态硬盘对于linux提升,固态硬盘在L