那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

h1654155282.3538 ? 來源:網(wǎng)絡(luò)整理 ? 2018-05-16 17:24 ? 次閱讀

WINCE操作系統(tǒng)簡介

WinCE操作系統(tǒng)是通用型的嵌入式操作系統(tǒng),它是一個開放的、可升級的32位嵌入式操作系統(tǒng),是基于掌上型電腦類的電子設(shè)備操作系統(tǒng),它是精簡的Windows 95,WindowsCE的圖形用戶界面相當(dāng)出色。它1996年開始發(fā)布Windows CE 1.0版本,2004年7月發(fā)布了Windows CE .NET 5.0版本,目前用得最多的是WindowsCE .NET 4.2版本,其發(fā)展速度也是很快的,功能_上自不必描述,它的主要應(yīng)用領(lǐng)域有PDA市場、PPC、Smartphone、 工業(yè)控制、醫(yī)療等。

操作系統(tǒng)移植的原因

為了更快的適應(yīng)市場需求,在實際開發(fā)過程中,我們更傾向于移植操作系統(tǒng)而不是重新開發(fā)操作系統(tǒng)。這樣不但可以節(jié)省時間,還能大大提高開發(fā)效率。

由于嵌入式系統(tǒng)是一個軟硬件緊密結(jié)合的系統(tǒng),因此操作系統(tǒng)移植包含兩個層面上的工作:一個層面是CPU級的,另一個層面是板級的。由于WinCE操作系統(tǒng)幾乎完全是用C語言編寫的,所以可移植到眾多的32位微處理器。上。這其中包括ARM、x86、MIPS 和SH等, 而且CPU級的移植通常由微軟或芯片制造商來完成,這會極大地減輕OEM廠商開發(fā)過程中移植操作系統(tǒng)的工作量,但板級層面的移植則還是需要由OEM廠商來完成的。

一般來說,一個WinCE系統(tǒng)包括四層結(jié)構(gòu):應(yīng)用程序、WinCE內(nèi)核映像、板級支持包(BSP)、硬件平臺。而基本軟件平臺則主要由WinCE系統(tǒng)內(nèi)核映像(OS Image)和板卡支持包(BSP) 兩部分組成。因為WinCE系統(tǒng)是一個軟硬件緊密結(jié)合的系統(tǒng),因此即使CPU處理器相同,但是如果開發(fā)板上的外圍硬件不相同, 這個時候還是需要修改BSP來完成一個新的BSP。 因此換句話說,就是WinCE 的移植過程主要是改寫B(tài)SP的過程。

嵌入式OS負(fù)責(zé)嵌入式系統(tǒng)全部軟、硬件資源的分配、調(diào)度,控制和協(xié)調(diào)各部件的工作,與普通OS相比,嵌入式OS在系統(tǒng)實時高效性、硬件依賴性、軟件固化及應(yīng)用的專用性方面具有較為突出的特點。

WINCE在ARM平臺的移植及驅(qū)動技術(shù)

1、啟勵程序Bootloader的移植步驟

BootLoader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

修改Bootloader是移植WinCE系統(tǒng)第一步,也是關(guān)鍵的一步。只有得到一個穩(wěn)定工作的啟動程序,才能夠進(jìn)-步完成WinCE BSP的移植。Bootloader主要用來管理目標(biāo)平臺的啟動過程,它是一段單獨的程序代碼,通過這段小程序可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖和下載操作系統(tǒng)的映像文件等,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),它- -般存放于目標(biāo)平臺的非易失存儲介質(zhì)中, 如ROM或Flash。

一般來說,對于Bootloader的功能,不同的場合區(qū)別很大。比如,在桌面Windows版的PC硬件平臺,上,由于硬件啟動根本就不通過Bootloader (而是通過BIOS),所以Bootloader就無需對CPU加電后的初始化做任何工作; 而在嵌入式WinCE平臺上,Bootloader 是最先被執(zhí)行的程序,所以就必須包括加電初始化程序,同時通常Bootloader必須包含下載WinCE映像文檔的功能。由于Bootloader會涉及到基本的硬件操作,如CPU的結(jié)構(gòu)、指令等,也會又涉及到以太網(wǎng)下載協(xié)議和映像文檔格式。因此,從零開發(fā)實現(xiàn)的話會需要相當(dāng)長的過程,通常的做法是利用微軟為每種類型的CPU提供的某種標(biāo)準(zhǔn)研發(fā)板的Bootloader例程。

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

