一种经典的DOS程序框架.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
一种经典的DOS程序框架

一种经典的DOS程序框架 发布时间:2008-7-25 9:43:02????被阅览数: 3077次 ??????? 本文介绍以英创公司嵌入式PC模块为平台,以事件驱动为特色的一种通用的嵌入式系统应用程序方案,该方案满足大多数中、低端嵌入式系统需求,可广泛应用于智能测控设备、POS终端产品、工业自动化、网络通讯管理等领域。采用英创嵌入式网络模块的客户,更是可以此为基础,直接进入应用功能的软件规划及实现,从而大大节省应用程序的开发时间,同时保证应用程序的高稳定性。本应用程序方案的核心是通过对一个简单的任务命令队列进行操作,来实现各个不同的应用程序功能。下图是本方案的典型流程框图。 ? ? 1、系统流程概述 ? ??????? 在上图中表示了3种不同的流程,它们是程序代码流程、任务命令(也称为事件)流程、以及数据的流程,以下对这三种流程做一简要介绍。 ? 程序流程 ? ??????? 应用程序启动后,首先进行必要的程序初始化配置,便进入系统核心代码,核心程序将依次读取系统任务队列中的事件代码,并根据代码内容转入相应的程序功能模块。不同的程序功能模块对应着不同的任务,即图中所标注的任务1、任务2、任务n等等,这些任务代码的特点之一是通过内部的状态机机制来避免程序阻塞,使得程序能快速返回系统任务调度单元,从而实现任务间的切换。 ? ??????? 任务划分的原则一般是按照应用功能或层次来划分,如任务1对原始数据进行处理,任务2对处理的结果数据进行网络传送,任务3对数据进行文件备份。为了提高系统对事件的响应速度,每个任务不宜设计得过长,就大多数嵌入式系统应用来看,可以把任务的执行时间控制在100ms之内,对需要更长执行时间的功能,可以通过内部设置状态机的方式来化解。 ? 命令流程 ? ??????? 系统命令,通常也称为系统事件,可由系统中多个单元产生,这些单元可以是系统的定时中断程序,与应用相关的硬件中断程序以及各个任务功能程序模块,它们根据自身的运行状况,生成必要的事件并把这些事件推入系统任务队列。进入系统任务队列的事件是完全异步的,它们按照时间顺序排列,统一由系统核心代码读取,并启动相应的任务模块对该事件进行处理,这就是所谓的事件驱动机制。在程序设计中采用事件驱动的一个直接的好处是降低了各任务间的耦合性,提高了代码的可靠性及可维护性。 ? ??????? 命令通常可定义成枚举变量,另可考虑命令参数段,可存放若干参数或字符串。系统任务队列是一个典型的FIFO数据结构,系统为中断程序和普通的任务模块提供了发送事件的API函数。定时任务发生器是一段加载到系统定时中断中的代码,在DOS系统中一般可提秒级以上的定时事件,更小时间间隔的事件,可通过系统的其他定时器中断实现,对于一般的嵌入式应用,最小定时事件不宜小于5ms,否则会无为增加CPU的开销,降低系统性能。在命令定义中,一般会定义IDLE或NOP命令,在IDLE任务中可以放常规的数据处理,也可以放检查是否有键盘、是否有网络数据来等等,并可形成必要的事件发送到系统任务队列,以启动相应的处理。 ? 数据流程 ? ??????? 各个任务模块的主要功能之一就是对各级应用数据进行必要的加工,并形成新的数据。典型的数据加工可以是: 对串口来的数据进行帧格式分析,提取相关数据,即通常的通讯规约分析; 对AD采集的原始数据进行某种统计处理,提取特征数据; 读取数字输入状态,进行必要处理; 读取网络报文,进行必要的应用层规约解析 应用数据存文件,文件数据处理等等 ? ??????? 由于每个任务的执行机会具有一定的不确定性,因此需要对数据开设一定的缓冲区,对一般的应用来说,数据处理通常都是顺序进行的,所以数据缓冲区的结构通常采用FIFO数据结构,缓冲区的数据单元即可是简单的字节、字,也可以是复合的数据结构。在英创提供的程序中,串口的数据缓冲区就是采用的FIFO数据结构,数据单元为一个字节,FIFO结构的数据缓冲区也称为环型buffer。 ? ??????? 可以由一个任务作数据处理,另一个任务作数据传送,对多任务共享的单一数据单元,可通过设置信号灯的方法来确保数据单元的完整性,对多个数据单元,同样可考虑采用FIFO数据结构。对数据响应时间有严格要求的应用,也可以用一个任务实现数据采集处理和网络通讯全过程。 ? ??????? 以下具体介绍实现上述方案的主要代码。建议用户在阅读本文之前,已对英创嵌入式模块的功能测试程序有了基本了解。 ? 2、主要程序代码分析 ? 主控流程与应用任务 ? #include? ?? stdio.h ??????????????????????????????????????????????? // 包含所需的C运行库 #include ?? dos.h

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档