内存控制WIN32 API为向开辟者提供了一套完美的和一律的接口。 当开辟绝大部门使用法度模范的时刻,软件开辟者不须要思索特定内存布局。 然而对付许多嵌入式使用法度模范,特别是那些有严厉的内存资源控制也许临界时序的请求的,对内存被控制的办法有好的默契是首要的。Windows的内存的普通布局对待分别的32 位Windows平台是分别的,并且奇特的细节布局在同一32 位Windows操作编制下分别的管理机之间也分别。 (例如,Windows NT的内存布局在X86 平台上与在DEC Alpha 平台上的用法分外分别 。) 对待这段的磋商,我们将专门集中在Windows CE操作编制的部门中举办。Windows CE的保管布局像其余的32 位Windows平台一律,Windows CE操作编制也有虚拟内存的特征。内存总在某一时间被分配给运用程序一页,页的大小由编制策画者决意(并在操作编制为对象硬件平台创制时被指定)。例如 在手持电脑,内存页大小是规范的1KB 或者4KB 。在初始化期间(导入),Windows CE创制一个孑立的被总共程序分享的4GB 虚拟地址空间。当程序引用一个虚拟的地址时,它被内核记载在物理的内存上。 这使得运用程序软件开辟者不必去思量对象编制内存的物理的布局。尽管总共程序分享单一地址空间,运用程序如故可避免互相误用。Windows CE 经过议定改造每页的护卫来护卫程序内存,而不是分配给每一程序分别地址空间。 算作运用程序开辟者,你或者不会太介意对象编制的内存的物理的布局。 内存能够全盘是随机存取内存,或者它或者搜罗闪存卡或者硬盘驱动器。Windows CE操作编制为你管理内存资源,同时WIN32 API 向你供应必要的分配、运用和释放的内存的接口。不过,算作一个嵌入式的编制的策画者,你将必要仔细思量将在你新的硬件平台上执行的运用程序的内存必要,并且殷思量本钱、速度和稳妥性,平衡各式目对象争论。 假若你为运用Windows CE开辟一个新的硬件平台 ,Windows CE的面临Visual C++ 的嵌入式软件包搜罗资源能够帮忙你做出这些决策,并且从而组成操作编制。岂论你的编制内存的设置若何,ROM(只读内存)将占用分外首要的职位。分别于其余的32位Windows操作编制,Windows CE操作编制的代码在只读内存中,并且在那个只读内存华夏地执行。 依照你的产物必要,你也能遴选在只读内存中安顿运用程序代码。 例如,Pocket Word,Pocket Excel和其余运用程序程序,搜罗在手持电脑只读内存中被供应的。保管在ROM中的程序组在Windows CE下当地执行,所以嵌入式编制的策画者可能只占用很少的RAM用于堆栈保管的必要。响应地,你的嵌入式运用程序能够运用RAM既算作程序的内存又可作一时保管空间。为了进一步的增补运用程序软件的本能机能, Windows CE接纳按需要将内存分叶;操作编制仅仅必要解压缩并且装入基于RAM的一小部门程序谋划执行。ROM和 基于RAM的程序的善变性与速度意味着基于Windows CE的安排可能被构变成各式内存布局形式。手持电脑的内存布局规范的Windows CE的硬件平台的内存布局是与基于 Windows编制的台式电脑的内存布局分外分别的。 为了了然内存时时如何在Windows中被解决的 ,考试基于Windows CE的最平淡的代表性的布置-手持电脑,是很有效的。在手持电脑中,RAM被分裂成两个主要的部分:保管内存和圭臬内存。 向两部分分配的RAM的量能被手持电脑用户修改(在控制规模内)。 这个RAM的划分图如图4所示。在手持电脑中的保管内存类似于台式电脑的硬盘RAM。 它被用来保管数据和非编制运用圭臬。它的三段中每一段被分别的一套WIN32 API 访谒函数: Windows CE编制寄放器类似于Windows NT和Windows 95的操纵编制的寄放器。你能运用WIN32 寄放器函数来操纵寄放器中键和数值。 被用户装配的运用圭臬和数据在寻常文件保管段中。Windows CE文件编制API 是圭臬WIN32 文件编制的子集函数。 应付数据库运用圭臬,由Windows CE 数据库API来保管被管理保管。这API 对Windows CE是唯一的 ,而且在其余的WIN32 平没有。 圭臬内存被用于编制和非编制圭臬的货仓旅馆保管。 非编制运用圭臬从保管内存(或许或许PC卡)被博得,非压缩的而且被装入要执行圭臬内存中。不测状态解决的不测状态解决是发达的编程技艺,反应一套的WIN32 API 起函数能便利的觉察未预猜测的舛错状态,而且使之恢复。结构化的不测状态解决,允许危急的段的代码或许由于硬件资源的问题、布置的争论和细小的编码舛错而导致挫折,以使这部分圭臬与其余的运用圭臬打开。这保卫了运用圭臬,使之免于过早的中断或许产生敏锐的编制问题。结构化的不测状态解决网罗界说一系列申明看成保卫,而且为第一套的申明界说了另一个套申明看成不测状态句柄。 不测状态句柄界说了一个或多个申明来保障编制的运行,而不管保卫申明的现有的状态。在大多数32 位Windows平台上运用WIN32 API 的圭臬员在运用不测状态句柄的时候往往有两种抉择,用C或 C++ 编写运用圭臬,而且运用WIN32供应的解决不测状态的宏,或许运用C++ 编写运用圭臬,而且运用C++ 语言界说的不测状态解决函数。应付这种圭臬的编写,Windows CE的开发者因无法访谒C++的(面向Windows CE的Visual C++ 目前还不赞成不测状态解决,于是必须运用WIN32 API的不测状态解决宏。为了运用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 宏形成了应用不测状态句柄的所需要的底层代码。不测状态的解决对诸如在嵌入式的应用标准中的那些平淡的多线标准是有效的。WIN32结构化不测状态解决宏 是一种便利而且发达的守卫应用标准使之免受未预猜测的失败的方法。布置解决有多数硬件布置(外围布置)与应用Windows的平台(Windows NT以及 Windows 95)台式机是兼容的,而且每一年都有更多的对象在市场上出现。而Windows CE的平台,往往不支持台式盘算推算机支持的布置的良多品种的外围硬件。 可是,为一嵌入式的的系统创建稳重的布置接口在嵌入式的标准打算的进程中,是比拟宽裕寻事性的部分。 这部分地由于类型的嵌入式的系统接口的时序与其它可操纵性的需要远比台式电脑盘算推算系统和应用标准的更难。走运地,WIN32 API 供给了一套丰厚使布置接口方法,使得布置接口标准写起来更便利并适合于特定嵌入式的系统的需要。WIN32 API是怎么协助的 WIN32 API在你的硬件平台为你供给一套平等的基于流的接口。 为了应用布置,你最终应用适合于布置类别的函数打开它。 对于大多数布置,你应用的函数是不才列例子中的CreateFile 函数:HANDLE hPort = CreateFile("COM1"); // Open the serial portCreateFile函数打开规定的布置(串口)而且返回用于以后在该种布置上的操纵(比方读和写)的句柄。 各式各样函数的(搜集ReadFile ,WriteFile ,LockFile 和其他)经受这个句柄为参数,而且应许你(比方)读写数据,查验布置状态,而且将从其它标准的存取被锁住的布置恐怕文件参加清单。 文件输入输出操纵被解决成与其它布置类别应用同样的API 函数,而且在文件之内搜集随机的访问的函数。 被几多标准或线索同时访问的布置和文件可以分区域地应用LockFile 函数锁定。在你的应用标准已告终布置恐怕文件之后,它将移用CloseFile 函数关闭布置,而且进行需要的铲除布置的事宜。同步和异步的布置的解决嵌入式系统的往往有关头的布置有时序需要。 对于这个原因,对底层的操纵系统的软件接口必须也许在软件条理上约束同时(恐怕几乎同时)的系统中不同类别的布置的事宜。 WIN32 API 支持对布置的同步和异步的访问,而且用杂乱的布置接口打算。同步的接口是那些在软件需要从布置得到举动的恳求,然后等待结尾。在同步的布置接口中,最常用的是前方已经提到的ReadFile 以及WriteFile函数。当在同步I/O中应用的时候,不论你与磁盘上的文件、并口或是串口、一个通道或其它类别的布置接口时,都是公用的而且是兼容的。异步的接口是那些布置恳求应用标准为之服务的接口。一个异步的布置的好的例子是键盘。妥当和适时的解决异步事宜,对于良多嵌入式应用标准是至关重要的。走运的是,为Windows CE编写的布置驱动标准能支持同时的多线索访问驱动器。这大地面简化异步输入布置的解决。你所访问的给定的布置的方法,取决于阿谁布置的特点和你开发的特定的应用标准的恳求。若是你在基于你的Windows CE的硬件平台上创建一个极新的布置(和布置驱动标准),你可以既从你的硬件布置和驱动器的条理,又可以从应用标准的条理有良多抉择。定制布置和WIN32纵然嵌入式系统可以支持较小数目的布置,嵌入式系统能酿成唯一的和寻事型的布置接口问题。当你开发一个新的硬件平台而且它支持输入输出布置,在模你计划的差别条理上,你将不得不作出决议计划和折衷计划。比方,除非你只利用往往的off-the-shelf硬件,你一定套写用户布置驱动法度模范附和你的新外围布置。 你也能须要配置你的Windows CE来包罗极少布置解决须要的组件。同时从利用法度模范的条理,为餍足新的布置的须要,你将须要写接口代码。在有如许多变量的状态下,你如何坚决你的布置的一定程度的划一行呢?答案就在WIN32 API 中。在WIN32 API状况下,写你的方向驱动法度模范,你有原由自负的以为那些新布置的接口的利用法度模范开发者能够缔造可信的,可查抄和可维护的差不多代码。Windows CE布置驱动法度模范开发工具包,大概简称DDK ,提供了如何缔造WIN32功效发达的布置驱动法度模范消息和典范。布置的类别Windows CE附和两种差不多类别的布置驱动法度模范,内置固化的驱动法度模范和可装置的驱动法度模范。 仿佛名字所表示的,内置固化的驱动法度模范是被指定用于一个给定的Windows CE的硬件平台的布置。Windows CE的嵌入式体系计划者有职责提供一个内置固化的驱动法度模范来驱动体系所包罗的布置。比方,许多Windows CE平台有一个LCD 触摸屏。这些平台的缔造厂为他们的布置提供布置驱动法度模范,使此硬件也许用于Windows CE操纵体系。在完善的体系中,这些内置固化的驱动法度模范位于Windows CE只读内存中内核的周遭。可装置的布置驱动法度模范是被设定为为了任何与Windows CE 硬件平台临时连接的外围的布置。这个类别的布置包罗:调制解调器,打印机,数字的拍照机,PC卡,以及任何数目的别的外部的布置。 可装置的布置驱动法度模范大概位于只读内存中,不外更范例与临时性的布置的接口的利用法度模范软件一路装载。概括本文已为概略地引见了面向Windows CE的WIN32 API,其目的是为了突出这种被广广泛利用的而且格外紧要的API的寻常的特性和益处。有许多别的的细节你须要在第一次利用Windows CE嵌入式产品之前来学习把握;幸运的是,有许多的WIN32 API 的消息的资源。这些资源包罗Microsoft开发网络(MSDN ),文章(诸如本文)和报纸,以及大批出书的书 (转载请注明出处:http://www.szmidea160.com/lianzhongyouxi/20100426/391.html) |