摘 要:WINCE以其高度集成化,可按需求裁剪等特點,已經在嵌入式操作系統中得到廣泛應用,成為ARM系統的重要組成部分,對其成功定制是基于ARM平臺進行系統開發的重要步驟。分析WINCE開發流程及板級開發包BSP的編寫過程,詳細論述利用Platform Builder為YL2440開發板定制及安裝操作系統的方法、步驟及需要解決的問題。實驗結果證明此方法正確有效、實用性強,為同類系統的開發提供了依據。
關鍵詞:WINCE;BSP;Platform Builder;操作系統定制
中圖分類號:TP316.7 文獻標識碼:B
文章編號:1004-373X(2008)10-073-03
System Configuration of WINCE Based on ARM
YU Hongbing,LI Baoan,SHEN Gongxun
(School of Astronautics,Beihang University,Beijing,100083,China)
Abstract:WINCE has been widely applied in the embedded operation system because of its highly integrated characteristic and being tailored according to require ments of applications.It has became an important part of ARM systerm.Customizing the operating system is important step.This paper analyses the architecture of WINCE,explains the process of board support package,finally describes the process of customizing the operating system in detail by using the Platform Builder based on YL2440 board.
Keywords:WINCE;BSP;Platform;operating system configuration
Windows CE是微軟公司推出的一個功能強大的實時嵌入式操作系統,他可以用在手機、機頂盒、智能手持設備、網關、數字媒體設備、工業控制等多種場合。由于WINCE采用模塊化設計,開發人員可以根據系統的需要選擇自己需要的模塊,從而達到減小系統體積的目的,已經越來越多地被開發廠商支持及使用,迅速成為嵌入式操作系統主流平臺之一。他有強大的開發工具Platform Builder,為基于Windows CE開發嵌入式系統的工程師提供非常便利的集成開發環境,其他可選擇的開發工具有Embedded Visual C++和Visual Studio.NET等[1]。
1 WINCE體系結構及開發流程
如圖1所示,基于Windows CE構建的嵌入式系統可以分為4個層次,從下到上依次是:硬件層、BSP層、操作系統層和應用程序層[2]。
硬件層通常是根據應用需要定制的,因此在嵌入式系統中,硬件體系結構之間的差異非常大。BSP層是邏輯上位于硬件和Windows CE操作系統之間的一層硬件相關的代碼,其主要作用是對具體的硬件進行抽象,抽象出統一的接口,然后Windows CE內核可以使用這些接口與硬件進行通信。操作系統層實現Windows CE作為一個操作系統的主要功能,位于這一層的功能有Windows CE的進程管理、線程管理、處理機管理、調度、物理內存和虛擬內存管理、文件系統及設備管理等。應用程序層位于Windows CE層次結構的最頂層,從系統的角度看,每個應用程序都是Windows CE中的一個單獨進程。微軟開放了部分Windows CE的源代碼,并且允許開發人員對這部分源代碼進行修改利用。目前Windows CE 5.0是最新的版本。

WINCE開發流程要首先進行硬件設計,確定系統所運行的硬件平臺,硬件平臺可自主研發,也可從硬件廠商處購買。隨后要有針對這塊硬件板的板級支持包(BSP),在自主研發的硬件中,BSP通常也需自主研發。再通過Platform Builder工具定制操作系統,可根據具體應用需要,選擇需要的操作系統功能組件,然后生成操作系統運行時映像,當硬件和操作系統都已經具備后,所剩下的就是為自己的平臺開發一些必要的應用程序。
2 ARM及開發板硬件平臺
ARM是對一類RISC微處理器的通稱。目前,ARM微處理器已遍及工業控制、消費類電子產品、通信系統、網絡系統及無線系統等各類電子市場。三星公司推出的16/32位RISC微處理器S3C2440A,是一種低價格、低功耗、高性能小型ARM微控制器。其杰出的特點是其核心處理器(CPU),是一個16/32位ARM920T的RISC處理器。ARM920T實現了MMU,AMBA BUS和Harvard高速緩沖體系結構。這一結構具有獨立的16 kB指令Cache和16 kB數據Cache。并通過提供一套完整的通用系統外設,減少整體系統成本和無需配置額外的組件。采用S3C2440A作為中央處理器的開發板很多,這里采用優龍公司生產的YL2440開發板作為硬件平臺,其主頻達到400 Hz,外部存儲器為64 MB,帶有2個5線異步串行口、2個USB1.1接口和2個網口(10 M,100 M各一),為下載燒錄操作系統提供了便利[3,4]。
3 BSP開發流程
如圖2所示,BSP主要由4部分構成:引導程序、BSP抽象層、設備驅動程序和配置文件。現實中,從零開始編寫BSP所有代碼的情況很小,大多數情況下,開發BSP都是基于現有的類似BSP的源代碼作修改[5]。

