999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于IntelPXA270的Blob移植與實現

2009-04-12 00:00:00官國仕程文波
船海工程 2009年1期

摘 要:在基于嵌入式Linux系統的設計當中,一項最基本的也是嵌入式系統開發中至關重要的工作就是移植或構建一個Boot Loader。文章分析了Boot Loader工作原理及Blob的啟動流程,介紹了Blob移植的基本過程,并成功實現了Blob在基于IntelPXA270處理器平臺上的移植工作,目前Blob運行穩定。該移植方法具有一定的實踐參考和借鑒意義。

關鍵詞:嵌入式系統;引導程序;Blob移植;IntelPXA270

中圖分類號:TP368.1文獻標志碼:A文章編號:1671-7953(2009)01-0069-03

The Porting of Blob Based on IntelPXA270

GUAN Guo-shi,CHENG Wen-bo

(a.Department of Physics and Electronic Engineering,Yibin University,Yibin 644007,China)

Abstract: Porting or build a Boot Loader was a basic work in the embedded system design based on Linux,it’s important for subsequent development work. The article analyzed the principle of Boot Loader and the process of Blob,and introduced the process of porting of Blob,and then completion of porting based on IntelPXA270.Currently,Blob runs steadily. This method has certain of some reference significance for actual practice.

Key words: embedded system;boot Loader;porting of Blob;IntelPXA270

在嵌入式系統中,系統的啟動加載完全由引導程序(Boot Loader)來完成。引導程序負責初始化硬件設備、建立內存空間的映射圖,然后將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境[1]。基于此重要性,本文介紹了基于IntelPXA270處理器平臺來實現移植一個Boot Loader的全過程,對嵌入式系統的開發具有一定的實用性。

1 Boot Loader工作原理

從軟件的角度看,嵌入式Linux系統通常可以分為4個層次:引導程序(Boot Loader)、操作系統內核(Linux Kernel)、文件系統(File System)、應用程序(Application Program),如圖1所示[2]。

引導程序Boot Loader是嵌入式系統在加電或復位后執行的第一段代碼,它主要負責初

始化系統的最基本設備,然后將操作系統映像文件裝載到內存中,最后把CPU的控制權交給內核程序。

大多數Boot Loader都具有兩種不同的操作模式:①啟動加載(Boot Loading)模式:Boot Loader從目標機上的某個固態存儲設備上將操作系統加載到RAM中運行。②下載(Downloading)模式:在這種模式下,目標機上的Boot Loader通過串口連接或網絡連接等通信手段從主機下載文件(如操作系統內核映像、文件系統等)。從主機下載的文件通常先被Boot Loader保存到目標機的RAM中,然后再被Boot Loader寫到目標機上的Flash類固態存儲設備中。

從Flash設備上啟動Boot Loader分為兩個階段運行。第一階段包含依賴于CPU體系結構的硬件初始化代碼,用匯編語言實現,主要任務包括:①初始化基本的硬件設備,包括初始化中斷、CPU和RAM等基本設備;②準備加載Boot Loader第2階段代碼需要的RAM空間;③復制第2階段的代碼到RAM;④設置堆棧,跳轉到第2階段的C程序入口點。第二階段用C語言完成,主要任務包括:①初始化本階段要使用的硬件設備;②檢測系統內存映射;③將操作系統內核映像和根文件系統映像從Flash上讀到RAM空間中;④為內核設置啟動參數;⑤調用內核。

由于Boot Loader硬件的嚴重依賴性,要在嵌入式系統中建立一個通用的Boot Loader幾乎是不可能的,通常都需要修改Boot Loader的源程序來完成對特定平臺的移植。最常見的Boot Loader有U-boot、Blob、Vivi、E-boot、Redboot等。

2 Blob啟動過程

2.1 Blob簡介

