1 引言
实时操作系统(RTOS)是嵌入式应用软件的基础和开发平台,应用程序都是建立在它之上。实时嵌入式操作系统的种类繁多,大体上可分为两种:商用型和免费型。商用型的实时操作系统功能稳定、可靠,有完善的技术支持和售后服务,但价格昂贵。免费型的实时操作系统在价格方面具有优势www.cechina.cn,目前主要有 Linux、μC/OS 等。
与其它嵌入式操作系统相比,嵌入式 Linux 具有开放源代码、高可靠性以及强大的网络功能等优势,因此选用了嵌入式 Linux 系统作为移动终端的软件平台。
2 车辆监控系统概述
车辆监控系统是融全球定位技术(GPS)、地理信息技术(GIS)和通用分组无线业务(GPRS)于一体的高科技系统,由移动终端、GPRS 网络和监控中心组成[1]。移动终端安装在各个移动车辆上,其上的 GPS 接收器实时采集卫星定位信息,然后通过串口 1 传送给 ARM 处理器。ARM 处理器先解算出有用的数据(经纬度、速度、状态等),然后按照 TCP/UDP 协议的格式封装成 TCP/UDP 数据包,接着加上 IP 报头和报尾封装成 IP 数据报。由于 ARM 处理器与 G
由此可见,移动终端的核心功能是接收 GPS 信号、处理 GPS 数据以及通过 GPRS 网络与监控中心进行通信(包括向监控中心发送定位信息和接收监控中心的指令)。
3 移动终端软件系统的设计
3.1 总体设计
在移动终端上,软件系统主要由三个部分组成:GPS 信号接收程序、GPS 数据处理程序和 GPRS 通信程序。在嵌入式 Linux 系统平台下,移动终端的软件系统结构如图 1 所示。
图 1 移动终端的软件系统结构
3.2 GPS 信号接收程序
对于移动终端,它的第一个任务就是接收 GPS 信号。在嵌入式 Linux 系统平台下,GPS 信号接收程序的层次结构如图 2 所示。
图 2 GPS 信号接收程序的层次结构
其中,tty 层、N_TTY 行规程(Line Discipline)层和低层驱动程序是嵌入式 Linux 系统中串行通信驱动模块三个固有的逻辑层,这三层之间有相互调用的接口函数。嵌入式 Linux 系统提供了多种行规程供各类设备进行选择,如:TTY 行规程(N_TTY)用于连接终端输入驱动设备和终端显示驱动设备,而 PPP 行规程(N_PPP)用来连接终端驱动设备和网络驱动设备。GPS 信号接收程序使用了 N_TTY 行规程,GPS 接收器接收到的数据必须经过 N_TTY 行规程模块进行规范处理。低层驱动程序用来直接对硬件进行操作,而 flip_buffer 是低层驱动程序和 N_TTY 行规程之间的高速接口,它保存 GPS 接收器接收到的数据。
在嵌入式 Linux 系统中CONTROL ENGINEERING China版权所有,内核给接在串口 1 上的 GPS 接收器提供了一个设备节点 /dev/ttyS0 以及标准的文件系统接口[2]。这样,GPS 信号接收程序对设备节点 /dev/ttyS0 的操作就会被内核映射成对 GPS 接收器的操作。当 GPS 接收器接收到卫星信号时控制工程网版权所有,会触发低层驱动程序事先注册到系统中的中断处理函数,从而调用函数 receive_chars( ) 把数据填充到 flip_buffer 中,然后调用函数 tty_flip_buffer_push( ) 将数据传递给 N_TTY 行规程模块。N_TTY 行规程模块中的函数 n_tty_receive_buf( ) 对数据进行规范化处理后将其存入 tty 缓冲