交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。BootLoader是系统加电启动运行的第一段软件代码,类似于PC机的BIOS加上硬盘MBR中的引导程序。它可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核或用户应用程序准备好合适的环境。Linux操作系统的移植是将Linux内核经过重新的剪裁、编译后移入到S3C2410A上。下面主要阐述各模块驱动和应用程序的编写。
3.1 GPS定位功能实现
GPS模块软件设计的基本思想如下:首先接收完整的NMEA0183语句,然后提取相关的数据(时间、经纬度、速度),再将这些数据送去显示或者发送出去,并且可以保存,以便日后查看。
由于GPS模块是通过串行口1与S3C2410A进行通信的,因此本文设计了Linux系统下相应的串行口通信程序。串口程序设计具体步骤如下:
(1)串行口1的初始化:设置串行口1的通信方式为8位数据位,1位停止位,无奇偶校验位。波特率为4 800 b/s。
(2)一帧一帧接收ASCII码字符信息。
(3)对每一帧ASCII码字符信息进行数据处理。
在数据处理过程中,针对需要的定位信息要求,设计了如下的串行通信思想:
①以“$GPRMC”为过滤条件,接收定位语句。
②在“$GPRMc”之后的59个字符为有用的信息,所以用“59”作为判断定位语句完整的依据。
③在数据接收的过程中往往会有两种情况,一种是每帧会得到一个以“$GPRMC”开头的完整语句,另一种是上一帧的后半部分在加下一帧的前一部分共同组成的完整定位语句。
3.2 GPRS通信模块实现
GPRS模块是借助GPRS无线网络实现数据的无线传输,从而在不同的车辆或车辆与控制中心之间架起沟通的桥梁,所以软件的功能主要是建立无线连接,按照GPRS通信协议传输数据。
GPRS模块的通信主要是通过串口驱动实现,在嵌入式Linux内核中已经提供了对串设备的支持,因此在配置内核编译选项时,只需要选中对串口设备的支持,就可以实现对GPRS模块的串口数据通信功能。为了实现与Internet的通信,还需要在配置内核编译选项时选中PPP和TCP/IP协议。这样一旦网络连接建立,就可以使用应用程序来实现网络数据的通信。
本系统数据链路层采用PPP协议,它是一种面向字符的协议,是为在两个对等实体间传输数据包连接而设计的,使用可扩展的链路控制协议LCP来建立、配置和测试数据链路。用网络控制协议族NCP来建立和配置不同的网络层协议,并且允许采用多种网络层协议。一个PPP会话分四个步骤:建立连接、连接质量控制、网络层协议配置和连接终止。
嵌入式Linux系统内核源自于Linux内核,并保留了对TCP/IP以及其他的网络协议的支持。在嵌入式Linux系统上编写网络应用程序与在Linux上编写网络应用程序没什么大区别,通常只需要做很小的修改就可以移植到嵌入式Linux系统上。至此,GPRS模块完整地集成到嵌入式终端中。
3.3 CAN模块实现
CAN总线驱动程序要完成的报文发送、接收等任务都是围绕CAN总线控制器展开的,因此驱动程序主要是对控制器MCP2510内部寄存器进行操作。CAN总线控制器MCP2510的初始化按照以下步骤进行:
(1)软件复位,进入配置模式;
(2)设置CAN总线波特率;
(3)关闭中断,设置ID过滤器;
(4)切换MCP2510到正常状态;
(5)清空接收和发送缓冲区;
(6)开启接收缓冲区,开启中断。
4 结 语
该系统不仅能够通过GPS和GPRs实现车辆定位以及车辆与控制中心之间的数据通信,还能够通过CAN总线检测汽车主要技术参数,为交通道路的智能管理以及汽车的安全驾驶提供了可靠保障。