国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
RAM介紹 __
1.1 ARM-Advanced RISC Machines
  ARM(Advanced RISC Machines),既可以認(rèn)為是一個公司的名字,也可以認(rèn)為是對一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。
  1991年ARM公司成立于英國劍橋,主要出售芯片設(shè)計技術(shù)的授權(quán)。目前,采用ARM技術(shù)知識產(chǎn)權(quán)(IP)核的微處理器,即我們通常所說的ARM微處理器,已遍及工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術(shù)正在逐步滲入到我們生活的各個方面。
  ARM公司是專門從事基于RISC技術(shù)芯片設(shè)計開發(fā)的公司,作為知識產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM公司購買其設(shè)計的ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的ARM微處理器芯片進(jìn)入市場。目前,全世界有幾十家大的半導(dǎo)體公司都使用ARM公司的授權(quán),因此既使得ARM技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使整個系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場被消費者所接受,更具有競爭力。

1.2 ARM微處理器的應(yīng)用領(lǐng)域及特點
  1.2.1 ARM微處理器的應(yīng)用領(lǐng)域
  到目前為止,ARM微處理器及技術(shù)的應(yīng)用幾乎已經(jīng)深入到各個領(lǐng)域:
   1、工業(yè)控制領(lǐng)域:作為32的RISC架構(gòu),基于ARM核的微控制器芯片不但占據(jù)了高端微控制器市場的大部分市場份額,同時也逐漸向低端微控制器應(yīng)用領(lǐng)域擴展,ARM微控制器的低功耗、高性價比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn)。
  2、無線通訊領(lǐng)域:目前已有超過85%的無線通訊設(shè)備采用了ARM技術(shù), ARM以其高性能和低成本,在該領(lǐng)域的地位日益鞏固。
  3、網(wǎng)絡(luò)應(yīng)用:隨著寬帶技術(shù)的推廣,采用ARM技術(shù)的ADSL芯片正逐步獲得競爭優(yōu)勢。此外,ARM在語音及視頻處理上行了優(yōu)化,并獲得廣泛支持,也對DSP的應(yīng)用領(lǐng)域提出了挑戰(zhàn)。
  4、消費類電子產(chǎn)品:ARM技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機頂盒和游戲機中得到廣泛采用。
  5、成像和安全產(chǎn)品:現(xiàn)在流行的數(shù)碼相機和打印機中絕大部分采用ARM技術(shù)。手機中的32位SIM智能卡也采用了ARM技術(shù)。
  除此以外,ARM微處理器及技術(shù)還應(yīng)用到許多不同的領(lǐng)域,并會在將來取得更加廣泛的應(yīng)用。
  1.2.2 ARM微處理器的特點
  采用RISC架構(gòu)的ARM微處理器一般具有如下特點:
  1、體積小、低功耗、低成本、高性能;
  2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;
  3、大量使用寄存器,指令執(zhí)行速度更快;
  4、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
  5、尋址方式靈活簡單,執(zhí)行效率高;
  6、指令長度固定;

