亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ARM嵌入式開發(fā)的BootLoader設(shè)計(jì)與實(shí)現(xiàn)

        2014-07-03 11:35:41徐磊
        電腦知識(shí)與技術(shù) 2014年4期

        徐磊

        摘要:該文簡要介紹了嵌入式開發(fā)中引導(dǎo)程序的重要性。以及嵌入式開發(fā)過程中BootLoader的實(shí)現(xiàn)原理,并結(jié)合基于ARM體系架構(gòu)S3C2410芯片中BootLoader的具體開發(fā)過程與實(shí)例對(duì)系統(tǒng)引導(dǎo)程序作出深入剖析,測試結(jié)果表明該設(shè)計(jì)具有良好的穩(wěn)定性和高效性。

        關(guān)鍵詞:嵌入式開發(fā);bootlooder;引導(dǎo)加載程序

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)04-0762-03

        隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備已經(jīng)普及到社會(huì)的每個(gè)角落。嵌入式處理器種類繁多,有ARM、MIPS/PPC等多種架構(gòu)。其中32位ARM嵌入式處理器具有高性能、低功耗以及價(jià)格低廉的特征,已被廣泛用于消費(fèi)電子品和無線網(wǎng)絡(luò)通信設(shè)備上。目前用于嵌入式開發(fā)的操作系統(tǒng)多種多樣,如嵌入式Linux、VxWorks、windowsCE等。其中,Linux是遵循GPL協(xié)議的開發(fā)源碼的操作系統(tǒng),內(nèi)核可以任意剪裁以及支持硬件種類繁多。

        要把嵌入式LINUX操作系統(tǒng)移植到嵌入式設(shè)備的裸板上,我們必須開發(fā)出類似個(gè)人pc上的BIOS來把linux操作系統(tǒng)讀到內(nèi)存中運(yùn)行。這個(gè)類似于BIOS的啟動(dòng)程序就叫Bootloader,其目的是用于初始化硬件并且進(jìn)一步加載、引導(dǎo)嵌入式操作系統(tǒng)體系運(yùn)行。Bootloader功能是初始化硬件設(shè)備,完成處理器以及各種設(shè)備的初始化工作;屏蔽底層硬件差異,使得上層應(yīng)用軟件編寫和移植更加方便;調(diào)用操作系統(tǒng)內(nèi)核,起到引導(dǎo)和加載內(nèi)核的作用;向內(nèi)核傳遞必要的與硬件相關(guān)的信息。當(dāng)內(nèi)核啟動(dòng)后,Bootloader的使命也就完成,自此嵌入式設(shè)備便進(jìn)入操作系統(tǒng)和應(yīng)用程序運(yùn)行階段。

        1 系統(tǒng)硬件結(jié)構(gòu)

        本系統(tǒng)采用基于ARM架構(gòu)的S3C2410開發(fā)板為實(shí)例,具體討論Bootloader的設(shè)計(jì)。

        S3C2410芯片是ARM公司的32位ARM920T處理器核。S3C2410處理器有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,64MB的NAND控制器,3路UART,4路DMA,I/O口,RTC,觸摸屏接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410芯片可運(yùn)行在200MHz以上。

        2 Bootloader設(shè)計(jì)與實(shí)現(xiàn)

        通常Bootloader的加載有兩種方式:第一是通過NOR FLASH啟動(dòng),其特點(diǎn)是速度快。CPU可以像訪問內(nèi)存一樣直接訪問NOR FLASH,但是NOR FLASH價(jià)格昂貴。第二是通過NAND FLASH啟動(dòng),其特點(diǎn)是可讀可寫,NAND FLASH速度雖然慢,但是價(jià)格便宜。

        一般來說Bootloader的設(shè)計(jì)編程分兩個(gè)部分:第一部分通常用匯編實(shí)現(xiàn),主要完成依賴于CPU體系結(jié)構(gòu)的初始化,復(fù)制啟動(dòng)代碼到SDRAM后,調(diào)用第二部分代碼;第二部分通常使用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,比如提供FTP文件傳輸?shù)裙δ?,最后啟?dòng)內(nèi)核。

        2.1 Bootloader的設(shè)計(jì)過程

        Bootloader具體流程見圖2。

        2.2 Bootloader的第一階段

        Bootloader第一階段的功能:

        相關(guān)硬件初始化;

        把啟動(dòng)代碼拷貝到內(nèi)存中;

        設(shè)置棧指針;

        設(shè)置程序計(jì)數(shù)器PC到第二階段代碼的C入口中。

        Bootloader第一階段實(shí)現(xiàn)方法:

        首先,通常在執(zhí)行程序以前,首先為系統(tǒng)設(shè)置異常向量表。ARM結(jié)構(gòu)的CPU從內(nèi)存為0X0000000的地址開始執(zhí)行,系統(tǒng)定義的異常,一上電程序跳轉(zhuǎn)到reset異常處執(zhí)行相應(yīng)的匯編指令,下面定義出的都是不同的異常,比如軟件發(fā)生軟中斷時(shí),CPU就會(huì)去執(zhí)行軟中斷的指令,這些異常中斷在CUP中地址是從0開始,每個(gè)異常占4個(gè)字節(jié)。

        然后,由于ARM體系CPU具有7種工作模式,上電以后開發(fā)板首先應(yīng)該工作于管理模式。

        隨著Bootloader的功能不斷的完善,其代碼量也越來越大,所以以S3C2410為代表的裸板只有4K大小的片內(nèi)內(nèi)存,無法運(yùn)行大于4K的Bootloader。因此,我們需要初始化SDRAM,并且重新定位Bootloader。然后設(shè)置好棧sp寄存器,為第二階段的C函數(shù)調(diào)用做好準(zhǔn)備。

        2.3 Bootloader第二階段

        Bootloader第二階段的功能

        相關(guān)硬件設(shè)備初始化

        檢測系統(tǒng)內(nèi)存映射

        將內(nèi)核映象和根系統(tǒng)映象從NANDFLASH讀到內(nèi)存中

        設(shè)置內(nèi)核啟動(dòng)參數(shù)

        調(diào)用內(nèi)核

        首先,在第二階段中首先完成一些硬件設(shè)備的初始化,如初始化串口和設(shè)置系統(tǒng)時(shí)鐘等

        然后,檢測系統(tǒng)內(nèi)存映射和一系列的設(shè)置

        第二階段也是Bootloader的最后一個(gè)階段,其最主要的目的是把加載到SDRAM的系統(tǒng)內(nèi)核啟動(dòng)。使用C語言,可以像下列實(shí)例代碼來調(diào)用內(nèi)核。

        最后,需要注意的是,bootloader加載了內(nèi)核,內(nèi)核啟動(dòng),加載文件系統(tǒng),進(jìn)入Linux系統(tǒng)。

        3 結(jié)束語

        在嵌入式系統(tǒng)設(shè)計(jì)中Bootloader的設(shè)計(jì)很關(guān)鍵。Bootloader是操作系統(tǒng)和硬件的樞紐相對(duì)于操作系統(tǒng)內(nèi)核來說他是一個(gè)硬件抽象層,他負(fù)責(zé)初始化硬件,引導(dǎo)操作系統(tǒng)內(nèi)核,監(jiān)測各種參數(shù)給操作系統(tǒng)內(nèi)核使用。設(shè)計(jì)和實(shí)現(xiàn)一個(gè)好的Bootloader將大大提高操作系統(tǒng)移植的穩(wěn)定性并大大加快操作系統(tǒng)移植的周期。

        本文介紹的Bootloader代碼已經(jīng)在基于S3C2410芯片上運(yùn)行并測試通過。設(shè)計(jì)Bootloader的過程和程序不是一層不變的,它設(shè)計(jì)不僅依賴與不同的芯片結(jié)構(gòu),而且開發(fā)人員可以根據(jù)自己的需求增加一些功能的。

        參考文獻(xiàn):

        [1] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2013.

        [2] 鄭凌翔.嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)[M].北京:北京航天航空大學(xué)出版社,2006.

        [3] BRIAN W,DENNIS M.The C Programming Language[M].北京:機(jī)械工業(yè)出版社,2012.

        亚洲动漫成人一区二区| 69国产成人精品午夜福中文| 日本一区二区三区免费播放| 日本熟女中文字幕在线| 亚洲av福利天堂一区二区三| 亚洲精品天天影视综合网| 久久久久久久人妻无码中文字幕爆| 欧美视频二区欧美影视| 91久久精品无码人妻系列| 午夜av福利亚洲写真集| 国产精品高清视亚洲一区二区| 日本精品久久不卡一区二区| 精品国产第一国产综合精品| 亚洲中文字幕无码久久2020| 西西人体大胆视频无码| 男女啪啪免费视频网址| 国产白浆在线免费观看| 免费人妻无码不卡中文字幕18禁| 国产亚洲一本大道中文在线| 精品视频一区二区杨幂 | 日韩一二三四区在线观看| 国产精品乱码人妻一区二区三区| 亚洲人成绝费网站色www| 国产精品日本天堂| 麻豆视频在线观看免费在线观看| 国产一级内射视频在线观看| 少妇被猛男粗大的猛进出| 人妻丰满熟妇AV无码区HD| 国产精品久久久一本精品| 午夜一区二区在线视频| 欧美高清精品一区二区| 偷偷色噜狠狠狠狠的777米奇| 欧美亚洲综合另类| 亚洲欧洲美洲无码精品va| 亚洲天堂av在线免费播放| 中文字幕亚洲无线码在线一区| 亚洲人成无码网站在线观看| 久久精品国产热| 人成视频在线观看免费播放| 99久久99久久久精品蜜桃| 男人扒开添女人下部免费视频|