第5章嵌入式系統(tǒng)引導程序_第1頁
第5章嵌入式系統(tǒng)引導程序_第2頁
第5章嵌入式系統(tǒng)引導程序_第3頁
第5章嵌入式系統(tǒng)引導程序_第4頁
第5章嵌入式系統(tǒng)引導程序_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

嵌入式系統(tǒng)軟件設計與開發(fā)

--bootloader

嵌入式系統(tǒng)引導程序主要內容包括:Bootloader概述常見的bootloaderBlobBlob移植Blob的使用Bootloader概述Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一段小程序,通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射表,從而建立適當的系統(tǒng)軟硬件環(huán)境,為最終調用操作系統(tǒng)內核做好準備。Bootloader概述Bootloader的板上地址分布Bootloader主要任務(1/2)初始化處理器以及外設的硬件資源配置,CPU片內和片外設備,例如必須正確的配置SDRAM控制器初始化I/O芯片,可能有的設備:串口,報告Bootloader成功/失敗網絡或者Flash接口,引導操作系統(tǒng)執(zhí)行系統(tǒng)自檢,報告檢測結果通過用戶命令行提供特定應用程序Bootloader任務(2/2)使用TFTP協(xié)議從網口接收、或者xmodem協(xié)議從串口接收,操作系統(tǒng)鏡像文件到RAM將鏡像燒寫到flash中,重啟后負責找到該鏡像、解壓到RAM中,并跳轉到解壓位置處執(zhí)行直接跳轉到RAM處執(zhí)行該鏡像歸納:初始化處理器及外設的硬件資源配置建立內存空間映射圖LoaderBootBootloader的操作模式啟動模式下載模式常見的BootloaderBootloaderDescriptionx86ARMPowerPCLILOMaindiskbootloaderforLinuxYesNoNoGRUBGNU’ssuccessortoLILOYesNoNoLoadlinLoadsLinuxfromDOSYesNoNoROLOLoadsLinuxfromROMwithoutaBIOSYesNoNoEtherbootROMableloaderforbootingsystemsthroughEthernetcardsYesNoNoLinuxBIOSLinux-basedBIOSreplacementYesNoNoBLOBLoaderfromtheLARThardwareprojectNoYesNoU-bootUniversalloaderYesYesYesRedBooteCos-basedloaderYesYesYesARMBootloaderU-Boot是常用的ARMbootloaderArmboot加入到u-boot中支持arm720,arm920,arm926,sa1100,xscaleBlobBlob最早是為LART項目開發(fā)的bootloaderBlob被移植到其他許多ARM平臺RedbootRedboot也被用在許多arm平臺的bootloaderblobBlob簡介Blob是“Boot

loader

Object”的縮寫,是一款嵌入式linux引導程序,源代碼開放,遵循GPL。最初是Jan-Derk

Bakker和ErikMouw針對LART目標板而設計的,同其他開源代碼一樣,很多人為blob的發(fā)展做出了自己的貢獻。到現在為止,blob已經支持多種cpu,包括sa1100,sa1110,pxa255,pxa270等,用戶可以根據目標板的特性進行定制。

blob功能它能實現以下功能:引導嵌入式linux,它可以把linuxkernel、fs等從flash中l(wèi)oad到Ram中執(zhí)行命令行下在線更新kernel和fs。命令行下可以直接對物理尋址空間進行查看和修改。

Blob結構目錄子目錄包含內容Doc相關說明文檔IncludeBlob的頭文件srcblobBlob下基本功能的代碼diagDIAG項目的源代碼lib針對一些外設的驅動代碼和庫函數commandsBlob下的命令指令代碼toolsBuild存放構造腳本,用于自動運行configure,創(chuàng)建各自平臺的makefile文件,自動配置各個平臺utils存放腳本,可以批處理執(zhí)行automake、aclocal、autoconf、autoheader,產生configure、config.h配置文件Blob相關資源最新的源代碼http:///projects/blobblob編譯cd/pxa270_linux/blob_ours/blob_xscalemake–fMake

./configure--host=arm-linux--with-board=mainstone–with-linux-prefix=/pxa270_linux/linux/--enable-xlli--enable-networkmake生成的blob保存在../blob-xscale/src/blob/Blob-燒寫到目標板1.正確連接JTAG下載線2.燒寫工具./Jflashmm-linuxPXA270blobp尋找PXA270.dat文件所指定的CPU,把Blob燒寫到這個CPU使用的Flash中。blob引導過程分析blob啟動過程

Stage1:基本的硬件初始化為加載stage2準備RAM空間拷貝stage2到RAM中設置堆棧指針sp跳到stage2的入口點異常向量表地

址異

常異常中斷模式優(yōu)先級0x00000000復位管理模式(SVC)10x00000004未定義指令未定義指令中止模式60x00000008軟件中斷管理模式(SVC)60x0000000C預取指中止(從存儲器取指出錯)中止模式50x00000010數據中止(數據訪問存儲器出錯)中止模式20x00000014保留未使用0x00000018IRQ(IRQ)模式40x0000001CFIQ(FIQ)模式3blob啟動過程

Stage2:清除BSS段設置堆棧指針sp初始化本階段要使用到的硬件設備檢測系統(tǒng)的內存映射加載內核映像和文件系統(tǒng)映像調用內核blob代碼分析重要文件../src/blob/start.S系統(tǒng)啟動從這里開始,當系統(tǒng)上電后,CPU指針會指在地址0X00000000(FLASH)上。../src/blob/trampoline.S這部分程序是匯編代碼與C代碼的結合點,通過這個程序,把需要運行的C代碼裝載到內存中,設置堆棧,并把程序指針指向C代碼實現的程序。../src/blob/main.c初始化Flash,設置網絡IP,初始化串口,初始化LED,初始化網絡設備,準備BLOB命令,裝載內核映像,打印基本信息。../src/blob/xlli/mainstone/start.s../src/blob/xlli/mainstone/xlli_LowLev_Init.s這兩個匯編程序主要實現硬件的基本初始化,比如初始化GPIO,初始化內存,初始化CPUCLOCKblob移植Blob移植定制目標板在configure.in加入目標板定義

board_name="IntelHCDDBBVA0(Mainstone)" AC_DEFINE(MAINSTONE,1,[IntelHCDDBBVA0(Mainstone)]) BLOB_PLATFORM_OBJS="mainstone.o" BLOB_LED_DRIVER_OBJS="led-mmap.o" BLOB_LED_STARTCODE="ledasm-mmap.o" BLOB_FLASH_OBJS="strata.o" BLOB_NETWORK_DRIVER_OBJS="ether-smc91x.o" DIAG_PLATFORM_OBJS="mainstone.o" use_cpu="pxa270"

use_lcd="no" ;;

Blob移植指定目標板對應的.h文件在include/blob/arch.h

中加入#elifdefinedMAINSTONE#include<blob/arch/mainstone.h>

Blob移植添加目標板依賴文件添加include/blob/arch/mainstone.h

src/blob/mainstone.c

當然如果自己寫,那工作量太大了,可以根據目標板的情況,找一個和它類似的板子,復制過來修改。

在這里主要設置cpu速度、串口和它的波特率,各個模塊在flash和ram中的位置,CPU各個寄存器的設置。其中,sdram的設置很重要,否則blob無法正確load到ram中運行,GPIO也要小心設置,調整到正確的工作模式和初始電平,否則可能板子無法正確工作。

Blob移植在mainstone.h

和mainstone.c

所在目錄的Make

中相應添加文件重新編譯,重新configure,以添加“--with-board=mainstone”

Blob–如何添加驅動程序如何在L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論