Blob(Boot Loader Object)是一款功能強大的Boot Loader。它遵循GPL(GNU General Public License),源代碼完全開放,結構非常簡單,既可以用來簡單的調試,也可以啟動Linux Kernel。

Blob最初就是在Intel公司的StrongARM上實現的,所以Blob很容易被移植到ARM、XScale等體系結構的處理器上,如IntelPXA270等,本次移植所采用的實驗平臺就是基于 IntelPXA270的。

2.2 Blob啟動過程分析

Blob的啟動以前面所提到的下載模式運行,啟動過程[3-6]分為兩個階段:stage1和stage2,如圖2所示。其中,stage1在實驗平臺的Flash中運行,stage2在實驗平臺的RAM中運行。

在Blob的源文件中,重要的程序有:①../src/blob/start.S、②../src/blob/xlli/mainstone/start.s、③../src/blob/xlli/mainstone/xlli_LowLev_init.s、④../src/blob/trampoline.S、⑤../src/blob/main.c。

當系統上電后,CPU程序指針會指在地址0x00000000(FLASH)上,這里存儲的軟件就指向程序①,從程序①開始運行,然后跳轉到程序②,程序②調用程序③完成硬件的基本初始化(注:程序②是主要程序的流程與框架,程序③是具體的函數的實現);初始化完畢,返回程序①并調用../src/blob/testmem.S,測試RAM是否正確;再返回程序①,把stage2的代碼裝進RAM,并轉到RAM中stage2的起始地址(程序④);最后,通過程序④調用程序⑤,由程序⑤完成初始化串口和網絡、加載內核映像文件、等待用戶中斷進入Blob命令行或者直接啟動Linux Kernel,圖3給出程序⑤的流程。

3 Blob移植實現

3.1 移植平臺

本次Blob移植的硬件平臺是OURS-PXA270-EP,處理器是IntelPXA270,由北京奧爾斯公司根據IntelPXA270參考設計平臺Mainstone設計,核心板結構如圖4所示。

3.2 Blob移植

移植工作主要包括兩個部分:一是根據平臺修改硬件初始化代碼和驅動程序;二是添加PXA270及其硬件平臺構架相關的頭文件,在這個文件中指定Blob、內核、Ramdisk等在Flash的地址及其被加載到RAM中的地址,CPU相關的宏定義,硬件平臺相關的宏定義等。

下面給出具體的移植實現過程:

①在configure.in中添加PXA270硬件平臺聲明:

boardname=“Intel Mainstone”

AC_DEFINE(MAINSTONE,1,[ Intel Mainstone])

BLOB_PLATFORM_OBJ=“mainstone.o”

BLOB_FLASH_OBJS=“strata.o”

DIAG_PLATFORM_OBJ=“mainstone.o”

②在../include/blob/arch.h中添加PXA270硬件平臺的定義:

#include

#elif defined MAINSTONE

③在../include/blob/arch目錄下添加與PXA270硬件平臺相關的頭文件mainstone.h。該文件包括CPU及外圍設備相關的寄存器定義和其他常量定義。

④將硬件名稱添加到文件../utils/build/build_all和../utils/build/build_Makefile中的變量archs中。

⑤將與PXA270硬件平臺相關的源代碼文件名添加到../src/blob/Makefile.am文件中的EXTRA_blob_rest_elf32_SOURCES宏變量定義中。

⑥將體系結構編號添加到../include/blob/linux.h文件中。

#elif defined MAINSTONE

#define ARCH_NUMBER(406)

⑦編寫硬件平臺的FALSH驅動程序。在本次移植中,使用的是奧爾斯公司提供的FALSH驅動程序。

3.3 編譯Blob及燒寫Blob到硬件平臺

要編譯Blob,首先,配置好ARMlinux交叉編譯環境;然后,在終端下進入Blob目錄,運行命令make -f Makefile.cvs;接著,運行./configure命令配置Blob;最后,用make命令編譯生成最終的Blob.bin文件。再通過JTAG仿真器將Blob.bin文件燒寫到FLASH中運行調試即可。

