中断处理 作为一嵌入式的的软件开发者你可能最关心windows CE消息的处理规则是如何影响你的外部系统接口的时序的windows CE通过细心设计和准确的衡量以保证其中断时序以及其它相关的特位与嵌入式式的系统设计是适用的嵌入式应用程序经常有时间临界的设备接口需要需要发现并且在一最小的规定的时间之内对设备和系统事件作出反应 为了支持这样应用程序 windows CE包括高度优化中断传送优先级和服务系统在windows CE内核中 中断处理分成两个明显的部分中断服务程序(ISR )以及中断服务线索(IST )这个系统的目的是使ISR 尽可能小和快在硬件的层次上每一中断要求(IRQ )线索路与一特定的软件ISR联系当被触发时给定的ISR除了通知内核IST的位置外还做少量的工作一旦IST 被初始化(尽管没必要完成)系统便准备好接受下一中断并且处理下一中断 每一个中断有一个优先级与他们相联系 windows CE为确定的线索时时序利用基于优先级的时间片段算法与每一ISR 被联系的IST 是正常的线索因此为IST设置优先级以满足应用程序的时序需要是应用程序软件开发者的责任这种将ISR 和IST在中断程序中分开处理最终结果是典型的中断等待时间被大大地减少了在中断程序中发生不可接受的延迟的可能性也大大减少此外嵌入式式软件包和windows CE内核的特性使有可能按习惯定制中断时序和优先级以满足特定应用程序的需要 Windows CE和其使用的时间临界实时应用程序在另一篇文章中包括比本文更详细的内容文章名为《 Realtime Systems with Microsoft Windows CE》 内存管理 WIN API为向开发者提供了一套完备的和一致的接口 当开发绝大部分应用程序的时候软件开发者不需要考虑特定内存结构 然而对于许多嵌入式应用程序特别是那些有严格的内存资源约束或者临界时序的要求的对内存被管理的方法有好的理解是重要的 Windows的内存的一般结构对于不同的 位Windows平台是不同的并且特殊的细节结构在同一 位Windows操作系统下不同的处理机之间也不同 (例如Windows NT的内存结构在X 平台上与在DEC Alpha 平台上的用法十分不同 ) 对于这段的讨论我们将专门集中在Windows CE操作系统的部分中进行 Windows CE的存储结构 像其它的 位Windows平台一样Windows CE操作系统也有虚拟内存的特性内存总在某一时间被分配给应用程序一页页的大小由系统设计者决定(并在操作系统为目标硬件平台创建时被指定)例如在手持电脑内存页大小是典型的KB 或者KB 在初始化期间(导入)Windows CE创造一个独立的被所有程序共享的GB 虚拟地址空间当程序引用一个虚拟的地址时它被内核记录在物理的内存上这使得应用程序软件开发者不必去考虑目标系统内存的物理的布局虽然所有程序共享单一地址空间应用程序仍然可避免相互误用Windows CE 通过改变每页的保护来保护程序内存而不是分配给每一程序不同地址空间 作为应用程序开发者你可能不会太在乎目标系统的内存的物理的结构内存可以全部是随机存取内存或者它可能包括闪存卡或者硬盘驱动和windows CE内核的特性使有可能按习惯定制中断时序和优先级以满足特定应用程序的需要 如果你为使用Windows CE开发一个新的硬件平台 Windows CE的面向Visual C++ 的嵌入式软件包包括资源可以帮助你做出这些决策并且从而构成操作系统无论你的系统内存的配置如何ROM(只读内存)将占用十分重要的地位不同于其它的位Windows操作系统Windows CE操作系统的代码在只读内存中并且在那个只读内存中原地执行依据你的产品需要你也能选择在只读内存中放置应用程序代码 例如Pocket WordPocket Excel和其它应用程序程序包括在手持电脑只读内存中被提供的 存储在ROM中的程序组在Windows CE下当地执行所以嵌入式系统的设计者能够只占用很少的RAM用于堆栈存储的需要相应地你的嵌入式应用程序可以利用RAM既作为程序的内存又可作临时存储空间 为了进一步的增加应用程序软件的性能 Windows CE采用按需求将内存分叶操作系统仅仅需要解压缩并且装入基于RAM的一小部分程序准备执行ROM和基于RAM的程序的灵活性与速度意味着基于Windows CE的设备能够被构造成各种内存结构形式 手持电脑的内存结构 典型的Windows CE的硬件平台的内存结构是与基于 Windows系统的台式电脑的内存结构十分不同的为了知道内存通常如何在Windows中被处理的 考查基于Windows CE的最普通的代表性的设备-手持电脑是很有用的在手持电脑中RAM被分割成两个主要的部分存储内存和程序内存向两部分分配的RAM的量能被手持电脑用户修改(在限制范围内) 在手持电脑中的存储内存类似于台式电脑的硬盘RAM它被用来存储数据和非系统应用程序它的三段中每一段被不同的一套WIN API 访问函数Windows CE系统寄存器类似于Windows NT和Windows 的操作系统的寄存器你能利用WIN 寄存器函数来操纵寄存器中键和数值 被用户安装的应用程序和数据在一般文件存储段中Windows CE文件系统API 是标准WIN 文件系统的子集函数对于数据库应用程序由Windows CE 数据库API来存储被管理存储这API 对Windows CE是唯一的并且在其它的WIN 平台中没有 程序内存被用于系统和非系统程序的堆栈存储 非系统应用程序从存储内存(或者或许PC卡)被取得非压缩的并且被装入要执行程序内存中 |