www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于S3C2440的WinCE Bootloader的分析與設(shè)計(jì)

摘要:針對(duì)BootLoader嚴(yán)格依賴于具體的嵌入式硬件系統(tǒng),并且從頭開發(fā)一套適合特定硬件系統(tǒng)的BootLoader又相當(dāng)復(fù)雜這一問題,分析設(shè)計(jì)了基于S3C2440的WinCE操作系統(tǒng)的引導(dǎo)程序的實(shí)現(xiàn)方法。結(jié)合飛凌公司的嵌入式產(chǎn)品TE2440的硬件特性,對(duì)BootLoader啟動(dòng)的兩個(gè)階段和配置文件進(jìn)行了詳細(xì)的分析和設(shè)計(jì),最終實(shí)現(xiàn)了系統(tǒng)引導(dǎo)加載程序的構(gòu)建。為項(xiàng)目后續(xù)的開發(fā)奠定了良好的基礎(chǔ)。
關(guān)鍵詞:嵌入式系統(tǒng);引導(dǎo)程序;WinCE;EBoot

    Bootloader的開發(fā)是嵌入式系統(tǒng)開發(fā)必不可少的環(huán)節(jié),一個(gè)好的Bootloader不僅可以給項(xiàng)目的后續(xù)開發(fā)工作帶來很大便利,而且在項(xiàng)目開發(fā)結(jié)束后對(duì)用戶使用產(chǎn)品也提供了很多方便。但是,由于嵌入式的硬件是無標(biāo)準(zhǔn)、非規(guī)范的,Bootloader的功能又是直接與微處理系統(tǒng)相關(guān)的,所以給開發(fā)人員的工作帶來了許多不便。在實(shí)際的項(xiàng)目開發(fā)中,一般都需要對(duì)特定的硬件系統(tǒng)進(jìn)行Bootloader的設(shè)計(jì),可是從頭開發(fā)一套系統(tǒng)的Bootloader是非常復(fù)雜并且耗時(shí)的,針對(duì)這一難點(diǎn),微軟公司推出的面向嵌入式應(yīng)用領(lǐng)域的操作系統(tǒng)Windows CE體現(xiàn)了非常大的優(yōu)勢(shì),Windows CE具有強(qiáng)大的操作系統(tǒng)功能、穩(wěn)定可靠的性能、高度的模塊化、可定制性、與桌面Windows平臺(tái)一致的開發(fā)特性。它最大的優(yōu)勢(shì)是具有高度的模塊化,可以提供與硬件無關(guān)的軟件框架,把與硬件無關(guān)但是又代表普遍通用性的內(nèi)容抽取出來,形成標(biāo)準(zhǔn)函數(shù)庫。而與硬件相關(guān)的不具有通用意義的BootLoader代碼則由開發(fā)人員具體負(fù)債開發(fā),這樣就給開發(fā)人員帶來了相當(dāng)大便利。并且開發(fā)出的Bootloader因是嚴(yán)格按照微軟提供的模板開發(fā),所以又有很好兼容性且效率高。
    由于Bootloader的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此從固態(tài)存儲(chǔ)設(shè)備上啟動(dòng)的BootLoader大多都是兩個(gè)階段的啟動(dòng)過程。本文以飛凌嵌入式公司的產(chǎn)品TE2440為例,詳細(xì)分析Windows CE BootLoader開發(fā)的兩個(gè)階段過程。TE2440的微處理器采用三星公司的S3C2440A,主頻400MH-z,內(nèi)置64 MB SDRAM和64 MB NANDFLASH,10 M網(wǎng)口,采用CS8900Q3。S3C2440支持2種啟動(dòng)模式:一種是從NandFlash啟動(dòng);另一種是從NorF-lash啟動(dòng),TE2440支持從NandFlash啟動(dòng)。

