巧手定製Windows CE系統

來源:互聯網
上載者:User

嵌入式系統正在日益廣泛的應用於各個方面,嵌入式系統的最大特點在於其精簡和即時性。公司近期委派我負責一個新的嵌入式系統項目,因為是小型裝置,所以我面臨的第一個難題是需要找一個體積少,但非常靈活添加外圍介面的嵌入式系統。

  最初提出了兩種方案,第一種是在完整的系統上進行裁剪,第二種是在磁碟上直接安裝核心、啟動指令碼等檔案來實現最小系統。經過再三思考,在眾多的嵌入式作業系統中,我選擇了Windows CE作為作業系統平台,通過對Windows CE進行裁剪以定製一個適合需求的嵌入式系統。

  一.什麼是Windows CE裁剪與定製?

  (1)嵌入式系統發展的瓶頸

  嵌入式系統一般包括硬體和軟體兩部分。硬體平台包括CPU、儲存空間、I/O連接埠等。軟體部分包括支援即時和多任務操作的嵌入式作業系統和應用程式,應用程式控制著系統的運作和行為,而作業系統控制著應用程式與硬體的互動作用。

  隨著價格低廉、結構小巧的CPU和串連穩定可靠的外設硬體大量使用,限制嵌入式系統發展的瓶頸就突出表現在軟體方面。對上層應用開發人員而言,嵌入式系統需要的是一套高度簡練、介面友善、品質可靠、易開發、多任務,並且價格低廉的作業系統。因此,一旦嵌入式處理器和外圍硬體選定了,那麼工作最多的就集中在嵌入式軟體的選擇和研發。而嵌入式軟體的嵌入式作業系統和應用軟體就成了重中之中。嵌入式作業系統是與應用環境密切相關的,從應用範圍大致可以分為通用型和專用型兩種嵌入式作業系統。

  (2)什麼是WINDOWS CE .NET定製系統?

  從原理上說,嵌入式作業系統仍舊是一種作業系統,因此它同樣具有作業系統在進程管理、儲存管理、裝置管理、處理器管理和輸入輸出管理幾方面的準系統。由於硬體平台和應用環境與一般案頭作業系統的不同,它最大的特點是可裁剪和可定製,也就是它能夠提供可配置或可剪裁的核心功能和其它功能,可以根據應用的需要有選擇的提供或不提供某些功能以減少系統開銷。

  嵌入式作業系統和嵌入式作業系統定製或組態工具緊密聯絡,構成了嵌入式作業系統的整合式開發環境。就WINDOWS CE來說,我們無法買到WINDOWS CE這個作業系統,買到的是Platform Builder for CE.NET的整合式開發環境,簡稱為PB,利用它可以剪裁和定製出一個符合需要的WINDOWS CE.NET作業系統。所以,WINDOWS CE .NET作業系統一般需要經過裁剪與定製開發,包括進階建立、系統調試、建立板支援包、驅動程式開發等內容。因此,我們說的WINDOWS
CE系統實際上完全是由自己定製出來的,這就是嵌入式作業系統最大的特點。

  對於嵌入式的應用軟體,通常是指運行在嵌入式作業系統之上的軟體。這種軟體由於不是針對常規的作業系統進行開發,因此很多如VB、VC++等開發工具就不方便使用了,於是就有專門的SDK或整合式開發環境來提供這種開發需要。對Windows
CE的應用軟體開發,微軟提供Embedded Visual Basic(EVB)、Embedded VisualC++(
EVC)、Visual Studio.NET等專門針對嵌入式作業系統的開發工具。

  (3)Windows CE定製平台Platform Builder

  一個嵌入式系統包括四層結構,他們是應用程式、嵌入式作業系統映像(OS Image)、板級支援包(BSP)、硬體平台組成。Windows CE的定製過程也可以說是針對不同的CPU、不同的目標板編寫BSP的過程。在硬體平台上,Windows CE支援多種處理器家庭,包括x86、Xscale、arm、MIPS和SH等系列,它允許開發人員選擇最理想的硬體。在作業系統映像(OS
Image)方面,Windows CE.NET 是由 Platform Builder來定製的,Platform Builder提供多種設定檔和調試工具,可以將嵌入式作業系統和應用程式一起產生核心,也可以只產生Windows CE.NET作業系統,並可根據功能要求裁剪相關模組。

  Windows CE具有一個很小的核心核心包,基本上只包含排程、記憶體管理和kernel API,它們構成了一個完整個體,其餘大部分功能都在單獨的模組中完成。系統的裁剪和配置是在Platform Builder中完成,設定檔包括4種檔案類型:二進位映像組建檔案.BIB、註冊表檔案.REG、目錄和檔案配表檔案.DAT、資料庫檔案.DB。通過修改這些設定檔可以裁剪最佳化Windows CE。靈活運用Platform Builder的設定檔.REG、.BIB、.DAT、.DB是定製適合目標平台Windows
CE作業系統的關鍵。

  另外,所有.DAT檔案合并在修改設定檔時,一定要注意CE.BIB、REGINIT.INI、INITOBJ.DAT、INITDB.INI是中間檔案,修改這些檔案並不能配置Windows CE。而可配置的秘密是隱藏在建構作業系統映像檔案的過程當中,這個映像檔案包括作業系統的kernel,記憶體中的檔案系統,儲存的程式和檔案,系統設定檔,註冊表資料庫等。整個建構過程可以分成四個階段:CESYSGEN、BSP、BUILDREL、MAKEIMG。

