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