1 Bootloader的第一階段分析
    為了防止給后來的調(diào)試工作帶來更多的麻煩,要盡量使第一階段做盡可能少的工作,只要使CPU正常工作起來即可,然后把大量復(fù)雜的初始化工作留給第二階段來做。第一階段是在ADS(ARM Developer Suite)環(huán)境下開發(fā)的。S3C2440系統(tǒng)引導(dǎo)加載程序包括2440init,s、2440-lib.s函數(shù)庫、2440lib.c函數(shù)庫、mmu,c、dma,c函數(shù)庫等幾個(gè)主要的文件。因?yàn)榕c硬件密切相關(guān)。所以通常采用匯編語言編寫,本文主要分析s3c2440系統(tǒng)在加電后的硬件設(shè)置處理過程,即2440init.s文件中的程序執(zhí)行過程。
    第一階段主要包括如下步驟:
    (1)進(jìn)入啟動(dòng)程序的入口地址,禁止看門狗、屏蔽所有中斷。因?yàn)闉橹袛嗵峁┓?wù)通常是操作系統(tǒng)設(shè)備驅(qū)動(dòng)程序的責(zé)任,所以在Bootlo-ader的執(zhí)行全過程中可以不必響應(yīng)任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器來完成。
    

[!--empirenews.page--]
    (2)設(shè)置CPU的速度和時(shí)鐘頻率
    根據(jù)工作頻率設(shè)置時(shí)鐘、PLL,2440內(nèi)部3個(gè)時(shí)鐘:FCLK、HCLK、PCLK,分別供CPU、AHB總線和APB總線使用,一般都選擇周期比為1:2:8的設(shè)置。

    (3)初始化基本硬件和存儲(chǔ)器系統(tǒng)
   
    (4)設(shè)置堆棧并跳轉(zhuǎn)至第二階段的入口。將FLASH中的代碼段、數(shù)據(jù)段拷貝到RAM中,將初始化數(shù)據(jù)段,跳入C語言的main函數(shù)執(zhí)行,結(jié)束Bootloader初步引導(dǎo);Bi的主要功能是引導(dǎo)和加載操作系統(tǒng),不會(huì)用到很多種類型及數(shù)量的外設(shè),如果在BL中啟用中斷反而會(huì)使對(duì)問題的處理復(fù)雜化。

