基于UCOSII的车载定位系统软件设计

2017-11-20 12:06潘承毅李韦鹏
电脑知识与技术 2017年26期
关键词:软件设计定位

潘承毅+李韦鹏

摘要:该文基于UCOSII嵌入式操作系统基础上,设计多线程进行定位软件架构。软件架构包括MCU对GPS模块信息的获取,摄像头数据的获取以及通过4G模块进行数据传输、以及系统电源管理。系统测试表明,该文软件设计能有效地将GPS定位数据、摄像头数据以及其他监控数据有效的传输到监控中心,软件的设计可靠,运行稳健。

关键词:车载GPS; UCOSII; 定位; 软件设计

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)26-0246-01

车载GPS系统对车辆的安全及监控及其重要,一方面能及时监控车辆的位置,一方面能提供交通事故发生前的信息。因此,当前的车辆大多数都装载有GPS监控系统。GPS监控系统一般收集车辆的位置信息、路况信息以及相关的环境信息等,然后通过无线网络发送到指定的监控中心。

由于车载GPS系统需要提供是信息和工作逻辑不是很复杂,从节约成本和化简开发难度,采用UCOSII嵌入式操作系统作为软件开发基础已经能满足要求,此外UCOSII的内核代码量小,需要的内存和flash程序存储空间不大,同时还很方便移植,基于以上诸多优点,本文采用UCOSII作为操作系统进行软件设计。

1 硬件设计

系统的硬件基于STM32F103开发板进行,STM32F103芯片内集成3个串口,512KB的flash存储空间,64KB的RAM,12位的ADC和DAC转换模块。本文将其中串口1用于读取GPS模块的信息,读取的频率为1Hz,串口2是用于对4G通讯模块的控制和数据的发送。为了简化代码和电路图,摄像头模块采用串口摄像头PTC08,其像素30万,提供的图片格式为QVGA(320*240),通过串口3对PTC08进行相关的摄像控制。系统的框架如下:

2 软件设计

由于STM32F103的片上flash存储器和RAM存储器的容量相对一般的8位32位的单片机的存储器大,比较方便嵌入式OS的移植。本文选用UCOSII作为应用程序开发的基础,因为UCOSII的内核小,功能相对完整,很适合作为GPS终端的操作系统。

基于UCOSII的软件架构分为三个层次,上层为应用层,即用户代码,用于实现具体的特定的功能。中层的代码分有三类,第一类为与处理器无关的代码,其大多数是UCOSII的内核代码比如任务切换、队列管理、内存分配与释放等,第二类为与应该程序相关的配置文件,比如任务的优先级配置,任务数量的配置以及内存池的配置等。第三类代码为与处理器有关的代码,其中OS_CPU.H 包含与处理器相关的常量、宏及结构体等的定义,OS_CPU_C.c 是多任务栈初始化等与处理器相关的代码,OS_CPU_A.asm 是汇编语言编写的启动任务、任务切换等函数。下层即为硬件层,主要是设置访问处理器寄存器、I/O、定时器等相关的代码。

UCOSII的内核提供事件控制块、事件标志组、内存区域块、任务控制块以及内存区域块,任务优先级为0到63,每个任务占用一个优先级。最低优先级的任务为系统自动创建的等待空闲任务,该任务只是简单的执行一个变量自增操作。

任务一般是一个带无线循环的函数,没有返回值。任务的创建是通过OSTaskCreat()或者OSTaskCreatExt()来实现。任务创建,内核分配一个空闲的任务控制块(TCB)给任务,之后对TCB的各个域进行赋值,对任务的堆栈进行初始化,其中,任务的开始代码地址被压入堆栈,为该任务的运行做充分准备。就绪表和就绪组做了适当的处理,根据任务的优先级进行了设置。任务执行完成后也可以通过调用OSTaskDel()进行删除。

任务创建之前先要调用OSInit()初始化内核,任务创建好后,调用OSStart()开始启动多任务。在ucosii中任务状态分为睡眠、就绪、等待、运行、中断五个状态。

本系统创建了4个任务,第一个任务是基本的初始化,即对温度传感器,加速度传感器以及CPU相应的寄存器进行设置。初始化设置结束后,定时采集温度数据和加速度的数据,然后上传到监控中心。

第二个任务是GPS模块控制任务,任务的初始对GPS进行加电及其初始化设置。设置结束后,对GPS数据进行定时的接收,丢弃其他的格式的数据,只保留GPS 的NMEA-0183协议中的RMC格式。然后将数据已文本的方式保存到发送缓存区。

第三个任务为无线4G模块控制任务,任务的开始对4G模块进行初始化设置,等待4G模块启动正常后,对4G模块进行无线连网设置,之后进入无限循环,在无限循环中定时对数据发送缓存区进行数据发送到监控中心。

第四个任务是摄像头控制任务,任务开始对摄像头进行初始化,之后的无限循环代码中,根据监控中心的需要对摄像头进行拍照操作或录像操作,然后读取摄像头的拍照数据或录像数据,并将数据放到发送缓存中,然后发送消息通知4G模块控制任务对发送缓存中的数据进行发送。

3 测试验证

本系统的测试主要是通过监控中心的数據接收与终端上传的信息是否相符合,测试表明本终端系统工作的稳定,数据传输准确,及时地将GPS信息上传到监控中心。下面是监控中心收到终端发回来的GPS信息的RMC格式:

4 结论

本文基于嵌入式操作系统ucosII进行车载定位系统的软件架构进行设计,性能可靠,能很好地满足车载GPS终端的各种功能要求。当然本文的设计还有一些不足,由于ucosII是开放源代码,为系统将来进一步提升和代码优化提供了便利。

参考文献:

[1] Jean J.Labrosse. uC/OS-II源码公开的实时嵌入式操作系统[M], 邵贝贝,译. 中国电力出版社,2001.

[2] 刘承广, 常宇键, 杨卫东,等. uC/OS-II在车载GPS移动终端中的应用.微计算机信息[J], 2005(2):103-104.endprint

猜你喜欢
软件设计定位
定位的奥秘
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
找准定位 砥砺前行
基于单片机SPCE061A的字幕机点阵式字母电子显示屏的设计制作
基于RFID的室内无线定位识别系统
青年择业要有准确定位