日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于S3C44B0X的Bootloader設(shè)計與實現(xiàn)

1.引言

Bootloader(引[1]導(dǎo)加載) 程序[1]是系統(tǒng)加電后首先運行的一段程序代碼,用來初始化硬件環(huán)境、改變處理器運行模式和重組中斷向量,建立內(nèi)存空間的映射圖(有的CPU沒有內(nèi)存映射功能如 S3C44B0X ),將系統(tǒng)的軟、硬件環(huán)境帶到一個由用戶定制的特定狀態(tài),然后加載操作系統(tǒng)內(nèi)核。對于不使用操作系統(tǒng)的嵌入式系統(tǒng)而言,應(yīng)用程序的運行同樣也需要依賴一個準(zhǔn)備好的軟、硬件環(huán)境,因此從這個意義上來講,BootLoader對于嵌入式系統(tǒng)是必需的。

Bootloader是依賴于目標(biāo)硬件實現(xiàn)的,主要包括以下兩方面[2]:

(1)每種嵌入式微處理器體系結(jié)構(gòu)都有不同的Bootloader.應(yīng)用比較廣泛的Bootloader有VIVI、U-Boot、Blob、RedBoot 等。有些BootLoader也可以支持多種體系結(jié)構(gòu)的嵌入式微處理器。如U-Boot同時支持ARM和MIPS體系結(jié)構(gòu)。

(2)Bootloader依賴于具體的嵌入式板級硬件設(shè)備的配置。比如板卡的硬件地址配置、微處理器的類型和其他外設(shè)的類型等。也就是說,即使是基于相同嵌入式微處理器構(gòu)建的不同嵌入式目標(biāo)板,要想讓運行在一個板子上的Bootloader程序同樣運行在另一個板子上,仍需要修改Bootloader的源程序。

作者在參與中國民用航空總局科技基金項目“機場噪聲自動監(jiān)測與數(shù)據(jù)傳輸?shù)难芯颗c實

現(xiàn)”的研發(fā)中,設(shè)計了一款基于S3C44B0X的ARM7核心板,并實現(xiàn)了其引導(dǎo)加載程序Bootloader.

2.ARM7核心板介紹

2.1ARM7核心板的構(gòu)成

作者設(shè)計的ARM7 核心板主要由CPU、電源管理、存儲單元、JTAG接口和串口五部分組成。圖1是其結(jié)構(gòu)圖。CPU這里用的是Samsung的S3C44BOX微處理器[3], 它是由Samsung Electronics Co.,Ltd為手持設(shè)備設(shè)計的低功耗、高度集成的基于ARM7TDMI核的微處理器,采用精簡指令系統(tǒng)(RISC)和三級流水線結(jié)構(gòu),且具有豐富的內(nèi)置部件。電源管理部分采用開關(guān)電源將AC220V轉(zhuǎn)換成DC5V,然后采用線性穩(wěn)壓電源LM1085將DC5V分別轉(zhuǎn)換成3.3V 的I/O口電源電壓和2.5V 的S3C44B0X內(nèi)核邏輯電壓。存儲單元由Flash存儲器和SDRAM存儲器構(gòu)成。Flash存儲器用的是SST公司的 39VF3201 CMOS FLASH,容量為4MB,16位數(shù)據(jù)寬度,可以重復(fù)擦寫。Flash存儲器主要用來存放已經(jīng)調(diào)試好的應(yīng)用程序、嵌入式操作系統(tǒng)和需要保存的用戶數(shù)據(jù)。 SDRAM存儲器選用的是SAMSUNG公司的8MB K4S641632H,16位數(shù)據(jù)寬度,工作電壓3.3V。由于SDRAM執(zhí)行速度比較快,其通常作為系統(tǒng)運行時的主要區(qū)域,用來存放系統(tǒng)及用戶數(shù)據(jù)、堆棧等。另外,除了可用于下載和通信的串口,還包括用于調(diào)試的JTAG接口。

 

2.2S3C44B0X的存儲器映射

