目前,嵌入式微處理器種類很多,嵌入式操作系統(tǒng)要支持盡可能多的處理器,這就要完成操作系統(tǒng)針對不同處理器的定制。
本文分析了嵌入式操作系統(tǒng)Windows CE.NET的特點,并利用工具Platform Builder 4。2完成了其在以ARM920T為核心的S3C2410處理器上的定制。
1 Windows CE系統(tǒng)和Platform Builder 4.2
Windows CE是微軟推出的一個32位、多線程、多任務(wù)的嵌入式操作系統(tǒng),是微軟專門為信息設(shè)備、移動應(yīng)用、嵌入式應(yīng)用等設(shè)計的嵌入式模塊型操作系統(tǒng)。用戶可選擇、組合和配置Windows CE.NET的模塊和組件來創(chuàng)建用戶版的操作系統(tǒng)。
Windows CE.NET是WindOWS CE 3.0的后繼產(chǎn)品,其系統(tǒng)組成如圖1所示。Windows CE.NET為快速建立下一代智能移動和小內(nèi)存占用的設(shè)備提供了一個良好的實時操作系統(tǒng),它具備完整的操作系統(tǒng)特性集和針對端對端開發(fā)的環(huán)境,并包括了定制設(shè)備所需要的一切,例如,聯(lián)網(wǎng)能力、實時性、小內(nèi)存占用、多媒體以及Web瀏覽功能。
Platform Builder 4.2是微軟提供給Windows CE.NET開發(fā)人員進行基于Windows CE.NET平臺下嵌入式操作系統(tǒng)定制的集成開發(fā)環(huán)境。它提供了所有進行設(shè)計、創(chuàng)建、編譯、測試和調(diào)試Windows CE。NET操作系統(tǒng)平臺的工具,開發(fā)人員可以通過交互式的環(huán)境來設(shè)計和定制內(nèi)核、選擇系統(tǒng)特性,然后進行編譯和調(diào)試。同時開發(fā)人員還可以利用Platform Builder來進行驅(qū)動程序和應(yīng)用程序項目的開發(fā)等。
2 硬件平臺
HHARM9-EDU開發(fā)平臺是由華恒公司開發(fā)的一套用于嵌入式系統(tǒng)教學(xué)的平臺,它由核心板和底板組成。核心板上集成了Samsung S3C2410處理器、16 M 的FLASH 和64 M SDRAM。Samsung的S3C2410處理器是一款高性價比、低功耗、體積小、高性能、高集成度的微處理器,它采用203 MHz的ARM920T內(nèi)核,集成了16 KB指令緩存和16 KB數(shù)據(jù)緩存,并利用MMU實現(xiàn)對虛擬內(nèi)存的管理,LCD控制器支持STN屏或FTT屏,支持NAND flash。核心板功能模塊見圖2。
3 Windows CE. NET系統(tǒng)移植
3.1 移植流程
從根本上說,Windows CE.NET的移植過程也就是改寫B(tài)SP的過程。BSP又稱板級支持包,它是一個包括啟動程序、OEM適配層程序(OAL)、標(biāo)準(zhǔn)開發(fā)板(SDB)和相關(guān)硬件設(shè)備的驅(qū)動程序的軟件包。BSP是基于Windows CE.NET平臺系統(tǒng)的主要部分。操作系統(tǒng)移植步驟為:
1)對操作系統(tǒng)進行裁減,配置各個組件并且修改相關(guān)的配置文件;
2)開發(fā)目標(biāo)設(shè)備系統(tǒng)上的設(shè)備驅(qū)動程序,建立定制的CE操作系統(tǒng)映像文件;
3)將目標(biāo)文件下載到目標(biāo)設(shè)備上進行調(diào)試;
4)定制操作系統(tǒng)內(nèi)核后,導(dǎo)出平臺SDK,供在Embedded Visual C++中開發(fā)上層應(yīng)用軟件。
移植流程見圖3
開發(fā)工具Platform Builder自身就提供了多種目標(biāo)板的BSP。如果用戶的目標(biāo)板和Platform Builder提供的相同,那么只需要重新編譯生成相應(yīng)的系統(tǒng)鏡像下載到目標(biāo)板即可。但是實際情況更多的可能是處理器相同,而板上的外圍設(shè)備接口不同,這時候只有修改Platform Builder中相同或相近的處理器的BSP來生成一個新的BSP,這樣就可以大大減少BSP的研發(fā)周期。
3.2 基于S3C2410板的BSP開發(fā)
BSP的開發(fā)主要包括Bootloader、OAL、本地驅(qū)動程序的開發(fā)以及一些文件的配置 。
1)Bootloader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。它存放于目標(biāo)平臺的非易失性存儲介質(zhì)中,如ROM 或Flash。本文移植使用的是華恒公司提供的ppcboot。
2)OAL即設(shè)備商適配層中位于Windows CE內(nèi)核和目標(biāo)硬件平臺之間的一個代碼層。開發(fā)OAL的目的是為了實現(xiàn)Windows CE.NET內(nèi)核和目標(biāo)硬件之間的通信,包括處理中斷、定時器等。
3)Device Drivers(驅(qū)動程序)是指能夠管理虛擬或者物理設(shè)備、協(xié)議、服務(wù)等的一段軟件模塊,操作系統(tǒng)通過驅(qū)動程序直接和硬件打交道。設(shè)備驅(qū)動設(shè)計的具體步驟是通過Platform Builder創(chuàng)建一個新的平臺,然后根據(jù)硬件平臺的需要插入和移除驅(qū)動,需要修改的文件有Platform。Bib,Platform。reg及驅(qū)動程序源代碼等。下面以LCD驅(qū)動程序源碼為例,根據(jù)華恒的參考資料,需要對PB的原有驅(qū)動進行如下修改:
WORD TempBuffer[241][320]; // 改后buffer的大小
S3C2410DISP::S3C2410DISP(void)
{
RETAILMSG(0,(TEXT(“++S3C2410DISP::S3C2410DISP ”)));
//setup up display mode related constants
m_nScreenWidth=240; //屏幕寬由原來的480改為240
m_nScreenHeight=320; //屏幕高由原來的640改為現(xiàn)在的320
m_colorDepth=16;
m_cbScanLineLength=m_nScreenWidth*2;
m_frameBufferSize=m_nScreenHeight*m_cbScanLineLength;
//memory map register access window ,frame buffer,and program LCD controller InitializeHardware();
寄存器設(shè)置是由D:WINCE420PLATFORMsmdk2410KERNELHALcfw。c中的InitDisplay函數(shù)進行設(shè)置。驅(qū)動中通過讀注冊表中的相應(yīng)鍵的值來獲得framebuffer的地址。
[HKEY_LOCAL_MACHINEDriverS3C2410CONFIG]
“DisplayDll”=“s3c2410disp。dll”
“LCDVirtualFrameBase”=dword:ac100000
“LCDPhysicalFrameBase”=dword:30100000
4)平臺文件的配置。配置文件包括源代碼配置文件和操作系統(tǒng)鏡像配置文件。源代碼配置文件主要是告訴Build工具需要用到的路徑、C或Visual C++的源文件以及生成什么類型的二進制文件等,包括Dirs、Sources、Makefile文件等。操作系統(tǒng)鏡像配置文件則主要用于給Makeimag工具生成操作系統(tǒng)鏡像,包括。bib(二進制映像文件)、。reg(注冊表文件)、。dat(文件系統(tǒng)描述文件)、。db(數(shù)據(jù)庫文件)。本文中源代碼配置文件只對配置文件做了相應(yīng)的修改。
利用上述生成的BSP,通過Platform Builder創(chuàng)建一個新的平臺,本文直接選擇Mobile Handheld平臺,接下來根據(jù)需要進行選擇。最后在WINCE42OPUBLICplatformRelDirSAMSUNG_SMDK2410_ARMV4Release下得到NK。bin,對其進行壓縮之后燒寫到Flash中。同時導(dǎo)出平臺的SDK,供在EVC上開發(fā)應(yīng)用程序。
3.3 在目標(biāo)設(shè)備上操作系統(tǒng)鏡像的調(diào)試
開發(fā)板和PC機可以通過串行餅行端口、以太網(wǎng)和JTAG/BDM 來進行操作系統(tǒng)映像的下載。本文中,開發(fā)板同PC機接網(wǎng)線、串口線,設(shè)定超級終端,最后系統(tǒng)在開發(fā)板上運行。
4 結(jié)束語
本文簡單介紹了Windows CE.NET在HHARM9-EDU 的移植過程,對于其他處理器平臺,同樣具有參考價值。Windows CE .NET在不同硬件平臺上的移植主要是根據(jù)對應(yīng)的硬件修改BSP的過程,驅(qū)動程序的設(shè)計是構(gòu)建BSP的關(guān)鍵之一,在沒有新的外設(shè)情況下,驅(qū)動的設(shè)計可以在PB提供的源碼基礎(chǔ)上進行修改。對于有新的硬件設(shè)備情況下就要對其進行重新編寫。
責(zé)任編輯:gt
-
處理器
+關(guān)注
關(guān)注
68文章
20069瀏覽量
242867 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3623瀏覽量
92673 -
多媒體
+關(guān)注
關(guān)注
0文章
514瀏覽量
38260
發(fā)布評論請先 登錄
S3C2410處理器與Nand flash 的問題
基于Windows CE的流驅(qū)動程序如何去實現(xiàn)?
Windows CE.Net下基于流驅(qū)動的AD驅(qū)動設(shè)計與實現(xiàn)
Windows CE.NET平臺流接口USB驅(qū)動的設(shè)計
Windows CE.NET平臺流接口USB驅(qū)動的設(shè)計
S3C2410處理器 Bootloader(Vivi)源代碼
Windows CE.NET在S3C2410處理器上的移植

S3C2410處理器特性
Windows CE.net的串口通訊類設(shè)計
Win CE.NET下Boot Loader的設(shè)計與實現(xiàn)
基于S3C2410和Windows CEnet的智能移動終端設(shè)計
基于Windows CEnet的串行通訊設(shè)計與實現(xiàn)
基于S3C2410處理器對Windows CE 5.0操作系統(tǒng)實現(xiàn)BSP移植

AN-738: 在Windows CE.NET下使用AD7877觸摸屏控制器和Intel PXA250處理器

評論