首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
uCOS-II在车载GPS移动终端中的应用
来源:本站整理  作者:佚名  2010-04-15 16:49:44



四、软件层设计

本系统选用μC/OS-II操作系统,将其移植到MCS51系列单片机上。系统采用的时钟节拍为Tick=50次/秒(即0.02秒/次),在main中创建所有任务和信号量、消息油箱、消息队列等。

void main (void)

{
OSInit();

//创建信号量、消息队列;

HookSem = OSSemCreate(0); //唤醒摘挂机任务

GprsQ = OSQCreate(&GprsMsg[0],10);

SMsgQ = OSQCreate(&SMsg[0],5);

//创建内存区域;

Mem20 = OSMemCreate(Part1,20,50,&err);

Mem50 = OSMemCreate(Part2,100,10,&err);

//任务创建;

OSTaskCreate(WatchDogTask,(void*)0,&WatchDogStk[0],2); //监视任务

OSTaskCreate((void*) KeyTask,(void*)0,&KeyTaskStk[0],3); //按键处理任务

OSTaskCreate((void*)WriteTask,(void*)0,&WriteStk[0],4); //摘挂机任务

OSTaskCreate((void*)GPRSTask,(void*)0,&GPRSStk[0],5); //GPRS任务

OSTaskCreate((void*)SMsgTask,(void*)0,&SMsgStk[0],6); //短信息任务

OSTaskCreate(ReadTask, (void *)0, &ReadStk[0],7); //读串口任务

OSStart();

}

1、监视任务

因本系统工作于干扰强烈的汽车环境中,虽已采取多种硬件抗干扰措施如加屏蔽罩、可靠接地、设置软件陷阱等,仍有可能因瞬间扰动使系统陷入混乱,导致系统跑飞而只能依靠看门狗复位重新运行,以致无法实现设计目标。为此,本系统采用监视任务监督其它任务是否正常运行,若某一任务未能正常运行则采取相应措施以尽量减少看门狗复位次数。

监视任务设计思路为:被监视任务正常运行时其执行时间是可预估的,被监视任务在其即将运行完毕时向监视任务发送消息说明自身运行正常。被监视任务运行时,监视任务处于等待态,等待被监视任务给它发送消息,等待时间被设定为预计的任务正常运行所需的最大时间。若等待时间内监视任务收到消息,则认为发送消息的任务运行正常,依照各任务执行顺序的先后下一任务开始运行,监视任务等待下一任务发送的消息。若等待时间已过,监视任务仍未收到消息,则系统的时间管理函数将强行把监视任务视为就绪态。因监视任务的优先权是最高的,它将抢占对CPU的控制权并采取相应的纠错方案。

2、  按键处理任务

按键处理任务主要对防盗报警、抢车报警、打接电话按钮进行处理,当任务循环检测到按键按下时,按键处理任务发送相应的信号量到处理相应按键的程序中。

3、  摘挂机任务

当拿起听筒或放下听筒时,就产生中断。在中断中,调用OSSemPost(HookSem)来唤醒摘/挂机任务,同时清除中断标志。摘挂机任务调用OSSemPend(HookSem,0,&err)来获得信号量。获得信号量后,根椐摘挂机状态标志来判断是摘机还是挂机。在挂机的时候,如果先前是在响铃的时候摘机的,那么摘挂机任务把它当做已接来电处理;如果不是在响铃的时候摘机的,那么在挂机的时候摘挂机任务就把它当做已拨电话处理。

4、  GPRS任务

当读串口任务接收到GPRS数据时,调用OSQPost(GprsQ,(void *)&Gprs_Buf[0])函数向来唤醒GPRS任务,GPRS任务不断调用gprs_msg =OSQPend(GprsQ,50,&err)来获得从读串口任务中发来的GPRS数据,根据当前的状态决定是否向控制中心发送定位数据及相关信息。

5、  短消息处理任务

在GPRS网络不可用的情况下,系统启动短消息任务进行数据的通信,当读串口任务接收到短消息时,调用OSQPost(SMsgQ,(void *)&SMsg_Buf[0])向短信息任务发送消息,短信息任务不断调用sm_msg =OSQPend(SMsgQ,100,&err)来获得短消息,然后进行相应的短信收发处理。

6、  读串口任务

在读串口任务中,从接收缓冲区中读取来自GPRS通讯模块和GPS模块发送的字符串,同时分析接收的字符串坐相应的处理以及向GPRS任务和短消息任务发送消息。

结语

本文描述了在MCS51的硬件平台上实现uC/OS-II,并针对传统的单片机程序设计方法设计的稳定性不佳的问题,提出了基于uC/OS-II的嵌入式系统设计的方案。但是,使用实时内核来管理这些任务,会增加系统的内存容量和CPU时间的消耗,而且任务调度的优势不能很好地显示出来,因此,该设计有一定局限性。但是,在系统的内存足够大、CPU运行速度足够快的情况下,使用实时内核uC/OS-II设计,可以提高了系统的可靠性和稳定性,有利于系统的后继开发,本系统选用CPU为W78E516,外扩32K RAM,晶振频率为22.1184M,能很好的满足系统的要求。

 

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:60,843.75000 毫秒