在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

WINCE在ARM平臺的移植及驅動技術詳解

h1654155282.3538 ? 來源:網絡整理 ? 2018-05-16 17:24 ? 次閱讀

WINCE操作系統簡介

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

操作系統移植的原因

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

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

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

嵌入式OS負責嵌入式系統全部軟、硬件資源的分配、調度,控制和協調各部件的工作,與普通OS相比,嵌入式OS在系統實時高效性、硬件依賴性、軟件固化及應用的專用性方面具有較為突出的特點。

WINCE在ARM平臺的移植及驅動技術

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

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

WINCE在ARM平臺的移植及驅動技術詳解

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

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

WINCE在ARM平臺的移植及驅動技術詳解

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

2、OAL的移植步驟

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

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

下面將介紹快速調試OAL的方法。

首先Clone一個BSP,命名為2410Tiny。如果從5.0的BSP移植,需要修改相應的目錄結構,在6.0中不存在CEC文件,需要做轉換。Clone完成后的BSP如下圖所示:

WINCE在ARM平臺的移植及驅動技術詳解

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

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

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

WINCE在ARM平臺的移植及驅動技術詳解

至此,2410Tiny的BSP準備完成,用此BSP定制一個OSDesign。在選擇模板時選CustomDevice (第二項),然后直接點擊完成,結束向導。進入平臺屬性頁進行設置,如下圖所示:

WINCE在ARM平臺的移植及驅動技術詳解

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

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

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

WINCE在ARM平臺的移植及驅動技術詳解

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

WINCE在ARM平臺的移植及驅動技術詳解

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

WINCE在ARM平臺的移植及驅動技術詳解

現在我們可以用PB6.0的Debug工具進行簡單調試。先用Target Control查看系統運行的進程:

WINCE在ARM平臺的移植及驅動技術詳解

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

WINCE在ARM平臺的移植及驅動技術詳解

至此,可以認為WinCE6.0 的OAL已經可以正常工作。

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

3、驅動程序的移植和開發

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

4、平臺文件配置的修改

平臺配置文件包括源代碼配置文件和操作系統鏡像配置文件。源代碼配置文件主要是告訴Build工具需要用到的路徑,包括Dirs文件、Sources 文件和Makefile文件等。操作系統鏡像配置文件則主要用于給Makeimag工具生成操作系統鏡像,包括.bib、.reg、 .dat、 .db等文件。因此,在進行BSP移植的時候,也需要對這些平臺配置文件進行適當的修改和變更。

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

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

例如,在移植Bootloader時因為Bootloader的下載、燒寫、啟動鏡像過程會涉及到內存地址,所以在處理各種入口地址時應該要避免出現差錯或內存超出范圍,尤其是處理地址沖突時需要特別小心。還有在移植OAL時, startup.s以及OEMInitDebugSerial兩個函數需要特別注意,因為它們主要是初始化硬件及串口,系統運行及驅動調試的基礎,如果硬件配置以及調試串口有改變,則需要適當的修改

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9262

    瀏覽量

    373142
  • WinCE
    +關注

    關注

    3

    文章

    128

    瀏覽量

    49426
收藏 人收藏

    評論

    相關推薦

    [推薦]深圳WINCE專業平臺開發團隊,提供WINCE平臺的硬件定制,內核驅動定制

    深圳WINCE專業平臺開發團隊,我們致力提供WINCE平臺的硬件定制,內核驅動定制一條龍服務:********三星
    發表于 04-12 09:46

    ARM7&ARM9雙核平臺技術分析

    的應用。 宣稱支持ARM7和ARM9的雙內核,主要原因是因為他們的技術能力較弱,無法完成µCOS-II ARM9上的
    發表于 04-13 09:47

    MicrowindowsARM平臺移植

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

    TarsARM平臺上的移植是如何去實現的

    ,add_and_return)都是基于x86匯編實現,ARM64平臺下,使用gcc內置函數實現,示例如下:原x86嵌匯編實現:支持ARM64平臺
    發表于 03-30 11:30

    基于嵌入式ARM & WinCE 的小型監控系統的設計

    本文介紹了嵌入式操作系統WinCE技術特性、構建基于WinCE 的嵌入式平臺以及構建的平臺
    發表于 06-10 14:02 ?22次下載

    uCOSIILPC2210上的移植詳解

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

    WinCE系統應用程序的可移植性問題

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

    基于ARM-WinCE平臺的時鐘同步設計

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

    基于嵌入式ARM&WinCE的小型監控系統的設計

    本文介紹了嵌入式操作系統WinCE技術特性、構建基于WinCE的嵌入式平臺以及構建的平臺上開
    發表于 04-18 14:12 ?1次下載

    ARM平臺設備WinCE下UART配置

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

    基于ARMWinCE的掌紋鑒別系統

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

    uCOS_ARM移植要點詳解

    uCOS_ARM移植要點詳解
    發表于 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平臺移植是一個重要的學習過程,有助于提高對RTOS的認識與理解,從而提高嵌入式工作者的理論與技術水平。C/OS-II
    發表于 11-01 10:02 ?13次下載

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

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

    嵌入式設計經驗:ARM-WinCE平臺時鐘同步設計

    時鐘同步是分布式系統的核心技術之一,為實現基于ARM-WinCE嵌入式系統平臺的測試儀器組建分布式測試系統,介紹IEEE1588精確時鐘協議基本原理的基礎上,提出了使用具有IEEE1
    發表于 05-18 15:10 ?1822次閱讀
    嵌入式設計經驗:<b class='flag-5'>ARM-WinCE</b><b class='flag-5'>平臺</b>時鐘同步設計
    主站蜘蛛池模板: 六月婷婷啪啪 | 国产女主播在线 | 男女性gif抽搐出入 男女性高爱潮免费的国产 男女性高爱麻豆 | 欧美天天在线 | 新四虎影院 | 一区二区三区四区欧美 | caobi在线观看| 影院成人区精品一区二区婷婷丽春院影视 | 三级视频网站在线观看播放 | 亚洲影视大全 | 亚洲无吗在线视频 | 91老色批网站免费看 | 成人伊人| 激情六月丁香 | 婷婷五月色综合香五月 | 国产普通话一二三道 | 亚洲啪啪 | 色屋网 | 天堂8在线天堂资源在线 | 欧美ol丝袜高跟秘书在线观看 | 日本人xxxxxxxxxⅹ69 | 午夜tv| 狠狠色噜噜狠狠狠狠97老肥女 | 小说老卫陈红张敏陈法蓉 | 日本在线视频www色 日本在线视频精品 | 黄网站免费大全 | 午夜乩伦| 最新版天堂资源官网 | 国产精品免费拍拍拍 | 天天干天天天天 | 日韩高清特级特黄毛片 | 2021精品国产综合久久 | 国产网站在线免费观看 | 爽天天天天天天天 | 豆国产97在线 | 欧洲 | 五月天婷婷在线播放 | 日韩免费一级 | japanese日本护士xx亚洲 | 欧美精品二区 | 岛国一级毛片 | 国产综合成色在线视频 |