根據(jù)我在這次項目移植得到的經(jīng)驗,Bootloader 的移植步驟主要是:①是修改相應(yīng)的dir、source 文件;②是修改makefile.inc;③是修改boot.bib,使其不與config.bib中的內(nèi)存分配造成沖突;④是改進(jìn)eboot, 因為eboot燒寫NK.BIN的時候會查找BINFS分區(qū),然后把下載的image燒寫到BINFS分區(qū)。

2、OAL的移植步驟

OAL的全稱是OEMAdaption Layer,即原始設(shè)備制造商適配層。它是位于Windows CE內(nèi)核和目標(biāo)硬件平臺之間的一個代碼層,OAL主要負(fù)責(zé)WindowsCE與硬件通信,它與CPU、中斷、內(nèi)存、時鐘和調(diào)試口等核心設(shè)備相關(guān),也是OAL各個模塊代碼被編譯后(.lib) 和其它內(nèi)核庫鏈接到一一起形成Windows CE的內(nèi)核可執(zhí)行文檔NK.EXE的關(guān)鍵。簡單的說,OAL就是用來屏蔽CPU平臺的細(xì)節(jié)和抽象硬件功能,以實現(xiàn)操作系統(tǒng)內(nèi)核的可移植性。

從邏輯結(jié)構(gòu)上看,OAL位于WinCE操作系統(tǒng)的內(nèi)核與硬件之間,是連接WinCE系統(tǒng)與硬件的樞紐;從功能上看,OAL頗似桌面PC.上的BIOS,具有初始化設(shè)備、引導(dǎo)操作系統(tǒng)以及抽象硬件功能等作用。但與B10S不同的是,0AL隸屬于操作系統(tǒng),是操作系統(tǒng)的一部分。在WinCE6.0中,OAL首先起了穿針引線的作用,這一點可從其啟動代碼看出來。第二個作用,暴露一些OEM函數(shù)供Kerel調(diào)用,具體哪些函數(shù)由OEMGLOBAL決定。為了方便BSP的升級,6.0基本保留了原來的函數(shù)結(jié)構(gòu)。所以,我們可以選擇5.0的BSP為參考,將其移植到6.0上來。PB6.0 的安裝目錄中也包涵一些BSP,其中DeviceEmulator就是模擬S3C2410平臺。所以,我們也可以此為參考。總之,OAL代碼的來源不是問題。問題是如何快速編譯這些代碼,并驗證其正確性。

下面將介紹快速調(diào)試OAL的方法。

首先Clone一個BSP,命名為2410Tiny。如果從5.0的BSP移植,需要修改相應(yīng)的目錄結(jié)構(gòu),在6.0中不存在CEC文件,需要做轉(zhuǎn)換。Clone完成后的BSP如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

其中CATALOG目錄中存放的是2410Tiny.pbcxml,它是CE6.0中BSP的組織文件,類似5.0中的CEC文件。CESYSGEN存放了一個Makefile文件。

FILES目錄存放了平臺對應(yīng)的配置文件如BIB、REG等。這里我們將platform.bib和platform.reg中的內(nèi)容清空,注意是清空! Config.bib 的內(nèi)容確保準(zhǔn)確。

刪除SRC目錄下的Drivers目錄,并修改dirs文件,去掉Drivers行。如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

至此,2410Tiny的BSP準(zhǔn)備完成,用此BSP定制一個OSDesign。在選擇模板時選CustomDevice (第二項),然后直接點擊完成,結(jié)束向?qū)А_M(jìn)入平臺屬性頁進(jìn)行設(shè)置,如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

完成后,在Catalog Items中選中CEDB Database Engine項(我開始沒選擇該項,結(jié)果編譯出了一堆錯誤,將該項選中后,重新編譯,就順利通過了。)點擊編譯按鈕開始編譯系統(tǒng)。

