音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

嵌入式Linux Bootloader在MIPS64的移植

出處:國外電子元器件 發(fā)布于:2011-09-02 22:39:54

Linux簡介:

  Linux是一類Unix計算機(jī)操作系統(tǒng)的統(tǒng)稱。Linux操作系統(tǒng)的內(nèi)核的名字也是“Linux”。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展中著名的例子。嚴(yán)格來講,Linux這個詞本身只表示Linux內(nèi)核,但在實際上人們已經(jīng)習(xí)慣了用Linux來形容整個基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。Linux得名于計算機(jī)業(yè)余愛好者Linus Torvalds。

  Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991 年的10 月5 日。以后借助于Internet 網(wǎng)絡(luò),并經(jīng)過全世界各地計算機(jī)愛好者的共同努力下,現(xiàn)已成為今天世界上使用多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。

  1 引言     

    Linux具備良好的裁剪性和移植性,并且開源、資源豐富,已成為嵌入式系統(tǒng)的開發(fā)熱點。一個完整的嵌入式Linux系通通常包括Bootloader、內(nèi)核、文件系統(tǒng)三部分,目標(biāo)板上電后由Bootloader初始化硬件,引導(dǎo)內(nèi)核和文件系統(tǒng)來啟動Linux。但是由于在嵌入式開發(fā)中基于MIPS體系的Bootloader較少,開發(fā)者在移植MIPS Bootloader需花費大量精力。結(jié)合OCTEON3010(MIPS64)的U-boot移植經(jīng)驗,分析嵌入式LinuxBootloader的工作原理及功能,設(shè)計了一個基于MIPS體系的Bootloader模型。對OCTEON系列的MIPS處理器Bootloader的設(shè)計具有參考價值和指導(dǎo)意義。

  BootLoader簡介:

  簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。比如在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。

  2 Bootloader原理分析

      Bootloader是在運行操作系統(tǒng)內(nèi)核前所執(zhí)行的一段小程序。通過執(zhí)行這段小程序,實現(xiàn)初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而為系統(tǒng)的軟硬件環(huán)境設(shè)置一個合適狀態(tài),以便為終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確環(huán)境。

      大多數(shù)Bootloader包含"啟動加載"和""兩種操作模式。從終用戶來看,Bootloader就是用來加載操作系統(tǒng),而無工作模式區(qū)別。其中,啟動加載模式是Bootloader從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶介入。這種模式是Bootloader的正常工作模式。而在模式下,目標(biāo)機(jī)上的Bootloader通過串口連接或網(wǎng)絡(luò)連接從主機(jī)(Host)文件,例如內(nèi)核映像和根文件系統(tǒng)映像等。

      由于實現(xiàn)Bootloader依賴CPU的體系結(jié)構(gòu),因此大多數(shù)Bootloader分為stage1和stage2兩部分,并依賴于CPU體系結(jié)構(gòu)的代碼,例如:設(shè)備初始化代碼等,通常放在stage1中,一般采用匯編語言。而stage2則通常采用C語言實現(xiàn)復(fù)雜功能,而且代碼具有良好的可讀性和移植性。stage1步驟通常包括:硬件設(shè)備初始化;為加載Bootloader的stage2準(zhǔn)備RAM空間;拷貝Bootloader的stage2到RAM空間中;設(shè)置好堆棧;跳轉(zhuǎn)到stage2的C入口點。Bootloader的stage2步驟通常包括:初始化當(dāng)前階段使用的硬件設(shè)備;檢測系統(tǒng)內(nèi)存映射;將Kernel映像和根文件系統(tǒng)映像從Flash上讀到RAM空間中;為內(nèi)核設(shè)置啟動參數(shù);調(diào)用內(nèi)核。

  3 設(shè)計移植

  3.1 啟動流程

      針對具體的硬件內(nèi)容,詳細(xì)分析U-Boot的啟動流程后,給出啟動流程中需要修改的代碼。

  3.2Linux bootloader 編寫方法引導(dǎo)過程概述

  首先需要把linux內(nèi)核的setup部分拷貝到9020H:0開始的地址,然后把保護(hù)模式內(nèi)核拷貝到1MB開始的地址,然后根據(jù)Linux Boot Protocol 2.03的內(nèi)容設(shè)定參數(shù)區(qū)的內(nèi)容,基地址就是9000H:0,使用一條ljmp $0x9020,$0跳轉(zhuǎn)到setup段,

  3.3 移植分析

      片級移植針對具體CPU初始化代碼的修改,針對對應(yīng)的MIPS平臺,主要包括:通用寄存器的初始化、CP0的初始化、watchdog初始化、Cache初始化、TLB初始化。板級移植包括:串口驅(qū)動、Flash讀寫驅(qū)動、HD讀寫驅(qū)動、網(wǎng)卡驅(qū)動。而功能層擴(kuò)展可根據(jù)需求添加新功能或裁減優(yōu)化,包括調(diào)試功能、啟動功能、功能等。

  3.4 修改代碼

      主要修改的代碼為:makefile添加開發(fā)板的編譯支持;Include/configs/myboard.h開發(fā)板的定義,啟動參數(shù)等;cpu/mips/start.s修改初始化代碼和入口;board/myboard/flash.c對應(yīng)的Nor Flash驅(qū)動;board/myboard/myboard.c對應(yīng)的板級初始化代碼;board/myboard/lowlevel_init.s初始化硬件的匯編代碼;board/myboard/serial.c串口驅(qū)動。

  4 OCTEON系列CPU的硬件初始化實例

  4.1 開發(fā)環(huán)境及硬件平臺簡介

      采用的是宿主機(jī)+目標(biāo)板的模式,宿主機(jī)為PC+FC6,目標(biāo)板的CPU采用基于MIPS64 V2體系結(jié)構(gòu)的處理器OCTEON_CN3010,NOR Flash采用AMD公司8 Mb的AM-29DL640G.SDRAM采用三星公司512 Mb的M378T6553CZ3-CD5(64 Mb×8 bit)。存儲部分的硬件連接如圖1所示。

  4.2 具體實現(xiàn)代碼

      系統(tǒng)的起始地址統(tǒng)一規(guī)定為0xBFC00000,加電后,CPU從該地址開始執(zhí)行。該地址也就是系統(tǒng)異常處理向量表的項。0xBFC00000處的中斷向量表起始處的跳轉(zhuǎn)命令,跳到了InitTLBStart中,完成了系統(tǒng)的大部分初始化,例如設(shè)置寄存器、CPU、SDRAM、Flash等。以下為具體程序代碼:

      系統(tǒng)初始化后,跳轉(zhuǎn)到board.c。在board.c中的checkboard()函數(shù)將進(jìn)一步設(shè)置CPU、SDRAM、Cache、串口等,并將硬件初始化代碼從Flash拷貝到SDRAM中繼續(xù)運行,調(diào)用main_loop()函數(shù),進(jìn)入Bootloader的個c函數(shù)-main_loop()函數(shù),在這個函數(shù)中將初始化硬件平臺相關(guān)的參數(shù)、模塊,并優(yōu)化參數(shù),設(shè)置loader參數(shù)等硬件初始化。

  4.3 Bootloader的燒錄和啟動

      使用Flash燒錄器把生成的u-boot.Bin文件燒錄到flash后,將其放人目標(biāo)板的Flash槽。目標(biāo)板通電后,串口輸出數(shù)據(jù)。至此,Bootloader被成功移植。

  在專用的嵌入式板子運行GNU/Linux系統(tǒng)已經(jīng)變得越來越流行。一個嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€層次:

  1、 引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼,和BootLoader兩大部分。

  2、 Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。

  3、 文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk來作為rootfs。

  4、 用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。

  5 結(jié)語

      經(jīng)過分析引導(dǎo)轉(zhuǎn)載系統(tǒng)在嵌入式Linux系統(tǒng)中的工作原理及功能,結(jié)合移植經(jīng)驗,設(shè)計了一個基于MIPS體系的引導(dǎo)裝載系統(tǒng)模型,并給出了OCTEON初始化實例。本引導(dǎo)裝載系統(tǒng)已應(yīng)用于目標(biāo)板中,達(dá)到了預(yù)期效果,這樣證明這種引導(dǎo)裝載系統(tǒng)的模型可行,將對OCTEON系列的MIPS處理器Bootloader的設(shè)計有一定參考價值和指導(dǎo)意義。


  
關(guān)鍵詞:嵌入式

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!