偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

BSP移植對WinCE的重要性及影響

開發(fā)
本文根據(jù)實際項目,分析了BSP移植對WinCE的重要性和影響,然后在此基礎(chǔ)上通過對Bootloader、OAL和驅(qū)動程序的移植來具體探討B(tài)SP的移植過程。

目前嵌入式系統(tǒng)應(yīng)用變得越來越廣泛,嵌入式產(chǎn)品充斥著許多領(lǐng)域,如日常生活的手機、MP4、PDA等都屬于典型的嵌入式系統(tǒng)。隨著技術(shù)和消費者需求的變化,即使是同一類型的嵌入式產(chǎn)品也會存在著硬件平臺的變化,或會存在著軟件平臺的更新?lián)Q代。

因此,為了更快的適應(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和SHx等,而且CPU級的移植通常由微軟或芯片制造商來完成,這會極大地減輕0EM廠商開發(fā)過程中移植操作系統(tǒng)的工作量,但板級層面的移植則還是需要由OEM廠商來完成的。

Windows CE

一般來說,一個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的過程。

什么是板級BSP移植?

一般來說,從零開始開發(fā)和定制WinCE BSP是需要相當(dāng)長的時間,BSP的定制開發(fā)在整個嵌入式產(chǎn)品開發(fā)時間上占了很大比例。所以,快速的BSP移植是適應(yīng)激烈競爭的市場環(huán)境的一個捷徑。BSP(Board Support Packet——板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,它主要的功能是給上層提供統(tǒng)一接口,同時屏蔽各種硬件底層的差異,以及提供操作系統(tǒng)的驅(qū)動及硬件驅(qū)動。簡單的說,就是BSP包含了所有與硬件有關(guān)的代碼,為操作系統(tǒng)提供了硬件平臺無關(guān)性。因此,通過BSP系統(tǒng),就能將CPU的硬件系統(tǒng)與Windows CE的軟件系統(tǒng)聯(lián)系為一個整體。

從WinCE開發(fā)文檔中我們可知,BSP是一個包括啟動程序Bootloader、OEM適配層程序(OAL)、標(biāo)準(zhǔn)開發(fā)板(SDB)和相關(guān)硬件設(shè)備的驅(qū)動程序和配置文件的軟件包。其中Bootloader是加電即運行的一段程序,它能初始化硬件,建立系統(tǒng)的內(nèi)存空間映射,為最終調(diào)用系統(tǒng)內(nèi)核做準(zhǔn)備。主要用于下載和啟動鏡像nk.bin。而OAL則是邏輯上駐留在Windows CE內(nèi)核與目標(biāo)設(shè)備之間的代碼層,OEM廠商使用這些代碼把WinCE適配到自己的硬件上;在物理上OAL是與內(nèi)核庫連接在一起產(chǎn)生內(nèi)核可執(zhí)行文件。OAL簡化了操作系統(tǒng)與目標(biāo)代碼之間的通信,OAL代碼用來處理中斷、記時器、電源管理、通用I/O控制等。最后,設(shè)備驅(qū)動程序是指本機驅(qū)動程序以及流接口驅(qū)動程序。本機驅(qū)動程序有GEWS.exe加載的鼠標(biāo)、鍵盤、觸摸屏、顯示驅(qū)動等;而流接口驅(qū)動程序使用一組流函數(shù)來實現(xiàn),通常由Device.exe加載,如網(wǎng)卡、聲卡、USB等。 #p#

WinCE BSP移植的流程和步驟

我們知道WinCE系統(tǒng)移植的重點是BSP的移植,而BSP移植主要包括啟動程序Bootloader、OEM適配層程序OAL、標(biāo)準(zhǔn)開發(fā)板(SDB)本地驅(qū)動程序以及一些文件配置的修改。以下是WinCE BSP移植的主要內(nèi)容和流程步驟:

(1)啟動程序Bootloader的移植步驟

修改Bootloader是移植Win CE系統(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例程。

根據(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的全稱是OEM Adaption Layer,即原始設(shè)備制造商適配層。它是位于Windows CE內(nèi)核和目標(biāo)硬件平臺之間的一個代碼層,OAL主要負(fù)責(zé)Windows CE與硬件通信,它與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)的一部分。

從我在這次項目中得到的經(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ū)動。一般來說,需要修改的文件有Platform. 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>

文章轉(zhuǎn)自潘少紅的個人空間

原文地址:http://space.itpub.net/12325938/viewspace-607336

【編輯推薦】

  1. WinCE啟動失敗的原因與解決辦法分析
  2. 基于嵌入式WinCE的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)
  3. Windows Mobile和WinCE的區(qū)別
  4. 在WinCE開始菜單中添加應(yīng)用程序
  5. 錦上添花 Silverlight點亮WinCE R3
責(zé)任編輯:王曉東 來源: it168
相關(guān)推薦

2021-08-18 15:11:02

數(shù)字化轉(zhuǎn)型IT技術(shù)

2018-04-04 15:10:19

云原生VNFNFV

2013-06-28 11:12:01

定性研究

2021-04-28 08:49:36

UPS電源機房

2021-12-28 00:29:00

網(wǎng)絡(luò)安全Java編程語言

2023-06-15 14:53:59

大數(shù)據(jù)

2023-07-14 11:38:36

物聯(lián)網(wǎng)航空業(yè)

2010-07-30 16:28:06

2023-10-24 11:07:57

2022-08-24 14:21:52

OTA物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)

2023-03-30 10:09:57

數(shù)字化轉(zhuǎn)型互聯(lián)網(wǎng)

2009-12-25 10:17:27

2011-06-30 16:22:00

首選域

2022-09-15 11:16:23

人工智能的AI

2022-12-05 14:49:08

2020-09-14 09:39:22

信號

2020-08-27 07:00:00

代碼軟件應(yīng)用程序

2013-08-08 10:10:06

備份策略全備份增量備份

2017-12-29 10:14:48

IT項目

2022-04-02 16:44:00

物聯(lián)網(wǎng)樓宇自控智能建筑
點贊
收藏

51CTO技術(shù)棧公眾號