首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

WIN32 编程示例嵌入式式软件开发程序入门 03

WIN32 编程示例嵌入式式软件开发程序入门 03

对于包括若干个程序的应用程序,WIN32 向用于线索索、程序管理和同步提供了一套的完备的处理方法。这些线索索管理特性非常适于嵌入式式应用程序软件,并且对Window s CE开发者是容易得到的。


  消息在32位windows平台上运行的程序更专门化,程序的线索依赖于消息来初始化程序,控制系统资源并且与操作系统和用户通信。 windows消息有各种各样来源 ,包括操作系统,用户活动诸如键盘输入、鼠标、触到屏幕,以及其它运行的程序或者线索。


  当消息被送到线索时,这条消息被放置在消息队列中等待最后处理(图3)。每一条线索拥有完全不独立于其它线索所拥有的消息队列的消息队列。线索一般有不断运行的消息循环,恢复和处理消息。当队列地没有消息,并且线索不从事于其它任何活动,系统挂起线索,以节省中央控制器资源。


  消息也能用于控制目的,初始化你的应用程序中各种类型的程序,并且他们能利用消息参数传递数据。例如,线索可能收到触屏被激活的消息,消息参数可以表明X和Y为用户行动的坐标。 在另一种类型的消息中,参数可以包括指针或者指向数据结构、窗口或其他对象的句柄。


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


  内存管理果你为使用Windows CE开发一个新的硬件平台 ,Windows CE的面向Visual C++ 的嵌入式软件包包括资源可以帮助你做出这些决策,并且从而构成操作系统。


  无论你的系统内存的配置如何,ROM(只读内存)将占用十分重要的地位。不同于其它的3 2位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 是标准WI N32 文件系统的子集函数。
返回列表