新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > WinCE嵌入式开发程序入门

WinCE嵌入式开发程序入门

作者: 时间:2016-10-08 来源:网络 收藏

Windows CE操作系统为设计提供了全新的设计环境。Windows CE的开发者几乎不需要支持原有的应用程序或设备,所以操作系统在设计时可以考虑到应用一些最新的思想和应用程序,并且应用最先进的嵌入式式的32位微处理器产品作为它的硬件目标平台。

这对于一个使用Windows CE平台的WIN32 API的用户来说意味着什么呢?这意味着对于现代的、32位的嵌入式式系统,它是一种更简单的API,更加优化的目标操作系统。下面,我们将研究一些重要 的WIN32 API和Windows CE操作系统的内部的内容。

程序和线索

了解WIN32 API和Windows CE操作系统的底层内容的第一步就是了解多任务和多线索索应用程序是如何组织的。WIN32术语中,程序被定义成一个正在运行中的程序实例。象其他的32位Windows 平台一样,Windows CE是一个多任务的操作系统,在一个运行中的程序里,它支持执行多个线索所。

对于嵌入式式的应用程序,Windows CE的多线索索执行能力是它函数的重要的体现。这样就使WIN32嵌入式式程序开发者优先考虑WIN32的线索索的创立与同步。

WIN32的线索索的处理同其他常用的嵌入式式的操作系统是有区别的。不象Unix或其派生的系统,32位Windows平台从一开始设计就支持多线索索应用程序。线索索管理(时序安排,同步和资源管理)由内核来完成,程序开发者利用函数装入内核(通过WIN32 API访问)来建立和管理他们应用程序中的线索索。

例如,如果一个嵌入式式应用程序必须监视多个输入设备并且在监视到一个或多个设备上不同步发生的事件的时候要作出恰当的反映。更进一步,如果这样一个程序也需要更新一些共享的资源(如全局数据结构,磁盘上的文件,或其他设备)来作为与相关设备事件的反映。象这样的一个程序需要一个可靠的线索索管理系统。这恰恰是WIN32 API能够提供的函数:多个线索索能够快捷并且容易的用WIN32 API线索索创建界面建立;同步线索索(多个线索索同时访问一个数据)可以通过不同的方式完成,包括关键的段,有名称和没有名称事件,以及互斥的目标。

Windows CE 被设计成在执行这些同步时占用最少的程序资源。这位对那些函数不强大的开发者来说十分重要;因为内核来负责线索索的管理,不需要使用另外的处理器来循环检测程序或线索索完成,以及执行其他的无用的应用程序层次上的线索索管理。内核已构建好如何管理若干的线索索并且使程序高效地进行的程序。

对于包括若干个程序的应用程序,WIN32 向用于线索索、程序管理和同步提供了一套的完备的处理方法。这些线索索管理特性非常适于嵌入式式应用程序软件,并且对Windows 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 。



关键词:

评论


相关推荐

技术专区

关闭