新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于嵌入式ARM-Linux的GPS智能终端设计

基于嵌入式ARM-Linux的GPS智能终端设计

作者:时间:2009-08-03来源:网络收藏

2.2.1 ARM主控模块
AT91RM9200的串口UART2和UART3分别与CDMA模块、模块通信,在实际通信时两路连接都加有LVTTL电平到RS 232电平的转换电路。AT91RM9200接收模块从串口3发出的位置信息,解析出其中有用数据进行封装,然后以规定格式通过串口2交给CDMA模块,通过CDMA网络接入Internet网最终送至ITS监控中心;接收并解析ITS控制中心发来的短消息命令,按命令进行上传定位等操作;把系统运行状态及ITS控制中心发来的信息在液晶屏上显示出来。
2.2.2 CDMA通信模块
CDMA模块是整个系统的通信基础,中采用Fidelix公司的CDMA通信模块FD810。该模块内嵌的高通Qualcomm MSM6025芯片,除支持基本的通话和SMS短消息外,还支持CDMA20001x无线数据传输。高速上下行速率与大缓存,数据传输速率高达153.6 Kb/s,可通过AT命令远程控制内置TCP/IP协议堆栈。DTGS-800与AT91RM9200通过串口UART2实现数据的收发和AT指令的操作。
2.2.3 模块
接收模块选用芬兰Fastrax公司的iTrax100。该模块支持NMEA0183和Sony ASCⅡ协议的数据格式。GPS模块通过串口3将数据以固定的帧格式发送至AT91RM9200。GPS模块需要配备专门的GPS天线接收GPS卫星信号。一般在比较开阔的地区,需接收到3颗以上的GPS卫星信号才能进行准确定位。
2.2.4 存储器系统
存储器系统采用4 MB NOR FLASH,64 MBNAND FLASH和32 MB SDRAM。NOR FLASH通过16位数据总线与CPU交换数据,用来存储Uboot,Linux内核、文件系统;NAND FLASH存储应用程序,作为系统的数据存储器,如加载电子海图等。为充分发挥32位ARM处理器的数据处理能力,选用2片16位的HY57V281620HG并联,以构建32位SDRAM与ARM交换数据。SDRAM在系统中主要用作程序的运行空间、数据及堆栈区。
首先,通过JTAG口将Uboot、Linux内核、文件系统烧写到NOR FLASH,将应用程序烧写到NANDFLASH。在系统启动时,CPU首先从复位地址0x0处读取启动代码,并将存有引导程序Uboot的NORFLASH存储器配置到:Bank0,即AT91RM9200的NCS0引脚接至NOR FLASH芯片AT49BV322AD的CE端,这样就可以从NOR FLASH启动Linux操作系统。


3的软件
Linux系统只需引导程序、Linux微内核、初始化进程3个基本元素,移植Linux,就是使实时内核能在其他处理器(CPU)或微控制器(MCU)上运行。将嵌入式Linux移植到AT91RM9200平台上,一般需要4个步骤:下载源码和建立交叉编译环境,配置编译内核,制作文件系统,下载和调试内核。
3.1 应用程序
应用程序包括Uboot启动代码、串口设备驱动程序、CDMA网络数据传输程序、GPS串口通信程序等。
(1)系统加电后复位;
(2)Uboot初始化CPU,SDRMA,分配地址空间等;
(3)Uboot把Linux内核的压缩文件解压到SDRAM中,同时Uboot把控制权移交到Linux。
Linux的内核有在FLASH存储器上直接运行和加载到内存中运行2种工作方式。这里采用的FLASH存储器运行方式相对较复杂,但运行速度更快;
(4)开始执行SDRMA中的代码,Linux内核初始化,完成堆栈和中断的分配等;
(5)加载串口驱动模块,完成串口的初始化;
(6)运行CDMA网络数据传输程序,通过CDMA网络与Internet进行连接;
(7)运行GPS串口通信程序,通过串口将GPS数据送至AT91RM9200。
至此,已建立了从GPS数据采集到数据传输的完整的嵌入式监控系统。
3.2 无线接入网络程序
终端由CDMA网络接入Internet后,通过互联网进行数据传输。系统上电和载入Linux后,首先初始化CDMA模块,进行端口设置和波特率设置(115 200 b/s);然后进入拨号等待状态。由于该终端在功能上映射为无线Modem,所以登陆网络需进行PPP拨号连接,接入号为#777,用户名和密码均为CARD。启动程序后,确认是否拨号成功,若成功拨号,则调用GPS串口通信程序和网络数据传输程序;最后使用Internet结束后,关闭无线连接。
3.3 CDMA网络数据传输程序
在Linux操作系统下,监控终端通过CDMA网络与Internet连接,将数据上传到监控中心。套接字Socket是许多操作系统网络编程的通用API,是介于网络应用层和传输层之间的编程接口。套接字提供了访问下层通信协议的大量系统调用和相应数据结构,进程在Linux上的网络通信过程就是使用套接字传输数据的过程。,文中介绍的Socket通信采用面向连接的TCP协议。
客户端和服务器端的TCP应用程序流程如图3所示。客户机部分先由Socket()创建本地套接口,给服务器端套接口地址结构赋值;用Connect()函数使本地套接口向服务器端套接口发出建立连接请求,经3次握手建立TCP连接;若连接建立成功,则用Send()和Recv()函数与服务器通信;通信结束,用Close()关闭套接口。
服务器部分由Socket()创建套接口,并给套接口地址结构赋值;调Bind()函数绑定套接口、用Listen()函数在该套接口上监听请求;当Accept()函数接受请求,产生新的套接口及描述字,并与客户端连接;在用Fork()函数派生新的子进程与客户端通信,主进程继续处理其他请求。
3.4串口通信程序
GPS串口通信程序是对采集到的GPS数据和车辆状态数据进行解析;对时间、经度、纬度、速度及超速报警等数据解析,并以固定格式通过串口3传送到AT91RM9200。GPS模块的工作流程如图4所示。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