- UID
- 872238
|
中断处理
作为一嵌入式的的软件开发者,你可能最关心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和其使用的时间临界、实时应用程序在另一篇文章中包括比本文更详细的内容,文章名为《 Real-time Systems with MicrosoftWindows CE》。
内存管理
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内核的特性使有可能按习惯定制中断时序和优先级,以满足特定应用程序的需要。 |
|