《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于S3C2440的WinCE Bootloader的分析與設計
基于S3C2440的WinCE Bootloader的分析與設計
現代電子技術
李松松,李有端 電子科技大學
摘要: 基于S3C2440的WinCEBootloader的分析與設計,摘要:針對BootLoader嚴格依賴于具體的嵌入式硬件系統,并且從頭開發一套適合特定硬件系統的BootLoader又相當復雜這一問題,分析設計了基于S3C2440的WinCE操作系統的引導程序的實現方法。結合飛凌公司的嵌入式產品TE
Abstract:
Key words :

摘要:針對BootLoader嚴格依賴于具體的嵌入式硬件系統,并且從頭開發一套適合特定硬件系統的BootLoader又相當復雜這一問題,分析設計了基于S3C2440WinCE操作系統的引導程序的實現方法。結合飛凌公司的嵌入式產品TE2440的硬件特性,對BootLoader啟動的兩個階段和配置文件進行了詳細的分析和設計,最終實現了系統引導加載程序的構建。為項目后續的開發奠定了良好的基礎。
關鍵詞:嵌入式系統;引導程序;WinCE;EBoot

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

1 Bootloader的第一階段分析
    為了防止給后來的調試工作帶來更多的麻煩,要盡量使第一階段做盡可能少的工作,只要使CPU正常工作起來即可,然后把大量復雜的初始化工作留給第二階段來做。第一階段是在ADS(ARM Developer Suite)環境下開發的。S3C2440系統引導加載程序包括2440init,s、2440-lib.s函數庫、2440lib.c函數庫、mmu,c、dma,c函數庫等幾個主要的文件。因為與硬件密切相關。所以通常采用匯編語言編寫,本文主要分析s3c2440系統在加電后的硬件設置處理過程,即2440init.s文件中的程序執行過程。
    第一階段主要包括如下步驟:
    (1)進入啟動程序的入口地址,禁止看門狗、屏蔽所有中斷。因為為中斷提供服務通常是操作系統設備驅動程序的責任,所以在Bootlo-ader的執行全過程中可以不必響應任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態寄存器來完成。
a.JPG    


    (2)設置CPU的速度和時鐘頻率
    根據工作頻率設置時鐘、PLL,2440內部3個時鐘:FCLK、HCLK、PCLK,分別供CPU、AHB總線和APB總線使用,一般都選擇周期比為1:2:8的設置。

b.JPG

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

c.JPG


2 Bootloader的第二階段分析
    第一階段結束之后,函數跳轉到由C語言寫的main()函數,也就是Bootloader開發的第二階段EBoot,該階段的開發環境是Platform Builder,簡稱PB,它是微軟提供給開發人員進行基于Windows CE平臺下嵌入式操作系統定制的集成開發環境。main()函數實現代碼為:
    d.JPG
    該函數主要功能就是調用BootloaderMain()函數,其實main函數不是必須的,實際上程序也可以直接跳轉到BootloaderMain()函數,在第一階段的匯編代碼后加入main()函數可以更好地提高程序的性能。本文主要分析BootloaderMain()調用的一些關鍵的函數,函數調用關系如圖1所示。

f.JPG


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

3 配置文件
    Bootloader源代碼編譯后會產生一個名為eboot.exe的可執行文件,但寫入Flash的Bootloader是一個二進制的映像文件,也就是.bin文件或.nbO文件,所以需要把eboot.exe文件轉換成.bin文件或.nbO文件。

g.JPG
4 燒寫Bootloader
    配置好了之后,在PC機中編譯產生了Eboot.bin文件,把Bootloader燒寫到目標機中。利用三星公司的sjf2440工具燒寫,使用JTAG實現下載。BootLoader下載后再通過以太網口把操作系統內核鏡像文件下載到目標機中。下載鏡像所使用的軟件是DNW,DNW是三星公司為S3C2 440芯片配置的一款專用軟件,它可以在Windows下通過USB方式燒寫Flash。如圖2所示,內核鏡像已下載到NandFlash中。

i.JPG

5 結語
    BootLoader的設計和實現是一個非常復雜并且重要的過程,一個好的Bootloader可以給嵌入式產品的開發調試工作帶來許多便利。本文從源代碼人手詳細分析了Wince Bootloader啟動的兩個階段以及配置文件信息。實驗達到了預期的效果,為項目后續的開發奠定了良好的基礎。
 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 性欧美17一18sex性高清播放 | 琪琪午夜伦埋大全影院 | 久久精品在线 | 一本色道久久综合亚洲精品高清 | 国产性生交xxxxx免费 | 女人张开腿让男人插 | 手机福利在线 | 泷泽萝拉亚洲精品中文字幕 | 26uuu天天夜夜综合 | 婷婷亚洲久悠悠色在线播放 | 日韩二区三区 | 国产精品2020观看久久 | 乱人伦中文视频在线 | 午夜香蕉网 | 经典香港一级a毛片免费看 精品400部自拍视频在线播放 | 农村寡妇女人一级毛片 | 免费看一级做a爰片久久 | 久久午夜精品 | 狠狠se | 久久爱一区 | 永久精品免费影院在线观看网站 | 日日碰碰| 国产精品欧美一区二区三区不卡 | 国产一级视频久久 | 成人在线免费看 | 日韩一区二区视频在线观看 | 国产特黄特色一级特色大片 | 国产精品亚洲欧美一级久久精品 | 日韩精品一区二区三区免费视频 | 日本成本人片 | 久久久国产99久久国产久 | 国产福利最新手机在线观看 | 91福利精品老师国产自产在线 | 欧美91精品久久久久网免费 | 精品久久中文网址 | 国产精品夜色视频一级区 | 最新久久免费视频 | 久久久久综合 | 国内精品一区二区在线观看 | 国产亚洲精品久久麻豆 | 欧美国产一区二区 |