二.Windows CE核心定製過程

  嵌入式開發涉及到的問題很多,其中最主要有作業系統核心的定製,驅動程式的編寫,和應用程式的研發。對我們開發程式員來說,熟練的掌控嵌入式核心的定製有利於提高效率。Windows CE核心定製是研發的一個重點,它不同於一般應用程式的研發,因為它涉及到硬體。核心定製包括定製板級支援包BSP、定製系統模組、定製原始裝置商適配層( OAL)及裝置驅動等程式。Windows CE核心定製是在Platform Builder內完成的,它是微軟提供的專業軟體,能夠從官方網站得到評估板。

  (1)搭建Platform Builder環境

  微軟的Platform Builder整合研發環境包含一系列研發工具,利用它提供的配置文檔和調試工具能夠快速定製適合目標平台的Windows CE作業系統,只要適當修改和配置Platform Builder的配置文檔就能夠裁剪和添加相關組件,和配置各種裝置驅動程式。

  Platform Builder提供了建立和調試Windows CE映射NK.BIN的整合式開發環境,如嚮導和工具列,支援Active Template Library(ATL)、微軟基本類庫(MFC)和Visual Basic,為支援的處理器家庭提供編譯器、核心調試器以及各種遠端偵錯工具。通過網路通訊我們可以將Windows CE作業系統映像檔案NK.BIN下載到目標平台,然後讓Windows
CE在目標平台啟動,這時也可通過Platform Builder提供的調試工具查看Windows CE的運行情況。

  (2)板級支援包(BSP)的定製

  BSP主要包括BootLoader的研發和OAL的研發。編寫BootLoader是定製Windows CE系統第一步,也是關鍵的一步。只有得到一個穩定工作的Loader程式,才能夠更進一步研發Windows CE的BSP。BootLoader是一段單獨的程式碼,它存放於目標平台的非易失儲存介質中,如ROM或Flash。它主要用於啟動硬體和下載NK.bin到目標板上,並有一定的監控作用。

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

  OAL(OEM Adaptation Layer)是OEM 適配層,是位於Windows CE核心和硬體之間,是OAL各個模組代碼被編譯後(.lib)和其它核心庫連結到一起形成Windows CE的核心可執行文檔NK.EXE。Windows CE核心在OAL層可使用大量的函數和全域變數,利用這些函數和全域變數OEM能夠編寫中斷處理、RTC、電源管理、調試連接埠、通用I/O控制碼等。一般來說,Windows CE安裝目錄的子目錄中包含了OAL的部分源碼,大多數情況下開發工程師對OAL只要修改即可,甚至無需修改。

  (3)驅動程式的開發及平台文檔的配置

  在Windows CE中,任何的驅動程式都以Dll形式存在。Dll文檔能夠用EVC來研發,也能夠使用PB來研發。平台文檔配置包括4種文件類型:二進位映像產生文檔.BIB、註冊表文檔.REG、目錄和文檔分配表文檔.DAT、資料庫文檔.DB。通過修改這些配置文檔能夠裁剪最佳化Windows CE,使用者根據需要來建立自己的配置文檔。

  (4)SDK匯出及核心下載

  BootLoader的研發會產生Eboot.nb0等文檔,核心編譯會產生NK.nb0和NK.bin等文檔。Makeimg.exe用全部設定檔把目標模組和檔案合并成一個唯一的Windows CE映像檔案NK.BIN。核心下載是先通過JFlash.exe向Flash中寫入Eboot.nb0文檔,上電運行之後,再通過Eshell.exe來下載NK.bin。然後重起系統,定製的Windows CE就能夠運行了。產生映像檔案NK.BIN是平台建立過程的最後一步,也是配置Windows CE的最終目標。核心編譯完成後,還可以匯出一個平台SDK,供在
EVC或VS.net中開發上層軟體使用。


  三. 定製Windows CE的幾點小技巧分享

  (1)選擇合適的硬體平台

  Windows CE.NET支援多種微處理器家族以及模擬技術,選擇合適需求的CPU和標準開發主板(SDB)可以更高效的節省開發時間,這也是定製Windows CE的第一步。

  (2)巧用系統提供的BSP包

   Windows CE的移植過程基本上是針對不同的硬體平台CPU,不同的目標板編寫BSP的過程。開發工具Platform Builder本身就提供了多種目標板的BSP,如果目標板和Platform Builder提供的相同,那麼只需要重新編譯產生相應的系統即可。但是實際情況是一般處理器是相同的,但開發板上的外圍硬體介面不相同,這時候可以通過修改Platform Builder中相同或相近處理器的BSP來完成一個新的BSP。因此,嵌入系統的開發人員應要多使用Windows CE.NET包括的主板支援包(BSP),從而縮短在硬體開發上所需的時間。

  (3)借鑒標本程式加快驅動程式開發

  定製Windows CE系統還有一個非常重要的步驟,就是為外圍裝置開發驅動程式。通常的做法是從這些外圍驅動常式中尋找和硬體平台最接近的作為標本程式,然後再從所選擇的硬體平台上做相應的改變,一些新的外圍裝置應使用由第三方廠商來提供驅動程式,以加快完成開發,使嵌入式產品儘快上市。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.