等它編譯著吧,我們繼續(xù)往下看。之所以能把SRC目錄下的Drivers刪除,是因為我們現(xiàn)在還處于調(diào)試OAL的階段,可以暫時不考慮Drivers。只要有OAL和KERNEL,WinCE 就能跑起來。從這個角度來說,我覺得OAL用來抹平MCU的差異,而Drivers則是抹平外圍設(shè)備的差異。

大概10分鐘后,編譯完成了,最終生成的NK.bin文件有3M多,如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

這時,我們可以啟動BOOTLOADER,完成相關(guān)配置后下載該NK.bin文件,如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

3M多的NK,下載需要14秒左右。由于啟用了KITL,所以最終在DebugOutput中看到WinCE啟動的相關(guān)信息,如下圖所示:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

現(xiàn)在我們可以用PB6.0的Debug工具進(jìn)行簡單調(diào)試。先用Target Control查看系統(tǒng)運行的進(jìn)程:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

可以看到,目前WinCE6.0只運行了兩個進(jìn)程,NK.exe對應(yīng)的就是我們的OAL.exe!再看看線程和模塊的情況:

WINCE在ARM平臺的移植及驅(qū)動技術(shù)詳解

至此,可以認(rèn)為WinCE6.0 的OAL已經(jīng)可以正常工作。

從我在這次項目中得到的經(jīng)驗來看, Windows CE安裝目錄的子目錄中都包含有OAL的部分源碼。OAL的移植實現(xiàn)應(yīng)是在fwxsc1.s. main.c、 Flash.c、Edeviceinit.c等文件中, 可根據(jù)實際需要修改相應(yīng)的代碼。在OAL移植過程中,主要是修改這幾個函數(shù):修改Startup.s函數(shù)、修改串口調(diào)試函數(shù)、修改OEMInit函數(shù)、修改系統(tǒng)時鐘函數(shù)和修改中斷處理函數(shù)等。實際上,大多數(shù)情況下開發(fā)工程師對OAL只要修改即可,甚至無需修改。

3、驅(qū)動程序的移植和開發(fā)

驅(qū)動程序(Device Drivers)是指能夠管理虛擬或者物理設(shè)備、協(xié)議、服務(wù)等的一段軟件模塊,操作系統(tǒng)是通過驅(qū)動程序直接和硬件打交道的。設(shè)備驅(qū)動程序能為WinCE提供設(shè)備控制功能, 包括: LCD/LED/VGA/SVGA顯示設(shè)備、鼠標(biāo)、鍵盤和觸摸屏等。根據(jù)我在這次項目移植得到的經(jīng)驗,建議設(shè)備驅(qū)動程序的移植可通過Platform Builder創(chuàng)建一一個新的平臺,然后再根據(jù)硬件平臺的需要插入和移除驅(qū)動。一般來說,需要修改的文件有Plaform. Bib、Platform. reg及驅(qū)動程序源代碼等。

4、平臺文件配置的修改

平臺配置文件包括源代碼配置文件和操作系統(tǒng)鏡像配置文件。源代碼配置文件主要是告訴Build工具需要用到的路徑,包括Dirs文件、Sources 文件和Makefile文件等。操作系統(tǒng)鏡像配置文件則主要用于給Makeimag工具生成操作系統(tǒng)鏡像,包括.bib、.reg、 .dat、 .db等文件。因此,在進(jìn)行BSP移植的時候,也需要對這些平臺配置文件進(jìn)行適當(dāng)?shù)男薷暮妥兏?/p>

5、移植時需特別注意的地方

很多嵌入式開發(fā)實踐都證明BSP移植是一個挺復(fù)雜、煩瑣的過程。因為WinCE不同版本的BSP包的組織結(jié)構(gòu)是不同的,所以會導(dǎo)致很多鏈接庫無法找到或者是這些庫已經(jīng)被替換、刪除,唯一的方法是只有耐心的根據(jù)錯誤提示來一一定位修改。