1.3 ARM微處理器系列
  ARM微處理器目前包括下面幾個系列,以及其它廠商基于ARM體系結(jié)構(gòu)的處理器,除了具有ARM體系結(jié)構(gòu)的共同特點以外,每一個系列的ARM微處理器都有各自的特點和應(yīng)用領(lǐng)域。
 ?。?ARM7系列
  - ARM9系列
 ?。?ARM9E系列
 ?。?ARM10E系列
 ?。?SecurCore系列
 ?。?Inter的Xscale
 ?。?Inter的StrongARM
  其中,ARM7、ARM9、ARM9E和ARM10為4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應(yīng)用領(lǐng)域的需求。SecurCore系列專門為安全要求較高的應(yīng)用而設(shè)計。
  以下我們來詳細(xì)了解一下各種處理器的特點及應(yīng)用領(lǐng)域。
  1.3.1 ARM7微處理器系列
  ARM7系列微處理器為低功耗的32位RISC處理器,最適合用于對價位和功耗要求較高的消費類應(yīng)用。ARM7微處理器系列具有如下特點:
 ?。哂星度胧絀CE-RT邏輯,調(diào)試開發(fā)方便。
 ?。瓨O低的功耗,適合對功耗要求較高的應(yīng)用,如便攜式產(chǎn)品。
 ?。?能夠提供0.9MIPS/MHz的三級流水線結(jié)構(gòu)。
   - 代碼密度高并兼容16位的Thumb指令集。
   - 對操作系統(tǒng)的支持廣泛,包括Windows CE、Linux、Palm OS等。
 ?。噶钕到y(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級換代。
   -主頻最高可達(dá)130MIPS,高速的運算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。
  ARM7系列微處理器的主要應(yīng)用領(lǐng)域為:工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動電話等多種多媒體和嵌入式應(yīng)用。
  ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、
  ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為:
  T: 支持16為壓縮指令集Thumb;
  D: 支持片上Debug;
  M:內(nèi)嵌硬件乘法器(Multiplier)
  I: 嵌入式ICE,支持片上斷點和調(diào)試點;
  
  1.3.2 ARM9微處理器系列
  ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點:
 ?。?5級整數(shù)流水線,指令執(zhí)行效率更高。
 ?。?提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。
 ?。?支持32位ARM指令集和16位Thumb指令集。
 ?。?支持32位的高速AMBA總線接口。
 ?。?全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
  - MPU支持實時操作系統(tǒng)。
 ?。С?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。
  ARM9系列微處理器主要應(yīng)用于無線設(shè)備、儀器儀表、安全系統(tǒng)、機頂盒、高端打印機、數(shù)字照相機和數(shù)字?jǐn)z像機等。
  ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場合。
  1.3.3 ARM9E微處理器系列
  ARM9E系列微處理器為可綜合處理器,使用單一的處理器內(nèi)核提供了微控制器、DSP、Java應(yīng)用系統(tǒng)的解決方案,極大的減少了芯片的面積和系統(tǒng)的復(fù)雜程度。ARM9E系列微處理器提供了增強的DSP處理能力,很適合于那些需要同時使用DSP和微控制器的應(yīng)用場合。
  ARM9E系列微處理器的主要特點如下:
 ?。С諨SP指令集,適合于需要高速數(shù)字信號處理的場合。
 ?。?5級整數(shù)流水線,指令執(zhí)行效率更高。
 ?。?支持32位ARM指令集和16位Thumb指令集。
  - 支持32位的高速AMBA總線接口。
 ?。?支持VFP9浮點處理協(xié)處理器。
 ?。?全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
 ?。?MPU支持實時操作系統(tǒng)。
 ?。С?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。
 ?。?主頻最高可達(dá)300MIPS。
  ARM9系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費品、成像設(shè)備、工業(yè)控制、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。
  ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應(yīng)用場合。
  1.3.4 ARM10E微處理器系列
  ARM10E系列微處理器具有高性能、低功耗的特點,由于采用了新的體系結(jié)構(gòu),與同等的ARM9器件相比較,在同樣的時鐘頻率下,性能提高了近50%,同時,ARM10E系列微處理器采用了兩種先進(jìn)的節(jié)能方式,使其功耗極低。
  ARM10E系列微處理器的主要特點如下:
  -支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。
 ?。?6級整數(shù)流水線,指令執(zhí)行效率更高。
 ?。?支持32位ARM指令集和16位Thumb指令集。
 ?。?支持32位的高速AMBA總線接口。
  - 支持VFP10浮點處理協(xié)處理器。
  - 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
 ?。С?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力
 ?。?主頻最高可達(dá)400MIPS。
 ?。?內(nèi)嵌并行讀/寫操作部件。
  ARM10E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。
  ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應(yīng)用場合。
  1.3.5 SecurCore微處理器系列
  SecurCore系列微處理器專為安全需要而設(shè)計,提供了完善的32位RISC技術(shù)的安全解決方案,因此,SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)的低功耗、高性能的特點外,還具有其獨特的優(yōu)勢,即提供了對安全解決方案的支持。
  SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)各種主要特點外,還在系統(tǒng)安全方面具有如下的特點:
 ?。瓗в徐`活的保護(hù)單元,以確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。
 ?。捎密泝?nèi)核技術(shù),防止外部對其進(jìn)行掃描探測。
 ?。杉捎脩糇约旱陌踩匦院推渌麉f(xié)處理器。
  SecurCore系列微處理器主要應(yīng)用于一些對安全性要求較高的應(yīng)用產(chǎn)品及應(yīng)用系統(tǒng),如電子商務(wù)、電子政務(wù)、電子銀行業(yè)務(wù)、網(wǎng)絡(luò)和認(rèn)證系統(tǒng)等領(lǐng)域。
  SecurCore系列微處理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四種類型,以適用于不同的應(yīng)用場合。
  1.3.6 StrongARM微處理器系列
  Inter StrongARM SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Inter公司的設(shè)計和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu)、同時采用具有Intel技術(shù)優(yōu)點的體系結(jié)構(gòu)。
  Intel StrongARM處理器是便攜式通訊產(chǎn)品和消費類電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品。
  1.3.7 Xscale處理器
  Xscale 處理器是基于ARMv5TE體系結(jié)構(gòu)的解決方案,是一款全性能、高性價比、低功耗的處理器。它支持16位的Thumb指令和DSP指令集,已使用在數(shù)字移動電話、個人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等場合。
  Xscale 處理器是Inter目前主要推廣的一款A(yù)RM微處理器。

1.4 ARM微處理器結(jié)構(gòu)
  1.4.1 RISC體系結(jié)構(gòu)
  傳統(tǒng)的CISC(Complex Instruction Set Computer,復(fù)雜指令集計算機)結(jié)構(gòu)有其固有的缺點,即隨著計算機技術(shù)的發(fā)展而不斷引入新的復(fù)雜的指令集,為支持這些新增的指令,計算機的體系結(jié)構(gòu)會越來越復(fù)雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20%的指令會被反復(fù)使用,占整個程序代碼的80%。而余下的80%的指令卻不經(jīng)常使用,在程序設(shè)計中只占20%,顯然,這種結(jié)構(gòu)是不太合理的。
  基于以上的不合理性,1979年美國加州大學(xué)伯克利分校提出了RISC(Reduced Instruction Set Computer,精簡指令集計算機)的概念,RISC并非只是簡單地去減少指令,而是把著眼點放在了如何使計算機的結(jié)構(gòu)更加簡單合理地提高運算速度上。RISC結(jié)構(gòu)優(yōu)先選取使用頻最高的簡單指令,避免復(fù)雜指令;將指令長度固定,指令格式和尋地方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來達(dá)到上述目的。
  到目前為止,RISC體系結(jié)構(gòu)也還沒有嚴(yán)格的定義,一般認(rèn)為,RISC體系結(jié)構(gòu)應(yīng)具有如下特點:
 ?。捎霉潭ㄩL度的指令格式,指令歸整、簡單、基本尋址方式有2~3種。
 ?。褂脝沃芷谥噶?,便于流水線操作執(zhí)行。
 ?。罅渴褂眉拇嫫?,數(shù)據(jù)處理指令只對寄存器進(jìn)行操作,只有加載/ 存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率。
  除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積,并降低功耗:
  -所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。
  -可用加載/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率。
 ?。稍谝粭l數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。
 ?。谘h(huán)處理中使用地址的自動增減來提高運行效率。
  當(dāng)然,和CISC架構(gòu)相比較,盡管RISC架構(gòu)有上述的優(yōu)點,但決不能認(rèn)為RISC架構(gòu)就可以取代CISC架構(gòu),事實上,RISC和CISC各有優(yōu)勢,而且界限并不那么明顯?,F(xiàn)代的CPU往往采用CISC的外圍,內(nèi)部加入了RISC的特性,如超長指令集CPU就是融合了RISC和CISC的優(yōu)勢,成為未來的CPU發(fā)展方向之一。
  1.4.2 ARM微處理器的寄存器結(jié)構(gòu)
  ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括:
  - 31個通用寄存器,包括程序計數(shù)器(PC指針),均為32位的寄存器。
  - 6個狀態(tài)寄存器,用以標(biāo)識CPU的工作狀態(tài)及程序的運行狀態(tài),均為32位,目前只使用了其中的一部分。
  同時,ARM處理器又有7種不同的處理器模式,在每一種處理器模式下均有一組相應(yīng)的寄存器與之對應(yīng)。即在任意一種處理器模式下,可訪問的寄存器包括15個通用寄存器(R0~R14)、一至二個狀態(tài)寄存器和程序計數(shù)器。在所有的寄存器中,有些是在7種處理器模式下共用的同一個物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。
  關(guān)于ARM處理器的寄存器結(jié)構(gòu),在后面的相關(guān)章節(jié)將會詳細(xì)描述。
  1.4.3 ARM微處理器的指令結(jié)構(gòu)
  ARM微處理器的在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。其中,ARM指令為32位的長度,Thumb指令為16位長度。Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省30%~40%以上的存儲空間,同時具備32位代碼的所有優(yōu)點。
  關(guān)于ARM處理器的指令結(jié)構(gòu),在后面的相關(guān)章節(jié)將會詳細(xì)描述。
  1.5 ARM微處理器的應(yīng)用選型
  鑒于ARM微處理器的眾多優(yōu)點,隨著國內(nèi)外嵌入式應(yīng)用領(lǐng)域的逐步發(fā)展,ARM微處理器必然會獲得廣泛的重視和應(yīng)用。但是,由于ARM微處理器有多達(dá)十幾種的內(nèi)核結(jié)構(gòu),幾十個芯片生產(chǎn)廠家,以及千變?nèi)f化的內(nèi)部功能配置組合,給開發(fā)人員在選擇方案時帶來一定的困難,所以,對ARM芯片做一些對比研究是十分必要的。
  以下從應(yīng)用的角度出發(fā),對在選擇ARM微處理器時所應(yīng)考慮的主要問題做一些簡要的探討。
  ARM微處理器內(nèi)核的選擇
  從前面所介紹的內(nèi)容可知,ARM微處理器包含一系列的內(nèi)核結(jié)構(gòu),以適應(yīng)不同的應(yīng)用領(lǐng)域,用戶如果希望使用WinCE或標(biāo)準(zhǔn)Linux等操作系統(tǒng)以減少軟件開發(fā)時間,就需要選擇ARM720T以上帶有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。而ARM7TDMI則沒有MMU,不支持Windows CE和標(biāo)準(zhǔn)Linux,但目前有uCLinux等不需要MMU支持的操作系統(tǒng)可運行于ARM7TDMI硬件平臺之上。事實上,uCLinux已經(jīng)成功移植到多種不帶MMU的微處理器平臺上,并在穩(wěn)定性和其他方面都有上佳表現(xiàn)。
  本書所討論的S3C4510B即為一款不帶MMU的ARM微處理器,可在其上運行uCLinux操作系統(tǒng)。
  系統(tǒng)的工作頻率
  系統(tǒng)的工作頻率在很大程度上決定了ARM微處理器的處理能力。ARM7系列微處理器的典型處理速度為0.9MIPS/MHz,常見的ARM7芯片系統(tǒng)主時鐘為20MHz-133MHz,ARM9系列微處理器的典型處理速度為1.1MIPS/MHz,常見的ARM9的系統(tǒng)主時鐘頻率為100MHz-233MHz,ARM10最高可以達(dá)到700MHz。不同芯片對時鐘的處理不同,有的芯片只需要一個主時鐘頻率,有的芯片內(nèi)部時鐘控制器可以分別為ARM核和USB、UART、DSP、音頻等功能部件提供不同頻率的時鐘。
  芯片內(nèi)存儲器的容量
  大多數(shù)的ARM微處理器片內(nèi)存儲器的容量都不太大,需要用戶在設(shè)計系統(tǒng)時外擴存儲器,但也有部分芯片具有相對較大的片內(nèi)存儲空間,如ATMEL的AT91F40162就具有高達(dá)2MB的片內(nèi)程序存儲空間,用戶在設(shè)計時可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計。
  片內(nèi)外圍電路的選擇
  除ARM微處理器核以外,幾乎所有的ARM芯片均根據(jù)各自不同的應(yīng)用領(lǐng)域,擴展了相關(guān)功能模塊,并集成在芯片之中,我們稱之為片內(nèi)外圍電路,如USB接口、IIS接口、LCD控制器、鍵盤接口、RTC、ADC和DAC、DSP協(xié)處理器等,設(shè)計者應(yīng)分析系統(tǒng)的需求,盡可能采用片內(nèi)外圍電路完成所需的功能,這樣既可簡化系統(tǒng)的設(shè)計,同時提高系統(tǒng)的可靠性。
===================
WinCE與嵌入式系統(tǒng)開發(fā) (2008-07-04 18:41:14)

MicrosoftWindows CE是緊湊的、高效的和可升級的操作系統(tǒng),它被廣泛的應(yīng)用在各種嵌入式式的產(chǎn)品中,從手持電腦到專門的工業(yè)控制器和消費用電子產(chǎn)品中。Windows CE已經(jīng)通過了其自身的能力證明:它能夠滿足32位嵌入式式程序開發(fā)的需求。同樣重要的是: Windows CE使嵌入式式系統(tǒng)的設(shè)計者得以充分利用Microsoft的32位基于Windows的開發(fā)工具的全部的函數(shù)。
嵌入式的應(yīng)用軟件選擇Windows CE的首要原因之一是Microsoft Win32應(yīng)用編程接口(API)的廣泛應(yīng)用。從運行在Microsoft WindowsNT操作系統(tǒng)下的高端服務(wù)器到最小的臺式機和內(nèi)嵌式的應(yīng)用中,WIN32 API幾乎是所有為面向Windows開發(fā)32位應(yīng)用軟件的內(nèi)核。
本文的目的是向那些開發(fā)基于Windows CE的新的嵌入式式系統(tǒng)的開發(fā)者介紹WIN32 事件驅(qū)動編寫程序。 本文將:
概述32位Windows操作系統(tǒng)和WIN32編程模型。
介紹線程,事件和消息是如何操作的。
給出Win32如何管理Windows CE的內(nèi)存。
解釋 Win32意外操作的概念。
比較同步和不同步設(shè)備的界面的不同的方法。
總結(jié)明確定義的API的優(yōu)位。
本文并不是刻意要完全做Win32的編程指南,而是要介紹用Win32作為嵌入式式應(yīng)用程序的開發(fā)工具。
簡介
對于全世界的成千上萬的程序開發(fā)者來說,Win32程序模式很常見。WIN32是臺式機或企業(yè)廣泛應(yīng)用的強大目標(biāo),而且隨著Windows CE的涌現(xiàn),它也成了嵌入式式系統(tǒng)的理想的程序界面形式。WIN32為Windows CE操作系統(tǒng)提供了一致的,文檔完備的并且函數(shù)強大的程序界面。
用WIN32在Windows CE平臺開發(fā)的程序同其他的WIN32程序差不多;這意味著程序開發(fā)者在開發(fā)新的面向Windows CE操作系統(tǒng)的應(yīng)用程序的時候,能夠應(yīng)用這些大量的WIN32的程序資源、第三代工具和外部的專門的技術(shù)。具有WIN32編程經(jīng)驗的程序員會發(fā)現(xiàn)創(chuàng)建新的(維護(hù)已有的)面向Windows CE設(shè)備(如手持電腦)的應(yīng)用程序遠(yuǎn)比創(chuàng)建類似的面向特殊的平臺或其他應(yīng)用不廣的嵌入式式的操作系統(tǒng)的應(yīng)用程序簡單。
嵌入式式系統(tǒng)的設(shè)計者們很快意識到Windows CE的強大,并且以驚人的快速使這個操作系統(tǒng)與它們的新產(chǎn)品一體化。可是,許多嵌入式式軟件的開發(fā)者對Windows的事件驅(qū)動程序的一般技術(shù)不熟悉。對于這些軟件開發(fā)者來說,在他們開始他們第一次的基于Windows CE的項目之前,了解一些WIN32的基礎(chǔ)的知識是有好處的。
什么是WIN32?
“WIN32”表示對于所有的Microsoft 32位平臺的一種普通的應(yīng)用編程接口(API)。這些平臺通常指:
Windows 95, Windows 98
Windows NT
Windows CE
本文我們主要關(guān)注Windows CE操作系統(tǒng),可是需要弄清楚的是大多數(shù) Win32的應(yīng)用編程接口對上面所有三種平臺都適用。這種同用的應(yīng)用編程接口的優(yōu)位有很多:容易登錄到應(yīng)用程序中,有大量的已有程序的知識,范例和第三代軟件的資源。
平臺的差別
WIN32的應(yīng)用編程接口定義了你作為一個程序員有用的Windows平臺。WIN32應(yīng)用編程接口的目的是提供了一個常用的界面的設(shè)置,可是虛擬,不同的平臺由于不同的特性及硬件的約束,其應(yīng)用編程接口也不同。WIN32平臺家族的一些成員支持全部的WIN32的應(yīng)用編程接口(下簡稱API),而其他的只支持一部分的API。為緊湊的、嵌入式式的應(yīng)用軟件和小型設(shè)備而設(shè)計的Windows CE,WIN32的API最受限制。盡管如此, Windows CE 的API也是足夠完善的,能夠處理實際的大量的高級的嵌入式式應(yīng)用程序。
WIN32與Microsoft基本類庫(MFC)
用WIN32界面設(shè)計并不是創(chuàng)建32位基于 Windows的應(yīng)用程序的唯一的途徑。另一種重要的途徑是可在WIN32與 Microsoft Visual C++開發(fā)環(huán)境使用的Microsoft基本類庫(MFC)。MFC為許多(不是所有)的WIN32的API進(jìn)行了高度的封裝(圖1)。通常,MFC提供了代表重要的WINDOWS的用戶界面對象的類,象窗口,對話框,畫刷,畫筆,和字體。MFC也為沒有任何用戶界面要求的嵌入式式應(yīng)用軟件提供了相應(yīng)的類。MFC類的成員函數(shù)調(diào)用WIN32API的函數(shù),可以使復(fù)雜的應(yīng)用程序的設(shè)計巧妙的簡化。
作為WIN32的程序員,你可以自由的選取使用C或C++和WIN32 API, 或者用C++與MFC。VISUAL C++開發(fā)系統(tǒng)對于所有的,包括 Windows CE 的WIN32的目標(biāo)操作系統(tǒng)都支持以上的兩種開發(fā)系統(tǒng)。
本文直接介紹WIN32 API。應(yīng)用 Windows CE下的MFC的詳細(xì)的消息,參閱 Windows CE SDK文檔。
WIN32程序模型
WIN32是超越所有32位WINDOWS平臺的常用和一致的(盡管并不全部相同)API。為了對WIN32 API有一個透徹的了解,以便高效的使用它的函數(shù),了解一些底層操作系統(tǒng)的基礎(chǔ)十分重要。本節(jié)總結(jié)了32位操作系統(tǒng)和 Win32 API的最重要的概念,為你更深入的學(xué)習(xí)提供基礎(chǔ)。要得到更多更詳細(xì)的關(guān)于32位WINDOWS的體系結(jié)構(gòu)、 Win32 API、以及其他的程序設(shè)計的主題,你可以讀一本關(guān)于那個主題出版的書。Microsoft出版社能提供一些這樣的書籍;在本文的最后,列著部分這些書的條目。
Windows CE的內(nèi)核和 Win32 API
那些對WINDOWS CE的人可能會有一個錯覺,認(rèn)為它僅僅是現(xiàn)有的操作系統(tǒng)(如WINDOWS95)降級版。但事實上Windows CE是以小型的、高度用戶化的面向嵌入式式應(yīng)用程序的操作系統(tǒng)開發(fā)起來的。在WINDOWS CE排除(或代替)了一些基于WINDOWS CE的應(yīng)用軟件所不需要的操作系統(tǒng)特性的同時,它的內(nèi)核也具有大量的其他Microsoft 32位的操作系統(tǒng)的最精華的東西。例如在Windows NT下, 所有的在Windows CE下運行所應(yīng)用軟件都運行在有優(yōu)先權(quán)的多任務(wù)處理環(huán)境下,在被全保護(hù)的內(nèi)存空間里。還有,象 Windows NT一樣,Windows CE支持本地統(tǒng)一的字符編碼標(biāo)準(zhǔn)碼字符串,使它更適于國際推廣??墒?,不象其他的32位WINDOWS平臺,, Windows CE是十分緊湊和用戶化的,僅僅占用小于200K的內(nèi)存。
Windows CE的WIN32 API比其他的32位的Windows操作系統(tǒng)的WIN32 API要小;它只包括大約相當(dāng)于Windows NT的半數(shù)的API。但是 Windows CE的WIN32 API也有其他系統(tǒng)所沒有的特性。例如:通知API,它能夠操作系統(tǒng)的層次,而不是在運行的應(yīng)用程序的層次上處理通知事件(如時鐘)。觸屏的API和對Windows CE的數(shù)據(jù)庫的內(nèi)置的支持是其他的操作系統(tǒng)所沒有的。觸屏的API使用于觸覺敏感顯示器的屏幕校正和用戶交互的管理容易實現(xiàn),而數(shù)據(jù)庫的API提供了快速簡捷的訪問緊湊的、一般用途的數(shù)據(jù)庫的工具。另一個關(guān)于Windows CE的鮮為人知的方面是它的高度的模塊化;嵌入式式系統(tǒng)開發(fā)者(用Microsoft Windows CE內(nèi)含的面向Visual C++的軟件包)能夠創(chuàng)建一個對于它們的獨特的硬件平臺和應(yīng)用軟件用戶化了的Windows CE的版本。
Windows CE操作系統(tǒng)為設(shè)計提供了全新的設(shè)計環(huán)境。Windows CE的開發(fā)者幾乎不需要支持原有的應(yīng)用程序或設(shè)備,所以操作系統(tǒng)在設(shè)計時可以考慮到應(yīng)用一些最新的思想和應(yīng)用程序,并且應(yīng)用最先進(jìn)的嵌入式式的32位微處理器產(chǎn)品作為它的硬件目標(biāo)平臺。
這對于一個使用Windows CE平臺的WIN32 API的用戶來說意味著什么呢?這意味著對于現(xiàn)代的、32位的嵌入式式系統(tǒng),它是一種更簡單的API,更加優(yōu)化的目標(biāo)操作系統(tǒng)。下面,我們將研究一些重要的WIN32 API和Windows CE操作系統(tǒng)的內(nèi)部的內(nèi)容。
程序和線索
了解WIN32 API和Windows CE操作系統(tǒng)的底層內(nèi)容的第一步就是了解多任務(wù)和多線索索應(yīng)用程序是如何組織的。WIN32術(shù)語中,程序被定義成一個正在運行中的程序?qū)嵗O笃渌?2位Windows 平臺一樣,Windows CE是一個多任務(wù)的操作系統(tǒng),在一個運行中的程序里,它支持執(zhí)行多個線索所。
對于嵌入式式的應(yīng)用程序,Windows CE的多線索索執(zhí)行能力是它函數(shù)的重要的體現(xiàn)。這樣就使WIN32嵌入式式程序開發(fā)者優(yōu)先考慮WIN32的線索索的創(chuàng)立與同步。
WIN32的線索索的處理同其他常用的嵌入式式的操作系統(tǒng)是有區(qū)別的。不象Unix或其派生的系統(tǒng),32位Windows平臺從一開始設(shè)計就支持多線索索應(yīng)用程序。線索索管理(時序安排,同步和資源管理)由內(nèi)核來完成,程序開發(fā)者利用函數(shù)裝入內(nèi)核(通過WIN32 API訪問)來建立和管理他們應(yīng)用程序中的線索索。
例如,如果一個嵌入式式應(yīng)用程序必須監(jiān)視多個輸入設(shè)備并且在監(jiān)視到一個或多個設(shè)備上不同步發(fā)生的事件的時候要作出恰當(dāng)?shù)姆从?。更進(jìn)一步,如果這樣一個程序也需要更新一些共享的資源(如全局?jǐn)?shù)據(jù)結(jié)構(gòu),磁盤上的文件,或其他設(shè)備)來作為與相關(guān)設(shè)備事件的反映。象這樣的一個程序需要一個可靠的線索索管理系統(tǒng)。這恰恰是WIN32 API能夠提供的函數(shù):多個線索索能夠快捷并且容易的用WIN32 API線索索創(chuàng)建界面建立;同步線索索(多個線索索同時訪問一個數(shù)據(jù))可以通過不同的方式完成,包括關(guān)鍵的段,有名稱和沒有名稱事件,以及互斥的目標(biāo)。
Windows CE 被設(shè)計成在執(zhí)行這些同步時占用最少的程序資源。這位對那些函數(shù)不強大的開發(fā)者來說十分重要;因為內(nèi)核來負(fù)責(zé)線索索的管理,不需要使用另外的處理器來循環(huán)檢測程序或線索索完成,以及執(zhí)行其他的無用的應(yīng)用程序?qū)哟紊系木€索索管理。內(nèi)核已構(gòu)建好如何管理若干的線索索并且使程序高效地進(jìn)行的程序。
對于包括若干個程序的應(yīng)用程序,WIN32 向用于線索索、程序管理和同步提供了一套的完備的處理方法。這些線索索管理特性非常適于嵌入式式應(yīng)用程序軟件,并且對Windows CE開發(fā)者是容易得到的。
消息
在32位windows平臺上運行的程序更專門化,程序的線索依賴于消息來初始化程序,控制系統(tǒng)資源并且與操作系統(tǒng)和用戶通信。 windows消息有各種各樣來源,包括操作系統(tǒng),用戶活動諸如鍵盤輸入、鼠標(biāo)、觸到屏幕,以及其它運行的程序或者線索。
當(dāng)消息被送到線索時,這條消息被放置在消息隊列中等待最后處理(圖3)。每一條線索擁有完全不獨立于其它線索所擁有的消息隊列的消息隊列。線索一般有不斷運行的消息循環(huán),恢復(fù)和處理消息。當(dāng)隊列地沒有消息,并且線索不從事于其它任何活動,系統(tǒng)掛起線索,以節(jié)省中央控制器資源。
消息也能用于控制目的,初始化你的應(yīng)用程序中各種類型的程序,并且他們能利用消息參數(shù)傳遞數(shù)據(jù)。例如,線索可能收到觸屏被激活的消息,消息參數(shù)可以表明X和Y為用戶行動的坐標(biāo)。在另一種類型的消息中,參數(shù)可以包括指針或者指向數(shù)據(jù)結(jié)構(gòu)、窗口或其他對象的句柄。
中斷處理
作為一嵌入式的的軟件開發(fā)者,你可能最關(guān)心windows CE消息的處理規(guī)則是如何影響你的外部系統(tǒng)接口的時序的。windows CE通過細(xì)心設(shè)計和準(zhǔn)確的衡量以保證其中斷時序以及其它相關(guān)的特位與嵌入式式的系統(tǒng)設(shè)計是適用的。
嵌入式應(yīng)用程序經(jīng)常有時間臨界的設(shè)備接口需要,需要發(fā)現(xiàn)并且在一最小的規(guī)定的時間之內(nèi)對設(shè)備和系統(tǒng)事件作出反應(yīng)。為了支持這樣應(yīng)用程序, windows CE包括高度優(yōu)化中斷傳送,優(yōu)先級和服務(wù)系統(tǒng)。
在windows CE內(nèi)核中,中斷處理分成兩個明顯的部分:中斷服務(wù)程序(ISR )以及中斷服務(wù)線索(IST )。這個系統(tǒng)的目的是使ISR 盡可能小和快。在硬件的層次上,每一中斷要求(IRQ )線索路與一特定的軟件ISR聯(lián)系。當(dāng)被觸發(fā)時,給定的ISR除了通知內(nèi)核IST的位置外,還做少量的工作。一旦IST 被初始化(盡管沒必要完成),系統(tǒng)便準(zhǔn)備好接受下一中斷并且處理下一中斷。
每一個中斷有一個優(yōu)先級與他們相聯(lián)系。 windows CE為確定的線索時時序,利用基于優(yōu)先級的時間片段算法。與每一ISR 被聯(lián)系的IST 是正常的線索,因此為IST設(shè)置優(yōu)先級以滿足應(yīng)用程序的時序需要是應(yīng)用程序軟件開發(fā)者的責(zé)任。
這種將ISR 和IST在中斷程序中分開處理最終結(jié)果是,典型的中斷等待時間被大大地減少了,在中斷程序中發(fā)生不可接受的延遲的可能性也大大減少。此外,嵌入式式軟件包 和windows CE內(nèi)核的特性使有可能按習(xí)慣定制中斷時序和優(yōu)先級,以滿足特定應(yīng)用程序的需要。
Windows CE和其使用的時間臨界、實時應(yīng)用程序在另一篇文章中包括比本文更詳細(xì)的內(nèi)容,文章名為《 Real-time Systems with Microsoft Windows CE》。
內(nèi)存管理
WIN32 API為向開發(fā)者提供了一套完備的和一致的接口。當(dāng)開發(fā)絕大部分應(yīng)用程序的時候,軟件開發(fā)者不需要考慮特定內(nèi)存結(jié)構(gòu)。然而對于許多嵌入式應(yīng)用程序,特別是那些有嚴(yán)格的內(nèi)存資源約束或者臨界時序的要求的,對內(nèi)存被管理的方法有好的理解是重要的。
Windows的內(nèi)存的一般結(jié)構(gòu)對于不同的32 位Windows平臺是不同的,并且特殊的細(xì)節(jié)結(jié)構(gòu)在同一32 位Windows操作系統(tǒng)下不同的處理機之間也不同。 (例如,Windows NT的內(nèi)存結(jié)構(gòu)在X86 平臺上與在DEC Alpha 平臺上的用法十分不同 。) 對于這段的討論,我們將專門集中在Windows CE操作系統(tǒng)的部分中進(jìn)行。
Windows CE的存儲結(jié)構(gòu)
像其它的32 位Windows平臺一樣,Windows CE操作系統(tǒng)也有虛擬內(nèi)存的特性。內(nèi)存總在某一時間被分配給應(yīng)用程序一頁,頁的大小由系統(tǒng)設(shè)計者決定(并在操作系統(tǒng)為目標(biāo)硬件平臺創(chuàng)建時被指定)。例如在手持電腦,內(nèi)存頁大小是典型的1KB 或者4KB 。
在初始化期間(導(dǎo)入),Windows CE創(chuàng)造一個獨立的被所有程序共享的4GB 虛擬地址空間。當(dāng)程序引用一個虛擬的地址時,它被內(nèi)核記錄在物理的內(nèi)存上。這使得應(yīng)用程序軟件開發(fā)者不必去考慮目標(biāo)系統(tǒng)內(nèi)存的物理的布局。雖然所有程序共享單一地址空間,應(yīng)用程序仍然可避免相互誤用。Windows CE 通過改變每頁的保護(hù)來保護(hù)程序內(nèi)存,而不是分配給每一程序不同地址空間。作為應(yīng)用程序開發(fā)者,你可能不會太在乎目標(biāo)系統(tǒng)的內(nèi)存的物理的結(jié)構(gòu)。內(nèi)存可以全部是隨機存取內(nèi)存,或者它可能包括閃存卡或者硬盤驅(qū)動器。Windows CE操作系統(tǒng)為你管理內(nèi)存資源,同時WIN32 API 向你提供必要的分配、使用和釋放的內(nèi)存的接口。
然而,作為一個嵌入式的系統(tǒng)的設(shè)計者,你將需要細(xì)心考慮將在你新的硬件平臺上執(zhí)行的應(yīng)用程序的內(nèi)存需要,并且全面考慮成本、速度和可靠性,平衡各種目標(biāo)的沖突。如果你為使用Windows CE開發(fā)一個新的硬件平臺,Windows CE的面向Visual C++ 的嵌入式軟件包包括資源可以幫助你做出這些決策,并且從而構(gòu)成操作系統(tǒng)。
無論你的系統(tǒng)內(nèi)存的配置如何,ROM(只讀內(nèi)存)將占用十分重要的地位。不同于其它的32位Windows操作系統(tǒng),Windows CE操作系統(tǒng)的代碼在只讀內(nèi)存中,并且在那個只讀內(nèi)存中原地執(zhí)行。依據(jù)你的產(chǎn)品需要,你也能選擇在只讀內(nèi)存中放置應(yīng)用程序代碼。例如,Pocket Word,Pocket Excel和其它應(yīng)用程序程序,包括在手持電腦只讀內(nèi)存中被提供的。
存儲在ROM中的程序組在Windows CE下當(dāng)?shù)貓?zhí)行,所以嵌入式系統(tǒng)的設(shè)計者能夠只占用很少的RAM用于堆棧存儲的需要。相應(yīng)地,你的嵌入式應(yīng)用程序可以利用RAM既作為程序的內(nèi)存又可作臨時存儲空間。
為了進(jìn)一步的增加應(yīng)用程序軟件的性能, Windows CE采用按需求將內(nèi)存分葉;操作系統(tǒng)僅僅需要解壓縮并且裝入基于RAM的一小部分程序準(zhǔn)備執(zhí)行。ROM和基于RAM的程序的靈活性與速度意味著基于Windows CE的設(shè)備能夠被構(gòu)造成各種內(nèi)存結(jié)構(gòu)形式。
手持電腦的內(nèi)存結(jié)構(gòu)
典型的Windows CE的硬件平臺的內(nèi)存結(jié)構(gòu)是與基于 Windows系統(tǒng)的臺式電腦的內(nèi)存結(jié)構(gòu)十分不同的。為了知道內(nèi)存通常如何在Windows中被處理的,考查基于Windows CE的最普通的代表性的設(shè)備-手持電腦,是很有用的。
在手持電腦中,RAM被分割成兩個主要的部分:存儲內(nèi)存和程序內(nèi)存。向兩部分分配的RAM的量能被手持電腦用戶修改(在限制范圍內(nèi))。這個RAM的劃分圖如圖4所示。
在手持電腦中的存儲內(nèi)存類似于臺式電腦的硬盤RAM。它被用來存儲數(shù)據(jù)和非系統(tǒng)應(yīng)用程序。它的三段中每一段被不同的一套WIN32 API 訪問函數(shù):
Windows CE系統(tǒng)寄存器類似于Windows NT和Windows 95的操作系統(tǒng)的寄存器。你能利用WIN32 寄存器函數(shù)來操縱寄存器中鍵和數(shù)值。
被用戶安裝的應(yīng)用程序和數(shù)據(jù)在一般文件存儲段中。Windows CE文件系統(tǒng)API 是標(biāo)準(zhǔn)WIN32 文件系統(tǒng)的子集函數(shù)。
對于數(shù)據(jù)庫應(yīng)用程序,由Windows CE 數(shù)據(jù)庫API來存儲被管理存儲。這API 對Windows CE是唯一的 ,并且在其它的WIN32 平臺中沒有。
程序內(nèi)存被用于系統(tǒng)和非系統(tǒng)程序的堆棧存儲。非系統(tǒng)應(yīng)用程序從存儲內(nèi)存(或者或許PC卡)被取得,非壓縮的并且被裝入要執(zhí)行程序內(nèi)存中。
意外情況處理
的意外情況處理是強大的編程技術(shù),相應(yīng)一套的WIN32 API 起函數(shù)能容易的發(fā)現(xiàn)未預(yù)料到的錯誤狀況,并且使之恢復(fù)。結(jié)構(gòu)化的意外情況處理,允許危險的段的代碼可能由于硬件資源的問題、設(shè)備的沖突和微小的編碼錯誤而導(dǎo)致失敗,以使這部分程序與其余的應(yīng)用程序分開。這保護(hù)了應(yīng)用程序,使之免于過早的終止或者產(chǎn)生敏感的系統(tǒng)問題。
結(jié)構(gòu)化的意外情況處理包括定義一系列聲明作為保護(hù),并且為第一套的聲明定義了另一個套聲明作為意外情況句柄。意外情況句柄定義了一個或多個聲明來保障系統(tǒng)的運行,而不管保護(hù)聲明的現(xiàn)有的狀態(tài)。
在大多數(shù)32 位Windows平臺上應(yīng)用WIN32 API 的程序員在運用意外情況句柄的時候通常有兩種選擇,用C或 C++ 編寫應(yīng)用程序,并且利用WIN32提供的處理意外情況的宏,或者利用C++ 編寫應(yīng)用程序,并且使用C++ 語言定義的意外情況處理函數(shù)。
對于這種程序的編寫,Windows CE的開發(fā)者因無法訪問C++的(面向Windows CE的Visual C++ 目前還不支持意外情況處理,所以必須使用WIN32 API的意外情況處理宏。
為了應(yīng)用WIN32意外情況處理,你將使用一套在WIN32 API 中被定義的宏。下面一段代碼顯示其基本概念:
__try {
// The statements in here have a possibility of failure
// and so are guarded.
}
__finally {
// This is the exception handler. This code will execute
// after the guarded statements, no matter what happened
// in the guarded block of code above.
}
// This code will execute normally if the program flow allows
// it (no goto, exit, etc.)
__try 以及__finally 宏產(chǎn)生了使用意外情況句柄的所必要的底層代碼。
意外情況的處理對諸如在嵌入式的應(yīng)用程序中的那些普通的多線程序是有用的。WIN32結(jié)構(gòu)化意外情況處理宏是一種容易并且強大的保護(hù)應(yīng)用程序使之免受未預(yù)料到的失敗的方法。
設(shè)備處理
有無數(shù)硬件設(shè)備(外圍設(shè)備)與應(yīng)用Windows的平臺(Windows NT以及 Windows 95)臺式機是兼容的,并且每一年都有更多的東西在市場上涌現(xiàn)。而Windows CE的平臺,通常不支持臺式計算機支持的設(shè)備的很多品種的外圍硬件。然而,為一嵌入式的的系統(tǒng)創(chuàng)造可靠的設(shè)備接口在嵌入式的程序設(shè)計的過程中,是比較富有挑戰(zhàn)性的部分。這部分地因為典型的嵌入式的系統(tǒng)接口的時序與其它可操作性的需要遠(yuǎn)比臺式電腦計算系統(tǒng)和應(yīng)用程序的更難。
幸運地,WIN32 API 提供了一套豐富使設(shè)備接口方法,使得設(shè)備接口程序?qū)懫饋砀菀撞⑦m合于特定嵌入式的系統(tǒng)的需要。
WIN32 API是如何幫助的 WIN32 API在你的硬件平臺為你提供一套一致的基于流的接口。為了使用設(shè)備,你首先利用適合于設(shè)備類型的函數(shù)打開它。對于大多數(shù)設(shè)備,你利用的函數(shù)是在下列例子中的CreateFile 函數(shù):
HANDLE hPort = CreateFile("COM1"); // Open the serial port
CreateFile函數(shù)打開規(guī)定的設(shè)備(串口)并且返回用于以后在該種設(shè)備上的操作(例如讀和寫)的句柄。各種各樣函數(shù)的(包括ReadFile ,WriteFile ,LockFile 和其他)接受這個句柄為參數(shù),并且允許你(例如)讀寫數(shù)據(jù),檢查設(shè)備狀態(tài),并且將從其它程序的存取被鎖住的設(shè)備或者文件列入清單。文件輸入輸出操作被處理成與其它設(shè)備類型利用同樣的API 函數(shù),并且在文件之內(nèi)包括隨機的訪問的函數(shù)。被若干程序或線索同時訪問的設(shè)備和文件可以分區(qū)域地利用LockFile 函數(shù)鎖定。
在你的應(yīng)用程序已完成設(shè)備或者文件之后,它將調(diào)用CloseFile 函數(shù)關(guān)閉設(shè)備,并且進(jìn)行必要的清除設(shè)備的工作。
同步和異步的設(shè)備的處理
嵌入式系統(tǒng)的經(jīng)常有關(guān)鍵的設(shè)備有時序需要。對于這個理由,對底層的操作系統(tǒng)的軟件接口必須能夠在軟件層次上管理同時(或者幾乎同時)的系統(tǒng)中不同類型的設(shè)備的事件。 WIN32 API 支持對設(shè)備的同步和異步的訪問,并且用復(fù)雜的設(shè)備接口設(shè)計。
同步的接口是那些在軟件需要從設(shè)備得到動作的要求,然后等候結(jié)果。在同步的設(shè)備接口中,最常用的是前面已經(jīng)提到的ReadFile 以及WriteFile函數(shù)。當(dāng)在同步I/O中使用的時候,不論你與磁盤上的文件、并口或是串口、一個通道或其它類型的設(shè)備接口時,都是公用的并且是兼容的。
異步的接口是那些設(shè)備要求應(yīng)用程序為之服務(wù)的接口。一個異步的設(shè)備的好的例子是鍵盤。適當(dāng)和適時的處理異步事件,對于許多嵌入式應(yīng)用程序是至關(guān)緊要的。幸運的是,為Windows CE編寫的設(shè)備驅(qū)動程序能支持同時的多線索訪問驅(qū)動器。這大大地簡化異步輸入設(shè)備的處理。
你所訪問的給定的設(shè)備的方法,取決于那個設(shè)備的特性和你開發(fā)的特定的應(yīng)用程序的要求。如果你在基于你的Windows CE的硬件平臺上創(chuàng)建一個全新的設(shè)備(和設(shè)備驅(qū)動程序),你可以既從你的硬件設(shè)備和驅(qū)動器的層次,又可以從應(yīng)用程序的層次有許多選擇。
定制設(shè)備和WIN32
盡管嵌入式系統(tǒng)可以支持較小數(shù)量的設(shè)備,嵌入式系統(tǒng)能形成唯一的和挑戰(zhàn)型的設(shè)備接口問題。當(dāng)你開發(fā)一個新的硬件平臺并且它支持輸入輸出設(shè)備,在模你設(shè)計的不同層次上,你將不得不作出決策和折衷方案。例如,除非你只使用通常的off-the-shelf硬件,你必然套寫用戶設(shè)備驅(qū)動程序支持你的新外圍設(shè)備。你也能需要配置你的Windows CE來包含一些設(shè)備處理必要的組件。同時從應(yīng)用程序的層次,為滿足新的設(shè)備的需要,你將需要寫接口代碼。在有如此多變量的情況下,你如何保持你的設(shè)備的一定程度的一致行呢?答案就在WIN32 API 中。在WIN32 API環(huán)境下,寫你的目標(biāo)驅(qū)動程序,你有理由自信的認(rèn)為那些新設(shè)備的接口的應(yīng)用程序開發(fā)者能夠創(chuàng)造可信的,可檢驗和可維護(hù)的基本代碼。Windows CE設(shè)備驅(qū)動程序開發(fā)工具包,或者簡稱DDK ,提供了如何創(chuàng)造WIN32功能強大的設(shè)備驅(qū)動程序信息和范例。
設(shè)備的類型
Windows CE支持兩種基本類型的設(shè)備驅(qū)動程序,內(nèi)置固化的驅(qū)動程序和可安裝的驅(qū)動程序。如同名字所暗示的,內(nèi)置固化的驅(qū)動程序是被指定用于一個給定的Windows CE的硬件平臺的設(shè)備。Windows CE的嵌入式系統(tǒng)設(shè)計者有責(zé)任提供一個內(nèi)置固化的驅(qū)動程序來驅(qū)動系統(tǒng)所包括的設(shè)備。例如,許多Windows CE平臺有一個LCD 觸摸屏。這些平臺的制造廠為他們的設(shè)備提供設(shè)備驅(qū)動程序,使此硬件可以用于Windows CE操作系統(tǒng)。在完備的系統(tǒng)中,這些內(nèi)置固化的驅(qū)動程序位于Windows CE只讀內(nèi)存中內(nèi)核的周圍。
可安裝的設(shè)備驅(qū)動程序是被設(shè)定為為了任何與Windows CE 硬件平臺臨時連接的外圍的設(shè)備。這個類型的設(shè)備包括:調(diào)制解調(diào)器,打印機,數(shù)字的照相機,PC卡,以及任何數(shù)量的其它外部的設(shè)備。可安裝的設(shè)備驅(qū)動程序可能位于只讀內(nèi)存中,但是更典型與臨時性的設(shè)備的接口的應(yīng)用程序軟件一同裝載。
總結(jié)
本文已為概略地介紹了面向Windows CE的WIN32 API,其目的是為了突出這種被廣廣泛應(yīng)用的并且十分重要的API的一般的特點和優(yōu)點。有許多其它的細(xì)節(jié)你需要在第一次使用Windows CE嵌入式產(chǎn)品之前來學(xué)習(xí)掌握;幸運的是,有很多的WIN32 API 的信息的資源。
這些資源包括Microsoft開發(fā)網(wǎng)絡(luò)(MSDN ),文章(諸如本文)和報紙,以及大量出版的書...
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
電腦系統(tǒng)的16位和32的區(qū)別 電腦16位和32位區(qū)別
徹底搞懂系統(tǒng)調(diào)用
不要再用老方法學(xué)習(xí)單片機和ARM
Windows CE開發(fā)初步
x86 與 ARM:您的下一臺 PC 應(yīng)該使用哪種架構(gòu)?
32位停擺倒計時★★★,這對Android和蘋果用戶意味著什么?★
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服