系統(tǒng)復(fù)位后,S3C44B0X的存儲空間映射圖[3]如圖2所示。ARM處理器S3C44B0X的系統(tǒng)存儲空間分為8段(Bank0-Bank7),因此可以配置8個存儲體,其中每個存儲體的大小為32MB,總共可達(dá)256MB的存儲空間??梢宰杂膳渲迷L問存儲體的數(shù)據(jù)總線寬度(8位/16位/32位),在本核心板中,F(xiàn)LASH和SDRAM存儲器的總線寬度設(shè)置為16位,在8個可配置存儲體中,Bank0-Bank5可支持ROM、SRAM類型的存儲器;Bank6和Bank7可支持ROM、SRAM以及FP/EDO/SDRAM等其他類型的存儲器,此處Bank0接 FLASH存儲器39VF3201(采用片選信號nGCS0),地址范圍為:0x00000000-0x003fffff.Bank6接8MB的 SDRAM存儲芯片K4S641632H(采用片選信號nGCS6),地址范圍為0x00000000-0x007fffff。其他存儲空間(Bank2、Bank3、Bank4、Bank5、Bank7)暫時保留。

 

3.Bootloader 啟動流程設(shè)計

系統(tǒng)加電或復(fù)位后,CPU通常都從CPU制造商預(yù)先安排的地址上取指令。如基于ARM7TDMI

內(nèi)核的CPU在復(fù)位時都從地址0x00000000處取它的第一條指令。而嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設(shè)備(比如:ROM、EEPROM 或FLASH等)被安排在這個起始地址上。因此在系統(tǒng)加電或復(fù)位后,處理器將首先執(zhí)行存放在起始地址處的程序。通過集成開發(fā)環(huán)境IDE可以將 BootLoader定位在起始地址開始的存儲空間內(nèi)。所以,BootLoader是系統(tǒng)加電后,操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運行之前,首先必須運行的一段代碼。對于ARM S3C44B0X微處理器,BootLoader是從0x00000000地址開始存放的,此地址采用了可引導(dǎo)的固態(tài)存儲設(shè)備FLASH。

從操作系統(tǒng)的角度看,BootLoader的總目標(biāo)就是正確的調(diào)用內(nèi)核來執(zhí)行。另外由于BootLoader的實現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此大多數(shù)BootLoader都分為stage1和stage2兩部分[4],依賴CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達(dá)到短小精悍的目的。而stage2通常用C語言來實現(xiàn),這樣可以實現(xiàn)復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。

[!--empirenews.page--]

BootLoader的stage1通常包括以下步驟(以執(zhí)行的先后順序):

1)  硬件設(shè)備初始化。

2)  為加載BootLoader的stage2準(zhǔn)備RAM空間。

3)  拷貝BootLoader的stage2到RAM空間

4)  設(shè)置堆棧

5)  跳轉(zhuǎn)到stage2的C程序入口點

BootLoader的stage2通常包括以下步驟(以執(zhí)行的先后順序):

1)  初始化本階段要使用到的硬件設(shè)備

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

3)  將內(nèi)核映像和根文件系統(tǒng)映像從Flash讀到RAM

4)  為內(nèi)核設(shè)置啟動參數(shù)

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

4.Bootloader的代碼實現(xiàn)

Bootloader的Stage1初始化流程圖如圖3所示. Stage1部分主要內(nèi)容及其代碼實現(xiàn):

 

/*中斷向量表用于處理異常情況,當(dāng)發(fā)生異常情況時,首先要保存當(dāng)前程序的返回地址和CPSR寄存器的值,然后進(jìn)入到相應(yīng)的異常向量地址。一般來說,在異常向量地址處放置無條件跳轉(zhuǎn)指令,使程序進(jìn)入相應(yīng)的異常處理過程。*/
_ENTRY
B   ResetHandler        ;reset vector
    B   UndefinedHandler    ;Undefined instruction
B   SWIHandler          ;SWI
    B   PrefetchHandler     ;Prefetch abort
    B   AbortHandler        ;Data abort
    B.                     ;Address exception
    B   IRQHandler          ;IRQ
    B   FIQHandler          ;FIQ
    ……

/*復(fù)位入口,切換到超級模式并禁止中斷。在整個Boot Loader的初始化過程中我們都不必響應(yīng)中斷,因此首先禁止系統(tǒng)的中斷。*/
MRS     a1,CPSR            
    BIC     a1,a1,#MODE_MASK   
    ORR     a1,a1,#SUP_MODE    
    ORR     a1,a1,#LOCKOUT      ;關(guān)閉IRQ、FIQ中斷
    MSR     CPSR_cxsf,a1
    LDR     r0,=INTCON          ;設(shè)置中斷模式,非向量中斷模式
   LDR     r1,=0x07            ;IRQ、FIQ中斷禁止
   STR     r1,[r0]
    LDR     r0,=INTMSK          ;關(guān)閉所有中斷
   LDR     r1,=0x07ffffff
   STR     r1,[r0]
LDR     r0,=SYSCFG          ;使能回寫buffer和Cache
LDR     r1,=0xE
    STR     r1,[r0]