例如,在移植Bootloader時因為Bootloader的下載、燒寫、啟動鏡像過程會涉及到內(nèi)存地址,所以在處理各種入口地址時應(yīng)該要避免出現(xiàn)差錯或內(nèi)存超出范圍,尤其是處理地址沖突時需要特別小心。還有在移植OAL時, startup.s以及OEMInitDebugSerial兩個函數(shù)需要特別注意,因為它們主要是初始化硬件及串口,系統(tǒng)運行及驅(qū)動調(diào)試的基礎(chǔ),如果硬件配置以及調(diào)試串口有改變,則需要適當(dāng)?shù)男薷?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9165

    瀏覽量

    369190
  • WinCE
    +關(guān)注

    關(guān)注

    3

    文章

    128

    瀏覽量

    49096
收藏 人收藏

    評論

    相關(guān)推薦

    [推薦]深圳WINCE專業(yè)平臺開發(fā)團(tuán)隊,提供WINCE平臺的硬件定制,內(nèi)核驅(qū)動定制

    深圳WINCE專業(yè)平臺開發(fā)團(tuán)隊,我們致力提供WINCE平臺的硬件定制,內(nèi)核驅(qū)動定制一條龍服務(wù):********三星
    發(fā)表于 04-12 09:46

    ARM7&ARM9雙核平臺技術(shù)分析

    的應(yīng)用。 宣稱支持ARM7和ARM9的雙內(nèi)核,主要原因是因為他們的技術(shù)能力較弱,無法完成µCOS-II ARM9上的
    發(fā)表于 04-13 09:47

    MicrowindowsARM平臺移植

    盡管Linux 的arch目錄下有對ARM處理器支持的代碼,但由于Linux是X86平臺上實現(xiàn)的,很多方面都沒有考慮到ARM平臺的特殊性。
    發(fā)表于 06-01 09:38

    TarsARM平臺上的移植是如何去實現(xiàn)的

    ,add_and_return)都是基于x86匯編實現(xiàn),ARM64平臺下,使用gcc內(nèi)置函數(shù)實現(xiàn),示例如下:原x86嵌匯編實現(xiàn):支持ARM64平臺
    發(fā)表于 03-30 11:30

    基于嵌入式ARM & WinCE 的小型監(jiān)控系統(tǒng)的設(shè)計

    本文介紹了嵌入式操作系統(tǒng)WinCE技術(shù)特性、構(gòu)建基于WinCE 的嵌入式平臺以及構(gòu)建的平臺
    發(fā)表于 06-10 14:02 ?22次下載

    uCOSIILPC2210上的移植詳解

    uCOSIILPC2210上的移植詳解:嵌入式實時操作系統(tǒng)目標(biāo)處理器平臺上的移植是嵌入式軟件
    發(fā)表于 12-31 15:11 ?144次下載

    WinCE系統(tǒng)應(yīng)用程序的可移植性問題

    由于桌面Windows絕大多數(shù)情況下運行于X86平臺上,也就不存在不同平臺的可移植性問題,以下通過WinCE系統(tǒng)下訪問物理地址,來看看如何
    發(fā)表于 03-17 11:10 ?1870次閱讀
    <b class='flag-5'>WinCE</b>系統(tǒng)應(yīng)用程序的可<b class='flag-5'>移植</b>性問題

    基于ARM-WinCE平臺的時鐘同步設(shè)計

    時鐘同步 是分布式系統(tǒng)的核心技術(shù)之一,為實現(xiàn)基于ARM-WinCE嵌入式系統(tǒng)平臺的測試儀器組建分布式測試系統(tǒng),介紹IEEE1588精確時鐘協(xié)議基本原理的基礎(chǔ)上,提出了使用具有IEEE
    發(fā)表于 06-08 16:48 ?51次下載
    基于<b class='flag-5'>ARM-WinCE</b><b class='flag-5'>平臺</b>的時鐘同步設(shè)計

    基于嵌入式ARM&WinCE的小型監(jiān)控系統(tǒng)的設(shè)計

    本文介紹了嵌入式操作系統(tǒng)WinCE技術(shù)特性、構(gòu)建基于WinCE的嵌入式平臺以及構(gòu)建的平臺上開
    發(fā)表于 04-18 14:12 ?1次下載

    ARM平臺設(shè)備WinCE下UART配置

      UART串口作為最為常用的工業(yè)設(shè)備接口之一被廣泛且大量的應(yīng)用,本文就基于Toradex ARM平臺設(shè)備為例介紹WinCE下UART配置。
    發(fā)表于 09-16 11:51 ?0次下載

    基于ARMWinCE的掌紋鑒別系統(tǒng)

    基于ARMWinCE的掌紋鑒別系統(tǒng)
    發(fā)表于 09-25 08:40 ?9次下載
    基于<b class='flag-5'>ARM</b>與<b class='flag-5'>WinCE</b>的掌紋鑒別系統(tǒng)

    uCOS_ARM移植要點詳解

    uCOS_ARM移植要點詳解
    發(fā)表于 10-31 11:25 ?11次下載
    uCOS_<b class='flag-5'>ARM</b><b class='flag-5'>移植</b>要點<b class='flag-5'>詳解</b>

    詳解μC/OS-IIARM平臺移植

    C/OS-IIARM平臺移植是一個重要的學(xué)習(xí)過程,有助于提高對RTOS的認(rèn)識與理解,從而提高嵌入式工作者的理論與技術(shù)水平。C/OS-II
    發(fā)表于 11-01 10:02 ?13次下載

    基于ARM-WinCE平臺時鐘同步的設(shè)計(全解析)

    時鐘同步是分布式系統(tǒng)的核心技術(shù)之一,為實現(xiàn)基于ARM-WinCE嵌入式系統(tǒng)平臺的測試儀器組建分布式測試系統(tǒng),介紹IEEE1588精確時鐘協(xié)議基本原理的基礎(chǔ)上,提出了使用具有IEEE1
    發(fā)表于 11-28 10:56 ?9次下載
    基于<b class='flag-5'>ARM-WinCE</b><b class='flag-5'>平臺</b>時鐘同步的設(shè)計(全解析)

    嵌入式設(shè)計經(jīng)驗:ARM-WinCE平臺時鐘同步設(shè)計

    時鐘同步是分布式系統(tǒng)的核心技術(shù)之一,為實現(xiàn)基于ARM-WinCE嵌入式系統(tǒng)平臺的測試儀器組建分布式測試系統(tǒng),介紹IEEE1588精確時鐘協(xié)議基本原理的基礎(chǔ)上,提出了使用具有IEEE1
    發(fā)表于 05-18 15:10 ?1741次閱讀
    嵌入式設(shè)計經(jīng)驗:<b class='flag-5'>ARM-WinCE</b><b class='flag-5'>平臺</b>時鐘同步設(shè)計
    百家乐平游戏| 百家乐博彩策略| 宝马会娱乐城网址| 隆德县| 娱乐城百家乐可以代理吗 | 连环百家乐官网怎么玩| 大发888大发888娱乐城| 百家乐游戏机说明书| 百家乐官网赌场技巧论坛| 大发888真人真钱网址| 百家乐看盘技巧| 百家乐官网套路| 网上百家乐官网网址| 威尼斯人娱乐城不打烊| 澳门百家乐赌技术| 大世界百家乐官网娱乐城| 大发888我发财| 网上百家乐返水| 视频百家乐官网是真是假| 新利国际网站| 威尼斯人娱乐场28gxpjwnsr| 百家乐没有必胜| 百家乐官网赌法| 波克棋牌斗地主| 百家乐网上真钱娱乐场| 星际百家乐官网娱乐城| 百家乐官网游戏策略| 大发888注册娱乐账号| 百家乐官网技巧辅助软件| 梁河县| 月华百家乐的玩法技巧和规则| 百家乐真钱电玩| 网络百家乐官网的玩法技巧和规则| 百家乐官网是多少个庄闲| 赢钱的棋牌游戏| 百家乐那里最好| 网上百家乐假| 澳门百家乐国际娱乐城| 澳门百家乐官网送彩金| 横山县| 大博金娱乐|