


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多任务型嵌入式车载终端系统的发展效果0 引言 实时操作系统C/OS-具有任务、时间、内存管理等功能,它是基于优先级调度的抢占式嵌入式实时操作系统,其内核可以任意裁减,移植比较简单,并且能够提供各类功能函数如信号量、邮箱队列等,实现多个任务之间的通信,适用于实时性要求较高的场合。本文利用ARM嵌入式处理器,结合GPRS和GPS技术设计了一款嵌入式车载监控终端系统,系统采用C/OS- 嵌入式操作系统,能满足车辆监控终端的设计要求【1】。1 软件总体设计 本终端系统硬件主要由中央处理器、GPS 接收机、GPRS 无线通信模块、电源模块等部分组成,实现导航定位、通话、报警和远程通信等功能。 系统软件采
2、用C/OS-嵌入式操作系统,软件采用分层设计,具体包括底层硬件驱动层、中间嵌入式操作系统层和应用程序接口层,以及顶层应用层,整个系统体系结构如图1所示。 软件设计步骤:进行C/OS-操作系统的移植;在此基础上设计各个硬件电路所需要的驱动程序;进行中断处理程序ISR和各项任务的设计;利用嵌入式操作系统提供的功能函数创建信号量、消息、邮箱等,最终实现各个任务之间的通信,从而达到控制整个嵌入式系统终端运行的目的。1.1 任务设计 依据嵌入式终端系统所要求的功能,划分如下几个任务:系统监视任务;GPS采集任务;GPS数据处理任务;键盘输入任务;显示器显示输出任务;串行口收发任务;GPRS通信任务;短信
3、任务以及报警任务。另有3个中断服务程序ISR:定时中断服务程序;串口接收中断服务程序;外部中断服务程序。图1 C/OS-II软硬件体系结构1.2 优先级设计为了有效利用系统资源,共设计20个不同的优先级,最低优先级OS_ LOWEST_ PRIO 的值设为19,除去系统保留7个优先级外,本系统提供给用户可以使用的优先级个数为12 个。 在系统所有任务设计中,由于涉及到车辆安全,实时性要求比较高,所以把报警任务、GPS任务都设计为与中断服务程序ISR相关联。GPS和GPRS通信任务是比较重要的任务,所以优先级别设计较高,而键盘输入任务和显示输出任务实现人机对话功能,实时性要求不高,优先级可以较低
4、,所以各个任务从高到低的优先级设计如下: 监控任务报警任务串口收发任务GPS信号采集任务GPRS通信任务短信任务键盘任务显示输出任务。1.3 任务间的同步与通信 系统任务中,串口中断任务与 GPS任务间的通信是利用消息邮箱实现的,使用OSMboxCreat()函数创建一个邮箱,在串口中断任务程序中通过调用OSM boxPost()函数发送信息到邮箱, GPS任务通过调用函数OSMboxPend()接收邮箱中的消息,邮箱接收到OSMboxPend()函数的消息后,启动GPS任务,GPS任务对内存缓冲数据进行解析和处理,之后将解析处理的数据块放入一个共享缓冲区,然后调用事件标志组发送函数OSFla
5、gPend发送置位信号。 GPS任务和定时器ISR决定GPRS任务能否进入就绪状态,本设计中利用OS_FLAG_GRP事件标志组启动GPRS任务【4】,具体步骤是:利用OSFlagCrea函数创建一个事件标志组:Flag_Gprs=OSFlagCreat(0x00,&err);在GPS任务中调用事件标志组发送函数,给Flag_Gprs第1标志位发置1信号:OSFlagPost(Flag_Gprs,0x01,OS_FLAG_SET,&err);在定时中断中调用事件标志组发送函数,给2标志位发信号量1:OSFlagPost(Flag_Gprs,0x02,OS_FLAG_SET,&a
6、mp;err);在GPRS任务中调用事件标志组等待函数:OSFlagPend(Flag_GpS,0x03,OS_FLAG_WAIT_SET_ALL+OS_FLAG_CONSUME,0,&ERR)。 当两个信号量都为1时,表示GPS 任务和定时中断都有信号到来,由于等待列表中任务的等待类型为OS_FLAG_ SET_AND,经过逻辑与运算后为1,启动GPRS任务,GPRS任务对共享缓冲区的数据块进行处理后打包,向上位监控中心发送定位信息数据;当两个信号量有一个为0时,GPRS任务会一直等待事件的到来。等待时间可以设置,防止因为等待事件没有发生而无限期地等待。GPS任务、GPRS任务和IS
7、R之间通信如图3所示。 GPS任务生成定位数据块在共享缓冲区,由显示输出任务和GPRS发送任务使用,由于是共享资源,设计了一个互斥信号量,当有任务需要访问共享缓冲区时,必须调用OSMutexPendJ( )获得互斥信号量才能访问共享数据块,访问结束后,通过调用OSMutexPost()释放该信号量,便于其它任务访问。2 应用程序设计2.1 主程序设计 系统启动后,首先执行主函数,初始化ARM硬件,然后启动C/OS-II操作系统,通过OSTask Create()调用函数创建启动任务,最后调用函数OSStart(),执行启动任务。2.2 启动任务设计启动任务时首先创建各分任务, 然后建立通信工具
8、完成任务间通信,调用OSSemCreate()、OSM-boxCreate()、OSMutexCreate()等相关函数,创建信号量邮箱等通信工具,代码如下:void TaskStart(void*pdata)OS_ENTER_CRITICAL( );/*关闭中断*/ /设置uC/OS-II时钟中断向量OS_EXIT_CRITICAl。( );/*开中断*/OSStatlnit();/*初始化统计任务*/系统硬件初始化Timerlnit();/*初始化定时器*/LCDlnit();/*初始化LCD*/GPSlnit();/*初始化GPS*/GPRSlnit();/* 初始化GPRS*/ /创建
9、其他任务Sem=OSSemCreate(0);SemX=OSMutexCreate(2,&err);/*创建信号量*/Mbox=OSMboxCreate(void*)0);/*创建邮箱*/Flag_Gprs = OSFlagCreate(0,&error);OSTaskDel(OS _PROI_SELF);/*删除自己*/2.3 其它任务 本系统任务较多,这里主要介绍GPS采集任务TaskGPS()和GPRS通信任务TaskGPRS()。GPS任务采用串口中断方式,首先OSSemCreate函数创建信号量Gpssem= OSSemCreate(0),串口中断服务子程序向GPS任
10、务发送同步信号量OSSemPost(Gpssem);GPS任务通过调用函数 OSSemPend(Gpssem,0,&error)获取串口中断服务子程序发出的信号量,在获得该信号量之后,对串口数据进行分析处理,将处理后的数据放入一个共享缓冲区。显示任务和GPRS任务通过调用OSMutexPendJ()函数获得互斥型信号量来对共享数据区进行访问,读取数据后,调用函数OSMutexPost()释放该信号量。 GPRS任务等待读取GPS任务,定时器ISR给事件标志组对应标志位发置1信号,GPRS任务就绪,在收到置位信号后得到CPU控制权,调用相应的函数对共享缓冲区的定位数据进行处理打包,之后向监控中心发送数据信息,任务流程如图2、图3所示【5】。3 结语本文设计的GPR/GPRS 车载终端系统,利用嵌入式操作系统C/O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出售私有住房合同标准文本
- 出口酒水合同标准文本
- 农村买宅子合同标准文本
- 书法购销合同样本
- 人工挖孔桩合同样本
- 公司整体转让协议合同标准文本
- 乡镇化粪池清理合同样本
- bt项目施工合同范例
- 出口包装购销合同标准文本
- 中天置地合同标准文本
- 2024年银行考试-兴业银行笔试参考题库含答案
- 山东省潍坊市2023-2024学年一年级下学期期中质量检测数学试题
- 安徽省合肥市五十中天鹅湖校区2023-2024学年七年级下学期期中数学试题(无答案)
- 功能无机材料材料的表征课件
- (高清版)TDT 1055-2019 第三次全国国土调查技术规程
- 肿瘤科中医护理
- 2024年上海英语高考卷及答案完整版
- 重症医学科镇静镇痛病例分享
- 小学创客课件智能台灯
- 地勘查单位安全标准化规范钻探工程
- Access2016数据库应用技术教程
评论
0/150
提交评论