亚洲免费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.

        亚洲av网一区二区三区| 99久久久精品免费| 亚洲国产成人精品久久成人| 国产成人精品一区二三区孕妇| 亚洲精品一品区二品区三品区| 久久久久久久99精品国产片| 欧美人与动牲交片免费| 国产一区二区在线免费视频观看| 亚洲日韩精品无码专区网址| 国产精品.xx视频.xxtv| 热re99久久精品国产66热6| 日韩av一区二区三区高清| 日本少妇高潮喷水xxxxxxx| 又爽又黄禁片视频1000免费| 久久洲Av无码西西人体| 亚洲av高清一区二区三区| 久久无码专区国产精品| 91精品国产综合成人| 99久久国产一区二区三区| 国产精品午夜夜伦鲁鲁| 激情影院内射美女| 百合av一区二区三区| 精品在线亚洲一区二区三区| 欲香欲色天天天综合和网| 人人妻人人澡人人爽久久av| 精品久久亚洲一级α| 亚洲国产一区一区毛片a| 国产无夜激无码av毛片| 国产98在线 | 免费| 伊人久久婷婷综合五月97色| 人妻免费一区二区三区免费 | 性一交一乱一伧国产女士spa| 亚洲 无码 制服 丝袜 自拍| 青草草视频在线观看华人免费| 无码国产精品久久一区免费| 少妇太爽了在线观看免费视频| 人妻少妇精品视频中文字幕国语| 日本久久伊人特级黄色| 国产精品人妻一码二码尿失禁| 色噜噜狠狠色综合欧洲| 久久精品国产免费一区二区三区|