4 結語

本文在分析了Boot Loader工作原理及Blob的啟動流程的基礎上,介紹了Blob的移植過程,并實現了Blob在基于IntelPXA270處理器平臺OURS-PXA270-EP上的移植,為后續的開發做好鋪墊,目前系統運行狀態穩定,該移植過程對進行嵌入式及相關開發具有一定的參考和借鑒意義。

參考文獻

[1]商 彬.嵌入式Linux C語言開發入門與編程實踐[M].北京:電子工業出版社,2008,26-32.

[2]羅苑棠,楊宗德.嵌入式Linux應用系統開發實例精講[M].北京:電子工業出版社,2007,318-328.

[3]周永冠,林喜榮,周 斌.Blob啟動流程分析及引導程序可移植性研究[J].電子技術應用,2007,33(7):21-23.

[4]殷 華,成長生.基于PXA27x處理器的BLOB的移植[J].電信快報:網絡與通信,2007,9:40-42.

[5]朱 力,黃春梅,石凌云.Blob在S3C2440A上的移植[J].國外電子元器件,2008,8:21-22.

[6]王青萍.嵌入式系統啟動軟件Bootloader的設計[J].現代電子技術,2008,31(10):70-72.

主站蜘蛛池模板: 国产欧美高清| 国产国产人成免费视频77777 | 国产成+人+综合+亚洲欧美| 亚洲91精品视频| 国产鲁鲁视频在线观看| 国产欧美另类| 精品人妻AV区| 精品综合久久久久久97超人| 国产乱子伦一区二区=| 国产91熟女高潮一区二区| www.91中文字幕| 国产极品嫩模在线观看91| 国产精品七七在线播放| 国产亚洲精久久久久久久91| 国产va在线观看| 国产精品毛片一区| 一级成人欧美一区在线观看| 国产精品所毛片视频| 亚洲精品色AV无码看| 亚洲av无码人妻| 无码免费视频| 亚洲人成网站色7799在线播放 | 在线免费观看AV| 99久久人妻精品免费二区| 国产日韩精品欧美一区灰| 国产91在线|中文| 999国内精品视频免费| 91成人免费观看| 亚洲精品国偷自产在线91正片| 日本高清有码人妻| 国产精品毛片一区视频播 | 强乱中文字幕在线播放不卡| 国产午夜福利在线小视频| 97视频免费在线观看| 91香蕉视频下载网站| 国产成人精品一区二区| 狠狠亚洲五月天| 97国产成人无码精品久久久| 国产永久在线视频| 色精品视频| 国产精品一线天| 国产精品男人的天堂| 精品视频91| 国产麻豆另类AV| 色成人综合| 九九热精品在线视频| 一本视频精品中文字幕| 国产电话自拍伊人| 二级特黄绝大片免费视频大片| 在线一级毛片| 国产熟睡乱子伦视频网站| 成人国产精品2021| 18禁影院亚洲专区| 国产SUV精品一区二区| 免费女人18毛片a级毛片视频| 欧美精品在线看| 国产亚洲视频免费播放| 国产精品内射视频| www.国产福利| 一级爱做片免费观看久久| 中文字幕在线看| 欧美午夜一区| 区国产精品搜索视频| 97免费在线观看视频| 欧美三级视频网站| 亚洲Aⅴ无码专区在线观看q| 在线色国产| 成人在线天堂| 91精品国产一区| 日韩精品专区免费无码aⅴ| 91久久夜色精品国产网站| 67194在线午夜亚洲| 久久五月视频| 91欧美亚洲国产五月天| 中文字幕一区二区人妻电影| 国产成人精品2021欧美日韩| 无码高清专区| 国产成人啪视频一区二区三区 | 婷婷色婷婷| 久久香蕉国产线看观看亚洲片| 精品人妻AV区| 4虎影视国产在线观看精品|