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

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于S3C44B0X的Bootloader設計與實現

1.引言

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

Bootloader是依賴于目標硬件實現的,主要包括以下兩方面[2]:

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

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

作者在參與中國民用航空總局科技基金項目“機場噪聲自動監(jiān)測與數據傳輸的研究與實

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

2.ARM7核心板介紹

2.1ARM7核心板的構成

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

 

2.2S3C44B0X的存儲器映射

系統復位后,S3C44B0X的存儲空間映射圖[3]如圖2所示。ARM處理器S3C44B0X的系統存儲空間分為8段(Bank0-Bank7),因此可以配置8個存儲體,其中每個存儲體的大小為32MB,總共可達256MB的存儲空間??梢宰杂膳渲迷L問存儲體的數據總線寬度(8位/16位/32位),在本核心板中,FLASH和SDRAM存儲器的總線寬度設置為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 啟動流程設計

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

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

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

[!--empirenews.page--]

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

1)  硬件設備初始化。

2)  為加載BootLoader的stage2準備RAM空間。

3)  拷貝BootLoader的stage2到RAM空間

4)  設置堆棧

5)  跳轉到stage2的C程序入口點

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

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

2)  檢測系統內存映射

3)  將內核映像和根文件系統映像從Flash讀到RAM

4)  為內核設置啟動參數

5)  調用內核

4.Bootloader的代碼實現

Bootloader的Stage1初始化流程圖如圖3所示. Stage1部分主要內容及其代碼實現:

 

/*中斷向量表用于處理異常情況,當發(fā)生異常情況時,首先要保存當前程序的返回地址和CPSR寄存器的值,然后進入到相應的異常向量地址。一般來說,在異常向量地址處放置無條件跳轉指令,使程序進入相應的異常處理過程。*/
_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
    ……

/*復位入口,切換到超級模式并禁止中斷。在整個Boot Loader的初始化過程中我們都不必響應中斷,因此首先禁止系統的中斷。*/
MRS     a1,CPSR            
    BIC     a1,a1,#MODE_MASK   
    ORR     a1,a1,#SUP_MODE    
    ORR     a1,a1,#LOCKOUT      ;關閉IRQ、FIQ中斷
    MSR     CPSR_cxsf,a1
    LDR     r0,=INTCON          ;設置中斷模式,非向量中斷模式
   LDR     r1,=0x07            ;IRQ、FIQ中斷禁止
   STR     r1,[r0]
    LDR     r0,=INTMSK          ;關閉所有中斷
   LDR     r1,=0x07ffffff
   STR     r1,[r0]
LDR     r0,=SYSCFG          ;使能回寫buffer和Cache
LDR     r1,=0xE
    STR     r1,[r0]
……
/*當必要的硬件初始化設置完畢后,接下來為核心代碼貯備RAM空間,包括RO、RW、ZI這3個段設置相應的內存映射向量,Bootloader先將ZI段請零,然后將RO段復制到RW段中。由于在我們采用的S3C44B0X微處理器里對于FLASH和RAM地址空間是使用的統一編址的,因此我們可以直接使用一個簡單循環(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               ;跳轉到C入口函數                                                                                                      
move_loop :                             ;將RO段復制到RW段                                   
LDR     a4,[a2],#4                                                     
STR     a4,[a1],#4 
CMP     a1,a3
BNE     move_loop

[!--empirenews.page--]

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

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

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

5.結束語

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

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

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

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

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

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

關鍵字: 驅動電源

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

關鍵字: 工業(yè)電機 驅動電源

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

關鍵字: 驅動電源 照明系統 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

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

關鍵字: 電動汽車 新能源 驅動電源

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

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

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

關鍵字: LED 驅動電源 功率因數校正

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

關鍵字: LED照明技術 電磁干擾 驅動電源

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

關鍵字: LED 驅動電源 開關電源

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

關鍵字: LED 隧道燈 驅動電源
關閉