日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EBoot概要-we-hjb

發(fā)布時(shí)間:2023/12/8 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EBoot概要-we-hjb 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為一個(gè)新的硬件設(shè)備定制WinCE6.0操作系統(tǒng),一般需要完成以下幾個(gè)主要步驟:

1.?????? 針對特定的硬件設(shè)備創(chuàng)建板級支持包(Board Support Package縮寫為BSP)BSP必須包括BOOTLOADEROEM適配層(OEM Adaptation Layer縮寫為OAL)和一些必要的驅(qū)動(dòng)。

2.?????? 利用創(chuàng)建的BSP,定制一個(gè)系統(tǒng)設(shè)計(jì)(OS Design)。即通過VS2005創(chuàng)建一個(gè)Platform Builder的工程。該工程可編譯產(chǎn)生最終的運(yùn)行時(shí)映像文件(Rum-time Image)。

3.?????? 針對板上的外圍設(shè)備創(chuàng)建相關(guān)驅(qū)動(dòng),并添加到BSP中。

4.?????? 通過創(chuàng)建子工程和Catalog Items的方式,修改OS Design

5.?????? 編譯OS Design,下載編譯得到的運(yùn)行時(shí)映像文件到目標(biāo)設(shè)備。此時(shí),可通過遠(yuǎn)程調(diào)試工具進(jìn)行調(diào)試。

6.?????? 在完成所有的調(diào)試工作之后,導(dǎo)出該運(yùn)行時(shí)映像對應(yīng)的SDK(Software Development Kit),應(yīng)用程序的開發(fā)人員可基于此SDK編寫該設(shè)備的應(yīng)用程序。

?????? 可以看出,在整個(gè)WinCE操作系統(tǒng)的移植過程中,BSP的移植是最基礎(chǔ)也是最關(guān)鍵的一步。而創(chuàng)建BSP的過程主要包括以下幾個(gè)內(nèi)容:

1.?????? 創(chuàng)建BOOTLOADERBOOTLOADER在開發(fā)的過程中用于下載操作系統(tǒng)映像文件。

2.?????? 創(chuàng)建OALOAL最終被鏈接到內(nèi)核映像文件,它主要完成硬件的初始化和管理。

3.?????? 創(chuàng)建設(shè)備驅(qū)動(dòng)。設(shè)備驅(qū)動(dòng)是板上外圍設(shè)備的軟件支持。

4.?????? 修改運(yùn)行時(shí)映像的配置文件。配置文件主要包括BIBREG等文件。

BOOTLOADER的主要作用是將操作系統(tǒng)運(yùn)行時(shí)映像加載到內(nèi)存,并跳轉(zhuǎn)到OS的啟動(dòng)程序處。它的這一作用跟前一篇介紹的NBOOT的作用完全一致。BOOTLOADER獲取運(yùn)行時(shí)映像(一般對應(yīng)的文件名為NK)一般有兩種方法。它可以通過有線連接的方式象網(wǎng)絡(luò)(Ethernet)USB或串口從外部下載NK。它也可以從本地的存儲器(FlashHard Disk)中加載NK。通常,BOOTLOADER通過Ethernet下載操作系統(tǒng)映像故將其稱為EBOOT。在開發(fā)的過程中使用EBOOT,可以提高開發(fā)效率。通過使用EBOOT,你可以很快速的下載NK到目標(biāo)設(shè)備中。而利用Flash編程工具或者是通過JTAG下載則很慢。在一些產(chǎn)品最終發(fā)布時(shí),EBOOT是可以去掉的,但也有一些則必須包括BOOTLOADER,像X86的平臺就是如此。

至此,我們已經(jīng)了解了EBOOT的主要功能,為了實(shí)現(xiàn)這些功能,EBOOT必須完成以下工作:

1.?????? 初始化MCU。包括初始化MCU的相關(guān)寄存器、中斷、看門狗、系統(tǒng)時(shí)鐘、內(nèi)存和MMU。前面幾項(xiàng)跟NBOOT基本一致,但這里增加了對MMU的初始化。

2.?????? 在完成所有的初始化工作之后,調(diào)用BootloaderMain()。這個(gè)函數(shù)的定義在WinCE6.0中對應(yīng)的文件是C:"WINCE600"PLATFORM"COMMON"SRC"COMMON"BOOT"BLCOMMON"blcommon.c

3.?????? BootloaderMain()主要依次調(diào)用以下幾個(gè)函數(shù),OEMDebugInit()OEMPlatformInit()、OEMPreDownload()、OEMLaunch(),而這些函數(shù)必須由EBOOT的代碼來實(shí)現(xiàn)。

4.?????? 最終跳轉(zhuǎn)到OAL.exeStartUp處,進(jìn)而啟動(dòng)WinCE操作系統(tǒng)。

整個(gè)流程如下圖所示:???????????

?

??????

?????EBOOT的代碼可參考C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT目錄。這里針對S3C2410的EBOOT做幾點(diǎn)說明。前一篇介紹NBOOT加載EBOOT的方法時(shí)提到,NBOOT必須將EBOOT放在內(nèi)存中指定的位置,這個(gè)位置是由EBOOT的來決定的。具體的,在EBOOT中的體現(xiàn)是boot.bib里的內(nèi)存配置,如下圖所示。

?????

?????NBOOT加載EBOOT到內(nèi)存的地址必須與此地址對應(yīng)。由于在NBOOT中沒有使用MMU,所以NBOOT使用的實(shí)際地址應(yīng)該為0x30021000,否則系統(tǒng)將不能正常啟動(dòng)。第二點(diǎn),如果沒有采用NBOOT加載EBOOT的方法,而是將EBOOT直接存儲在NOR Flash中,此時(shí)必須在EBOOT的代碼中實(shí)現(xiàn)自加載的過程,即將NOR Flash中的EBOOT全部加載到RAM中,并執(zhí)行,實(shí)現(xiàn)代碼如下:


;------------------------------------------------------------------------------
;???Copy?boot?loader?to?memory

????????ands????r9,?pc,?#
0xFF000000?????;?see?if?we?are?in?flash?or?in?ram
????????bne?????
%f20????????????????????;?go?ahead?if?we?are?already?in?ram

????????;?This?
is?the?loop?that?perform?copying.
????????ldr?????r0,?
=?0x21000???????????;?offset?into?the?RAM?
????????add?????r0,?r0,?#PHYBASE????????;?add?physical?
base
????????mov?????r1,?r0??????????????????;?(r1)?copy?destination
????????ldr?????r2,?
=0x0????????????????;?(r2)?flash?started?at?physical?address?0
????????ldr?????r3,?
=0x10000????????????;?counter?(0x40000/4)
10??????ldr?????r4,?[r2],?#4
????????str?????r4,?[r1],?#
4
????????subs????r3,?r3,?#
1
????????bne?????
%b10

????????;?Restart?from?the?RAM?position?after?copying.
????????mov?pc,?r0
????????nop
????????nop
????????nop

????????;?Shouldn
't?get?here.
????????b???????.
EBOOT在實(shí)現(xiàn)必備功能的前提下,我們還可以擴(kuò)展其功能,譬如說初始化LCD,并顯示特定的啟動(dòng)畫面,顯示加載映像的進(jìn)度等。 本文粗略的介紹了WinCE6.0EBOOT的內(nèi)容,但沒有涉及具體的代碼實(shí)現(xiàn),相關(guān)代碼可以參考目錄C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT。總的來說,EBOOT的核心功能就是引導(dǎo)操作系統(tǒng)映像。

總結(jié)

以上是生活随笔為你收集整理的EBoot概要-we-hjb的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。