[!--empirenews.page--]
2 Bootloader的第二階段分析
    第一階段結(jié)束之后,函數(shù)跳轉(zhuǎn)到由C語言寫的main()函數(shù),也就是Bootloader開發(fā)的第二階段EBoot,該階段的開發(fā)環(huán)境是Platform Builder,簡(jiǎn)稱PB,它是微軟提供給開發(fā)人員進(jìn)行基于Windows CE平臺(tái)下嵌入式操作系統(tǒng)定制的集成開發(fā)環(huán)境。main()函數(shù)實(shí)現(xiàn)代碼為:
    
    該函數(shù)主要功能就是調(diào)用BootloaderMain()函數(shù),其實(shí)main函數(shù)不是必須的,實(shí)際上程序也可以直接跳轉(zhuǎn)到BootloaderMain()函數(shù),在第一階段的匯編代碼后加入main()函數(shù)可以更好地提高程序的性能。本文主要分析BootloaderMain()調(diào)用的一些關(guān)鍵的函數(shù),函數(shù)調(diào)用關(guān)系如圖1所示。


    最早被BootLaderMain()調(diào)用的OEM函數(shù)是OEMDebugInit(),它負(fù)責(zé)初始化BootLoader的調(diào)試功能串口,在它被調(diào)用運(yùn)行之后BootLoader的代碼才可以調(diào)用它的調(diào)試輸出功能函數(shù)。OEMDebugInit()調(diào)用OEMInitDebugSerial()來初始化調(diào)試串口。[!--empirenews.page--]
    OEMPlatformInit()函數(shù)是BootLoader的最重要的OEM函數(shù),所有與BootLoader所需硬件功能有關(guān)的目標(biāo)平臺(tái)板級(jí)外設(shè)如以太網(wǎng)接口、Fl-ash存儲(chǔ)器等都在這里進(jìn)行初始化,包括嵌入式CPU芯片內(nèi)置的外設(shè)。它結(jié)束后就開始下載工作了。函數(shù)代碼如下:
    
    OEMPreDownload():所有在硬件初始化完成以后、開始下載操作系統(tǒng)鏡像之前所需要處理的任務(wù)都可以放在該函數(shù)完成。它主要任務(wù)是以太網(wǎng)下載前的準(zhǔn)備工作。DownloadImage()的任務(wù)是從遠(yuǎn)程開發(fā)機(jī)上下載操作系統(tǒng)鏡像到RAM。它通過調(diào)用OEMReadData()從下載端口讀取操作系統(tǒng)鏡像的數(shù)據(jù),在本文的EBoot中,該函數(shù)主要負(fù)責(zé)從以太網(wǎng)端口讀取操作系統(tǒng)鏡像數(shù)據(jù);它還調(diào)用OEMShowProgress()函數(shù)用來向用戶顯示BootLoader下載操作系統(tǒng)鏡像時(shí)的下載狀態(tài)。OEMMapMemAddr()函數(shù)用于當(dāng)下載得到的操作系統(tǒng)鏡像自身所記錄的目的地址是Flash存儲(chǔ)設(shè)備時(shí)該OEM函數(shù)要負(fù)債將鏡像的數(shù)據(jù)以重定位的方式暫存到RAM內(nèi)存緩沖區(qū)中。
    OEMLaunch()是最后一個(gè)被BootLaderMain()函數(shù)調(diào)用的。它的主要功能是實(shí)現(xiàn)目標(biāo)嵌入式系統(tǒng)程序執(zhí)行流跳轉(zhuǎn)。無論BootLoader是通過以太網(wǎng)端口下載操作系統(tǒng)鏡像還是從本地讀取操作系統(tǒng)鏡像到內(nèi)存,都要依靠該函數(shù)將程序的執(zhí)行流從BootLoader轉(zhuǎn)移到Windows CE的操作系統(tǒng)。Downloadlmage()函數(shù)下載的操作系統(tǒng)鏡像是暫存在RAM中的,所以我們還需要在OEMLaunch()函數(shù)指令執(zhí)行跳轉(zhuǎn)之前保存下載所得的操作系統(tǒng)鏡像以及用戶配置數(shù)據(jù)到Flash,以便系統(tǒng)從新啟動(dòng)或者復(fù)位時(shí)可以直接從本地存儲(chǔ)讀取鏡像數(shù)據(jù)。

3 配置文件
    Bootloader源代碼編譯后會(huì)產(chǎn)生一個(gè)名為eboot.exe的可執(zhí)行文件,但寫入Flash的Bootloader是一個(gè)二進(jìn)制的映像文件,也就是.bin文件或.nbO文件,所以需要把eboot.exe文件轉(zhuǎn)換成.bin文件或.nbO文件。


4 燒寫B(tài)ootloader
    配置好了之后,在PC機(jī)中編譯產(chǎn)生了Eboot.bin文件,把Bootloader燒寫到目標(biāo)機(jī)中。利用三星公司的sjf2440工具燒寫,使用JTAG實(shí)現(xiàn)下載。BootLoader下載后再通過以太網(wǎng)口把操作系統(tǒng)內(nèi)核鏡像文件下載到目標(biāo)機(jī)中。下載鏡像所使用的軟件是DNW,DNW是三星公司為S3C2 440芯片配置的一款專用軟件,它可以在Windows下通過USB方式燒寫Flash。如圖2所示,內(nèi)核鏡像已下載到NandFlash中。

5 結(jié)語
    BootLoader的設(shè)計(jì)和實(shí)現(xiàn)是一個(gè)非常復(fù)雜并且重要的過程,一個(gè)好的Bootloader可以給嵌入式產(chǎn)品的開發(fā)調(diào)試工作帶來許多便利。本文從源代碼人手詳細(xì)分析了Wince Bootloader啟動(dòng)的兩個(gè)階段以及配置文件信息。實(shí)驗(yàn)達(dá)到了預(yù)期的效果,為項(xiàng)目后續(xù)的開發(fā)奠定了良好的基礎(chǔ)。
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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