……
/*當(dāng)必要的硬件初始化設(shè)置完畢后,接下來為核心代碼貯備RAM空間,包括RO、RW、ZI這3個段設(shè)置相應(yīng)的內(nèi)存映射向量,Bootloader先將ZI段請零,然后將RO段復(fù)制到RW段中。由于在我們采用的S3C44B0X微處理器里對于FLASH和RAM地址空間是使用的統(tǒng)一編址的,因此我們可以直接使用一個簡單循環(huán)來完成拷貝。*/
move_data :                                                                  
LDR     a1,=Image_RW_Base       ;RW段運行時的起始地址
LDR     a2,=Image_RO_Limit      ;RO段運行時的存儲區(qū)域界限
LDR     a3,=Image_ZI_Base       ;ZI段運行時的起始地址                                                                        
CMP     a1,a3                                                          
BEQ     goto_main               ;跳轉(zhuǎn)到C入口函數(shù)                                                                                                      
move_loop :                             ;將RO段復(fù)制到RW段                                   
LDR     a4,[a2],#4                                                     
STR     a4,[a1],#4 
CMP     a1,a3
BNE     move_loop

[!--empirenews.page--]

在Bootloader stage1部分的最后是堆棧的設(shè)置,由于ARM有5種異常模式,每一種模式的堆棧指針寄存器(SP)都是獨立的,因此,對程序中需要用到的每一種模式都要給SP定義一個堆棧地址。以中止模式SP堆棧地址的定義為例:
        ORR     r1,r0,#ABORTMODE|NOINT
        MSR     cpsr_cxsf,r1
        LDR     sp,=AbortStack

至此,匯編語言程序段的任務(wù)基本完成,執(zhí)行命令BL  Main 轉(zhuǎn)到由C語言編寫的核心程序,操作系統(tǒng)的內(nèi)核就可通過該C程序加載到RAM,獲得對系統(tǒng)的控制權(quán)。

Bootloader的Stage2部分主要用于導(dǎo)入操作系統(tǒng)內(nèi)核,一般通過串口建立連接,以獲取命令、打印與用戶的交流信息等,這里限于篇幅不再加以詳述。

5.結(jié)束語

作為嵌入式系統(tǒng)軟件的最底層,Bootloader是系統(tǒng)上電后啟動運行的第一個程序,類似于PC機上的BIOS,主要負(fù)責(zé)整個硬件系統(tǒng)的初始化和軟件系統(tǒng)啟動的準(zhǔn)備工作。Bootloader是嵌入式系統(tǒng)開發(fā)的重點和難點,也是系統(tǒng)運行的一個基本前提條件。設(shè)計和實現(xiàn)一個好的Bootloader,可以大大增強系統(tǒng)的穩(wěn)定性,提高系統(tǒng)的實時性。

本論文創(chuàng)新觀點是:設(shè)計了具有較高性價比的ARM7核心板,結(jié)合實際應(yīng)用詳細(xì)分析了S3C44B0X的存儲空間映射,設(shè)計實現(xiàn)的基于S3C44B0X的 Bootloader具有典型代表性、良好的健壯性和可移植性,只須有針對性的稍加修改,就可應(yīng)用到各種類似的嵌入式平臺中,對進(jìn)一步開發(fā)復(fù)雜系統(tǒng)的 Bootloader具有很好的借鑒和啟發(fā)作用。

本項目經(jīng)濟效益(30萬元),包括Internet接入設(shè)備研制、GPRS網(wǎng)絡(luò)接入設(shè)備研制和GPRS-Internet網(wǎng)關(guān)軟件研制三部分。 Internet接入設(shè)備由數(shù)據(jù)前端采集盒和嵌入式ARM系統(tǒng)構(gòu)成,嵌入式ARM系統(tǒng)通過串口接收單片機發(fā)來的數(shù)據(jù)并將這些數(shù)據(jù)利用TCP/IP協(xié)議通過網(wǎng)線發(fā)送到噪聲數(shù)據(jù)中心。

參考文獻(xiàn):
[1]白偉平等.基于ARM的嵌入式Bootloader淺析[J].微計算機信息,2006,4-2:99-100
[2]夏靖波等.嵌入式系統(tǒng)原理與開發(fā)[M].西安電子科技大學(xué)出版社.2006
[3]Samsung Limited. S3C44BOX RISC Microprocessor Datasheet[EB/OL]. 2001
[4]孫天澤等.嵌入式設(shè)計與Linux驅(qū)動開發(fā)指南-基于ARM9處理器[M].電子工業(yè)出版社.2006
 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