在嵌入式系统中使用ZINC(转).docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在嵌入式系统中使用ZINC(转)前一段时间使用ZINC,也在论坛里问了问题,但是回答的人不多......所以我将自己的学习笔记做了一些整理,贴出来与大家共享。疏漏之处在所难免,欢迎大家指正。 在嵌入式系统中使用ZINC 1 绪论 本文讨论在一个实时环境下的Zinc应用程序――Zinc on VxWorks的行为。运行在一个RTOS 上的应用程序通常有严格的实时需求,必须是可靠的,并且在某种程度上是确定的。 Zinc 框架既适用于桌面,也适用于RTOS,但当开发者针对一个RTOS 环境编码时,他要知道其中的重大的区别。 本文讨论在一个RTOS环境里对Zinc 特殊的问题: o 嵌入式系统上的应用程序行为 o 多任务 o 多任务环境里的任务间通信 o 性能改进 o 在一个RTOS 目标机上存储Designer文件 o 实时问题的其它各个方面 本文假定你熟悉基本的Zinc操作。你应该知道事件(用户事件或应用程序事件)是如何进入系统的,它们如何被发送给正确的对象,以及对象如何处理它们。你还要熟悉事件管理器、窗口管理器、设备和主要的事件循环(ZafApplication::Control( ))。如果你对这些话题还不适应,请先去看《Zinc的体系结构》。 2 Zinc和嵌入式系统 Zinc for RTOS 与 Zinc for desktop 在下列行为和实现方面不一致: o 应用程序入口点 o 输入队列任务 o 事件阻塞 o 事件队列保护 o ZafDisplay访问 2.1 应用程序入口点 在一个桌面应用程序里,入口点一般由编程语言或操作系统定义。对于编程语言C 和 C++,应用程序入口点是函数main( )。在Windows 操作系统里,入口点是函数WinMain( )。 注意:不要搞乱应用程序入口函数和ZafApplication::Main( ) 函数。它们是有不同目的的不同函数。 在一个RTOS 应用程序里,应用程序入口函数被调用来运行应用程序。ZafApplication::Main( ) 函数是应用程序的Zinc部分典型地将要开始的地方。 当你在一个桌面应用程序里使用Zinc时,应用程序入口函数是Zinc库的一部分――你不用去实现它。 在一个RTOS环境里,你必须自己写应用程序的入口点。有如下两个原因: o 适应动态链接环境 在VxWorks里,可以想象Zinc库会被放置在目标机上面,单独的应用程序稍后下载。如果应用程序入口函数是在库里,它将设法调用一个共同的函数(例如ZafApplication::Main( )),而在这种情况下,该函数不存在 直到稍后应用程序被下载。这将在库被下载的时候返回一个错误:undefined symbol linker error o 提供定制一个RTOS应用程序如何启动的能力 每个RTOS的应用程序都有不同的启动需要。一个RTOS应用程序可能需要在启动GUI任务之前产生若干任务或检测硬件。另外,它可能需要在GUI任务已经结束后产生一些任务。最容易的和最一致的处理一个嵌入式应用的独特需求的方法就是创建一个特殊的应用程序入口点。 创建ZafApplication实例 ZafApplication 类通常在应用程序入口函数处被实例化。 每个应用程序必须创建一个ZafApplication 类的实例。ZafApplication 类创建并维护对一个应用程序需要的对象(例如显示、设备、窗口管理器和事件管理器)的访问。(ZafApplication)对象 还设置全局变量 zafApplication ,用于获得对这些(对应用程序来说是全局的)对象的访问。 ZafApplication 还声明了一个成员函数Main( )。这个函数由开发者来写,并且通常是应用程序Zinc部分的开始之处。在桌面环境下, ZafApplication::Main( )是从库中的应用程序入口函数(main( ) or WinMain( ))处自动调用的。RTOS 应用程序入口函数调用ZafApplication::Main( )并非是严格要求的,但是我们建议这样做。参考任意一个Zinc demo目录中的文件v_app.cpp,作为一个例子。 修改 ZafApplication类的行为 如果需要,标准的ZafApplication 类的行为能够通过修改存在于文件z_app.cpp 中的构造函数来改变。要注意全局变量zafApplication 是作为一个任务变量创建的,因此, 在Zinc任务变成不活动和活动时,它被清除和恢复。分支问题以后在“3 多任务”中讨论。 2.2 事件取回—阻塞或非阻塞的事件取回 ZafApplication::Control( )函数在Zinc应用程序中是主要的控制环。它通过

文档评论(0)

jmm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档