状态机在嵌入式前后台系统中的应用.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
状态机在嵌入式前后台系统中的应用 ?在嵌入式前后台系统中,外部的异步事件通过中断来捕获并运行在后台,而其他的任务则运行于前台。提高系统中的任务处理能力,是嵌入式前后台系统设计的重点。本文描述了利用状态机来提高嵌入式前后台系统任务处理能力的实现方法。为了便于研究和描述状态机在嵌入式前后台软件系统中的应用,本文将以移动2G光纤直放站近端机的监控软件案例来阐述和说明。 关键词? 前后台系统? 状态机? 队列? 软件定时器? AT91SAM7S256? GSM 1? 移动2G光纤直放站近端机监控单元   对于移动2G光纤直放站近端机监控单元,只介绍与本文有关部分的原理框图,如图1所示。图中GSM Modem通过AT91SAM7S256的串口1相连。由于GSM Modem的特性和短消息的收发,其通信收发处理相对比较繁琐和复杂。例如,发送短消息时,需要向Modem发送“AT+CMGS=电话号码”并等待一定的时间,再发送短消息内容,等待发送成功。短消息发送成功后,GSM Modem将回应“+CMGS序号”的信息。其发送需要等待的时间长短不定。 图1? 直放站近端机监控单元   在移动2G光纤直放站近端机中,通过串口1发送到GSM Modem的数据不仅仅是短消息,还包括下行功率查询、信源信息查询、读取/删除短消息等。因此,针对移动2G光纤直放站近端机监控单元的要求和软件系统为前后台系统的特点,移动2G光纤直放站近端机监控单元的监控软件设计采用了状态机和队列的方式。 2? 软件的设计思路   根据前后台软件系统的特点,结合移动2G光纤直放站近端机的硬件结构,以移动2G光纤直放站近端机的监控软件中的短消息收发子系统为例,来阐述软件的设计思路。GSM Modem的短消息接收采用软件主动读取的方式,即软件以中断方式接收到短消息在Modem中存储的序号,然后软件主动读取短消息和删除已读取的短消息。短消息的收发处理流程如图2所示。 2.1? 短消息的接收   如图2所示,GSM Modem主动上报的信息将存储到串口1接收缓冲区中,软件从串口1接收缓冲区的数据中解析出短信序号(Modem收到的短消息在Modem中的存储序号)存储到短信序号队列(短信序号缓冲区1~n)中,然后软件通过短信序号队列的状态来决定是否需要向Modem发送读取短信或者删除短信命令。   当软件发送读短消息命令后,GSM Modem将对应序号的短信息送出,数据将存储到串口1接收缓冲区中,软件再从串口1接收缓冲区的数据中解析出短消存储到短信队列(短信缓冲区1~m)中。这样需要软件处理的短消息就存储到了短信队列中,而处理的事情则交由软件的其他区处理。 图2? 直放站短信收发处理流程 2.2? 短消息的发送   对所有需要发送到GSM Modem的数据,则通过UART1发送缓冲区来完成。具体发送哪些数据(读取/删除短信、下行功率查询、信源信息查询、未读短信查询)或者缓冲区的数据(短消息发送缓冲区、告警上报发送缓冲区)由软件根据相应的状态来选择确定。 3? 设计思路的实现 3.1? 串口1数据的发送 3.1.1? 串口1发送缓冲区的数据结构   串口1是否有数据需要发送,由串口1的发送缓冲区的状态来决定。串口1发送缓冲区的数据结构定义如下:   typedef struct{     unsigned char bStBuf;//bStBuf = Uart1_TxBuf_Rdy或者=Uart1_TxBuf_Wait或者=Uart1_TxBuf_Empty     unsigned short Index;     unsigned short Len;     char Buf[270];   }Uart1Buf_t;   ① bStBuf成员: 串口1发送缓冲区的状态。   ② Index成员: 串口1发送数据缓冲区索引。   ③ Len成员: 串口1发送数据缓冲区中有效数据的长度。   ④ Buf成员: 串口1发送数据缓冲区。 3.1.2? 串口1发送缓冲区软件定时器   由于GSM Modem的特性致使串口1不能不间断地发送数据,因此,对串口1的数据发送设定一个软件定时器。软件定时器用于控制GSM Modem是否可以接收来自串口1的新数据。软件定时器的结构定义如下:   typedef struct{     unsigned char bTimerSt;//软件定时器的状态: Timer_START或Timer_STOP     unsigned int TimerCtn;//软件定时器的计数器     void (*func)(void);//超时后相应的处理功能函数指针   }SoftTimer_t;   ① bTimerSt成员: 用于描述软件定时器的状态。它有2种状态:

文档评论(0)

22255990 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档