如圖2所示,開發BSP的步驟,大致可分為7個步驟,系統加電后運行的第1條指令就是引導程序(Boot Loader)的代碼,因此開發Boot Loader是進行BSP開發的第一個步驟。其主要功能是初始化硬件,加載操作系統映像(OS Image)到內存,然后跳轉到操作系統代碼去執行。Boot Loader通常僅次于目標設備上的非易失存儲設備中,并且在加電或重置時自動執行,通常可通過JTAG或串口燒寫工具把Boot Loader燒寫到目標設備上。
從靜態的角度來看,Boot loader 的結構可分為以下幾部分:BLCommon、OEM代碼、Eboot、存儲管理、EDBG驅動程序,除了OEM代碼是以OEM開頭的一些函數,需要Boot Loader開發人員根據自己硬件特點和需求實現,需自己進行編寫之外,其他幾個部分的代碼都是由Windows CE本身提供。
OAL是位于Windows CE操作系統內核和目標硬件設備之間的硬件抽象代碼,也需要自己編寫,主要用來對網口、串口、計時器等目標設備進行初始化。在構建中,被編譯成OAL.Lib庫文件,與其他的庫進行統一的鏈接,最終形成Windows CE操作系統內核可執行文件NK.exe。
4 WINCE內核定制
Platform Builder是微軟公司發布的一款用于定制Windows CE操作系統的集成開發環境。開發人員可以使用這個集成開發環境完成嵌入式操作系統的定制、編譯和調試,并且還可以在這個集成開發環境中進行應用軟件、驅動程序的開發等。他包括一系列開發工具、上下文菜單、工具欄和快捷鍵等。其主要開發步驟為:進入新建Platform向導;選擇板級支持包(BSP);選擇開發的類庫;選擇應用程序;選擇客戶端的Internet服務;選擇多媒體技術等,最終生成操作系統內核鏡像文件,在啟動系統時只要加載鏡像文件就可以啟動WINCE操作系統[5]。
首先,選擇一臺以Windows 2000 XP為操作系統的PC機作為開發機,安裝Platform Builder 5.0作為WINCE.NET 5.0的開發環境,根據使用經驗,PC機最好是有1 GHz以上的CPU以及512 MB以上的內存,Platform Builder 5.0運行才會比較流暢,且安裝需要3~4 GB磁盤空間,因此也需有足夠大的硬盤。安裝過程中還要求選擇處理器內核,這里選擇嵌入式內核ARMV4I。其他需用到的軟件還有ActiveSync,作為開發板和安裝桌面Windows XP的PC機之間信號傳輸工具;燒錄軟件DNW;編寫驅動軟件Embedded Visual C++等[6]。
其次要安裝BSP。第一步要添加BSP中的CEC文件,CEC文件是對BSP文件塊的總體描述,包括源代碼、版本、作者等,打開Platform Builder 5.0編譯工具,點擊主菜單“File”下的“Manage Catalog Features”菜單項,可以看到“SMDK2410.CEC”文件,這是Platform Builder 5.0自帶的主板支持包,只能支持S3C2410硬件平臺,這里要點擊“Import”,導入廠家提供的“SMDK2440.CEC”(如圖3所示)。導入后,在Platform Builder 5.0目錄上就可看到“Samsung SMDK2440:ARMV4I”列,驅動的安裝可從主菜單“File”下的“Open Workspace”,選擇開發板“YL2440.pbxml”工程文件,添加所有的驅動。直接點擊Build|Sysgen開始編譯平臺。編譯完成后,得到SMDK2440的二進制的映象文件:nk.bin和“nk.nb0”,一般而言,這2個文件位于編譯平臺時生成的文件夾“WINCE500|PBWorkspaces|PlatformName|RelDir|SAMSUNG[CD#*2]SMDK2440|ARMV4Release”下面,其中“nk.nb0”可以被下載到YL2440的RAM空間執行,執行的結果就是在RAM中直接運行Wince 5.0操作系統(如圖4所示)。nk.nb0可以通過USB下載到SDRAM中來運行,下載的運行地址為0X30200000,步驟為先用串口線將PC機和開發板的串口連接起來,打開DNW,設置好串口參數:波特率11 520,接著連接好USB DEVICE,點擊DNW的“USB Port”,選擇“Transmit”,選擇要傳輸的nk.nb0,直至下載結束。

定制過程中,需要注意一些問題,一是在編譯WINCE時,經常會出現這樣的錯誤:Error:Ram start overlaps rom binary。這是因為編譯Debug版本時文件太大,超過29 MB時系統就會報錯,直接后果是導致ROM和RAM空間的沖突,出現地址交錯現象。解決方法是:減少一些組件重新進行編譯,或是在WINCE 5.0下,打開config.bib文件,改動一語句“RAM8E80000001700000 RAM”為 “RAM8F80000001700000 RAM”,重新編譯之后問題得以解決。二是進行部分驅動及應用程序的開發前,需要用Platform Builder 5.0為不同的開發板去定制不同的SDK(Software Development Kit,即輔助開發某一類軟件的相關文檔、范例和工具的集合),且保證編譯完全正確,否則在開發機(模擬PC機)上開發出的驅動及應用程序,在開發板上無法識別,如安裝EVC為YL2440開發板開發攝像頭驅動時,就需要正確安裝適用于YL2440開發板的SDK作為開發的基礎[7]。
5 結 語
WINCE系統定制是嵌入式系統開發的重要環節,是進行后續功能開發的軟件平臺,其定制過程是十分復雜的,需要對WINCE系統本身的結構和文件之間的調用非常清楚,還要求對所依托的硬件足夠熟悉,本文在特定硬件平臺上對操作系統內核的定制進行分析論述,最終成功進行定制,并對定制過程中所遇到的問題進行討論,提出解決的方法,為下一步的系統開發建立基礎[8]。
參 考 文 獻
[1]汪兵.EVC高級編程及其應用開發[M].北京:中國水利水電出版社,2005.
[2]何宗鍵.Windows CE嵌入式系統[M].北京:北京航空航天大學出版社,2006.
[3]陳連坤.嵌入式系統的設計與開發[M].北京:清華大學出版社,2005.
[4]Steve Furber.ARM System on Chip Architecture[M].2002.
[5]姜波.Windows CE.Net程序設計[M].北京:機械工業出版社,2006.
[6]廖日坤.ARM嵌入式應用開發技術白金手冊[M].北京:中國電力出版社,2005.
[7]李敬兆.ARM核匯編語言程序設計[M].北京:中國科技大學出版社,2006.
[8]何桂華.基于SamArmdvk 9開發板的WINCE系統定制與安裝[J].長沙電力學報:自然科學版,2005,30(3):54-56.
作者簡介
余宏兵 男,1977年出生,碩士研究生。主要研究方向為導航、制導與控制。
李寶安 北京航空航天大學無人機所研究員。
申功勛 北京航空航天大學宇航學院教授,博士生導師。