精品毕业设计基于嵌入式Linux的车辆稽查系统设计书定文档格式.docx
- 文档编号:20777033
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:29
- 大小:143.30KB
精品毕业设计基于嵌入式Linux的车辆稽查系统设计书定文档格式.docx
《精品毕业设计基于嵌入式Linux的车辆稽查系统设计书定文档格式.docx》由会员分享,可在线阅读,更多相关《精品毕业设计基于嵌入式Linux的车辆稽查系统设计书定文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
基于嵌入式Linux的车辆稽查系统可以有效解决上述问题,用户只要一个手持终端,就可以进行路面车辆的轻松稽查,方便快捷,并且可以和数据库实时同步。
该系统成本低廉、功耗低、集合了开源Linux技术,具有推广使用价值和借鉴意义。
1.3特色和创新点
虽然嵌入式Linux并不是一个新鲜的话题,但是本系统在设计的时候充分考虑到了用户成本、系统稳定性、用户的需要等内容,使得本系统具有以下特色和创新点。
●充分采用开源技术。
终端大部分技术均采用了开源技术,包括引导程序、Linux操作系统、图形界面开发框架,服务器也采用了开源的Linux作为服务器。
●成本低廉。
由于采用了开发技术,可以减少成本,而终端的设计本身就是立足在高性价比的ARM芯片上,而上网是采用GPRS上网,可以减少大部分的通信费用。
●高安全性。
采用DES加密算法实现服务器和终端的安全通信,并且用户需要认证才可以接入数据库。
●集中控制。
终端采用GPS技术,使得服务器可以监控所有终端的状态、位置。
●系统的可维护性和升级。
大部分嵌入式系统在完成产品推出后,系统就难以升级,而本系统由于有强大的Linux做为操作系统,可以不断地添加外部设备,充分利用开源技术,并且可以保持与时俱进,进行产品的升级。
由于采用了中央数据库,从而可以保证系统的可维护性。
●用户界面友好。
大部分嵌入式设备的图形界面均相当简单,主要是满足了不同的需求,而本系统采用的图形界面框架,可以设计出和Window上相似的图形界面,相比其他嵌入式产品来说,友好的图形界面是一大特色。
●可规模生产,具有产业价值。
嵌入式系统的一大特点就是用户量大,同样,本系统一旦设计完成通过调试,可以大规模生产,并做为推广之用。
●自主知识产权。
2任务概述
2.1目标
本系统的目标是实现一个基于嵌入式Linux技术、GPRS技术、GPS技术、加解密技术的手持终端设备和基于Internet的服务器系统。
系统采用C/S模型,可以解决路面车辆信息的查询和数据库更新、拨打电话等功能,并具有高安全性和全网监控、全球导航功能。
2.2用户特点
本系统面向的用户属于交通稽查部门或者交警相关部门人员。
这些人员对计算机的熟悉程度较低,因此系统应该具有友好的使用界面和稳定性。
对于服务器可以由相关专业人员维护。
2.2系统特点
1.终端性价比高。
因为采用了arm9芯片和Linux操作系统,在提高终端性能的同时降低价格。
并且GPRS上网费用低,永远在线,按流量计费也进一步降低了费用,解决了费用问题。
2.终端功能多。
该系统集成查询、拨打电话、发送短消息功能于一身,并且提供了一个PDA界面,可以获得很多的桌面应用软件,比如上网、文本编辑器等。
在后续的开发中,可以加上无线局域网、蓝牙功能,与小型打印机相连,实现增开罚单、缴费开单等功能。
3.终端携带方便。
本系统体积小,可以随身携带,可以当做通用的智能手机那样使用,因此适合街道交通警察查询车辆情况。
4.高安全性。
服务器和终端的通讯是加密的,可以保证通信的安全。
用户登录采用认证系统,可以保护本地数据库。
服务器可以监控所有终端的状态信息。
3需求分析
3.1功能需求
服务器
全网监控
终端管理
数据库管理
GPS
导航
手持终端设备
基于嵌入式Linux车辆稽查系统
图形界面
数据库更新
车辆查询
拨打电话
图3-1系统功能结构图
系统的功能结构图如图2-1所示。
3.2性能需求
终端响应时间:
<
0.8秒
持续供电:
>
3天
可靠性:
365天
服务器可支持终端:
500台
3.3成本需求
终端单价:
600元
3.4安全性需求
由于车辆稽查数据库为保密性数据库,非合法人员不能使用、窃取数据库数据,因此,在通信时候必须保证安全性。
本系统通过用户认证、通信加密等方式来实现安全性。
4.总体设计
根据需求分析结果,总结出车辆稽查系统需要满足的一些特性,分别为:
低成本、高安全、界面友好、性能稳定、具有可扩展性、服务器并发量大。
根据这些特点,作者在此提出了如下系统结构,采用C/S模型。
如图4-1所示。
图4-1系统总体结构图
终端采用ARM9芯片,带有GPRS模块可以无线上网,以触摸屏做为数据输入和显示,并具有GPS功能。
采用Linux作为操作系统和C/C++编程语言,借助QT框架,提供了友好的图形界面。
查询数据以TCP/IP数据包的形式输送给GPRS网络。
GPRS网络通过无线基站,将收到的数据包通过其网关(GGSN)送入到因特网中,而因特网将数据包传送到服务器,供服务器处理。
稽查系统服务器采用红帽Linux企业版做为操作系统,以Oracle作为后台数据库,以java作为编程语言。
主要负责接收终端发送过来的TCP/IP数据包并执行数据库查询或更新操作,并且返回给果,同时提供图形界面以支持对终端的管理工作、监控工作和对数据库进行操作。
在实际运行的时候,服务器可以采用专线接入到GPRS网络中,这样可以避免重要数据库在因特网上的传送。
5.终端详细设计
5.1终端硬件设计
GPS模块
终端硬件设计如下图所示,其中电源电路、复位电路等没有标出来。
下图主要是列举了一些重要的功能,考虑可扩展性,可以在未来接上WIFI和蓝牙、红外、摄像头等接口。
5.1.1处理器
终端采用三星公司的S3C2410芯片。
S3C2410是一款基于ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用。
运行的频率可以达266MHz。
ARM920T核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。
其中MMU可以管理虚拟内存,高速缓存由独立的16KB指令Cache和16KB数据Cache组成。
S3C2410丰富的接口电路为以后的扩展性打下了基础。
S3C2410外设概览:
Ø
支持STN和TFT的LCD控制器;
SDRAM控制器和外部存储器接口;
NandFlash控制器;
3个通道的UART,其中一个通道可作为IrDA红外通讯接口;
4个通道的DMA;
4个具有PWM功能的定时器和一个内部时钟;
8通道的10位ADC;
四线电阻式触摸屏接口;
IIS音频接口;
2个USB主机接口,1个USB设备接口;
1个IIC总线接口和2个SPI总线接口;
SD卡接口;
看门狗定时器和RTC实时时钟;
117位通用I/O口和24位外部中断源。
5.1.2GPRS模块
GPRS模块采用PTM100模块,该模块兼容标准的AT指令集,内嵌TCP/IP协议和彩信功能和GSM功能,可以很好地满足我们的实验要求。
处理器和GPRS模块通信采用AT指令,部分AT指令如下:
1.ATE0用于关闭GPRS模块的串口回显
2.ATZ测试是否正常工作
3.ATD+电话号码用于拨打电话
4.AT+CMGF=1、AT+GMGS=“电话号码”用于发送短消息
5.AT^CIPSTART=TCP,对方IP,端口号建立TCP连接
6.AT^CIPSEND=字符串发送TCP数据
7.AT^CIPCLOSE关闭TCP连接
5.1.3GPS模块
GPS接收模块选用芬兰Fastrax公司的iTrax100。
该模块支持NMEA0183和SonyASCⅡ协议的数据格式。
GPS模块通过串口将数据以固定的帧格式发送至处理器。
GPS模块需要配备专门的GPS天线接收GPS卫星信号。
一般在比较开阔的地区,需接收3颗以上的GPS卫星信号才能进行准确定位。
其输出语句采用的是NMEA0183即ASCII格式码,包括GGA、GSA、RMC、GSV、RMC、RMT、VTG等。
这些定位语句不仅给出了位置、速度、时间等信息,而且指出了当地的卫星接收情况。
根据项目的实际需求,本设计只提取GGA数据。
GGA数据的数据格式为:
所有的信息由$开始,以换行结束,紧跟着$后的五个字符解释了信息的基本类型,多重的信息之间用逗号隔开。
其中〈CR〉代表回车控制符,〈LF〉代表换行控制符。
具体说明如下:
$GPGGA,<
1>
<
2>
3>
4>
5>
6>
7>
8>
9>
10>
*checksum<
CR>
LF>
UTC时间:
hhmmss.sss格式;
定位状态:
A=有效定位,V=无效定位;
纬度ddmm.mmmm格式;
纬度半球N(北半球)或S(南半球);
经度dddmm.mmmm格式;
经度半球E(东经)或W(西经);
地面速率;
地面航向;
UTC日期,ddmmyy(日月年)格式;
磁偏角;
5.2终端软件设计
拨打电话、发送短信
终端软件由引导程序、操作系统、应用程序组成。
而应用程序借助操作系统,实现了车辆查询、更新、拨打电话、加解密、图形界面显示等功能。
三者关系如下:
5.2.1终端引导程序
BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
对于嵌入式系统来说,常用的Bootloader很多,有u-boot、vivi、Blob、RedBoot、ARMBoot等等,也可以自己开发制作Bootloader,为了减少软件开发周期,应该选择开放的Bootloader,通过修改部分代码进行移植。
u-boot是德国DENX小组开发的用于多种嵌入式CPU的bootloader程序,它可以运行在基于ARM、PowerPC、MIPS等多种嵌入式开发板上。
由于其开源性,并且可移植的平台多、功能丰富、稳定性好,本系统使用u-boot做为启动引导程序。
5.2.2操作系统
随着消费类电子产品的快速发展,嵌入式操作系统得到了广泛的应用。
目前,主流的嵌入式操作系统有Vxworks、WindowsCE、uc/OS-II、uClinux、EmbeddedLinux等。
本系统采用嵌入式Linux为软件开发平台,采用了2.6内核,沿袭了主流Linux的绝大部分特性,是一个完全免费的、开放源代码的系统,用户可以根据用户自己的不同要求对操作系统进行裁减,以节省不必要的开销。
另外,Linux系统开发资源丰富,拥有丰富的驱动程序、应用程序和开发工具,能够根据用户的需要,移植到嵌入式Linux系统中。
开源的操作系统和驱动程序,为终端的开发缩短了周期。
5.2.3应用程序
应用程序采用C和C++混合编程。
主要完成系统的大部分功能,利用Linux系统调用,可以直接通过串口和GPS、GPRS通信,从而完成无线上网、全球导航等功能,利用GSM功能,还可以实现拨打电话、发送短息等等。
利用QT框架,可以编写图形界面,将有关数据以图形界面显示出来。
应用程序与服务器的数据需要经过加解密,因此需要借助加解密算法进行数据的封转,和服务器的通信需要遵循一定的协议,这个协议是架设在TCP协议之上的应用层协议,是本系统专有的。
应用程序模块图如图5-3所示。
注意如果需要和服务器通信的数据一般需要加解密,而数据如果本地使用,则不需要加解密。
GPRS/GPS通用函数
5.2.3.1图形界面
图形界面采用QTE。
QT/Embedded是一个为嵌入式设备上的图形用户接口和应用开发而定做的C++开发包,它通常可以运行在多种不同的处理器平台上。
运行Qt/Embedded所需要的系统资源可以很小,只要求一个较小的存储空间和内存。
Qt/Embeded可以运行在不同的处理器上部署的Linux系统。
图形界面采用QT框架开发,而有关的GPS导航功能、查询车辆功能、开罚单功能、打电话、发信息等终端功能依赖函数实现,属于面向对象和面向过程混合编程。
这些封转好的函数如下表所示:
函数原型
功能描述
intlogin(char*name,
char*passwd)
功能:
用户登录
参数:
name存放用户名称,passwd存放密码
返回值:
成功返回0,失败返回-1,错误原因存放在result变量中
intsearch(char*number,
char*buf,
intlen)
查询车辆
number存放车辆号码,buf存放查洵得到的数据,len存放buf的长度
intupdate(char*number,
char*item,
intvalue)
更新数据库车辆信息,供开罚单使用
number存放车辆号码,item指定要更新的条目,value是对应的值
intget_gps(char*buf,
int*len)
功能:
取得GPS定位信息
buf存放GPS定位信息,len存放buf长度
voidcall(char*number)
number存放电话号码
无
voidsend_msg(char*number,
发送短消息
number为电话号码,buf存放要发送的信息,len为发送信息的长度
intsend_gps(char*buf,
发送GPS定位信息到服务器
buf存放GPS定位信息,len存放buf长度
voidget_all(void**ip,
void**number,
void**name,
void**location)
取得其他终端的信息
ip为联网的终端IP表,number为手机号码表,name为名字列表,location为位置信息
5.2.3.2加解密引擎
加解密算法采用标准DES算法,分别在服务器和终端实现。
密钥管理采用数据库表进行管理,和对应的终端表连接起来。
保证每个终端的加解密信息均不一样。
密钥预先写入到终端里面,并且不可改变,由数据库统一维护。
加解密只需要三条函数
voidget_key(unsignedchar*key)
取得密钥信息
key存放密钥
voiddata_encrypt(unsignedchar*buf,intlen,unsignedchar*buf2,int*len2)
加密数据
buf存放需要加密的数据,len存放加密数据长度,buf2存放已经加密的数据,len2存放buf2长度
voiddata_decrypt(unsignedchar*buf,intlen,unsignedchar*buf2,int*len2)
解密数据
buf存放需要解密的数据,len存放解密数据长度,buf2存放已经解密的数据,len2存放buf2长度
5.2.3.4GPS/GPRS通用函数
除了Linux系统自带的API外,本系统为了操作的方便,将许多功能性的操作集成在一起,设计了一些供上层使用的函数,比如操作串口函数,与GPRS通信函数,与GPS通信函数,在这里列举了一些做为代表。
与GPRS通信的列表如下:
intinit_ttyS(void)
初始化串口为波特率115200,1个停止位,无奇偶校验和流控
成功返回0,失败返回-1
intopen_ttyS(void)
打开串口
intwriteAtCmd(char*at)
往GPRS写AT命令
at为指向AT命令字符串的指针
intreadFromTty(char*buf)
读取串口传送过来的字符,并使其以\0结束
buf为指向一定数量的字符串缓冲区
intcheckOK(char*buf)
比较buf字符串有没有“OK”
指向需要比较的字符串
有返回0,没有返回-1
intcheckCONNECTOK(char*buf)
检测TCP连接是否建立
buf指向GPRS返回的数据
intwriteData(char*data)
往TCP发送字符串data
data指向发送的字符串
intreadData(char*buf)
读取TCP传送过来的字符串
buf指向存储缓冲区
intstopEcho(void)
停止GPRS的回显功能
inttcpConnect(constchar*ip,constchar*port)
建立TCP连接
ip指向IP地址字符串,port指向端口字符串
voidtcpClose(void)
关闭TCP连接
inttty_sendMsg(char*number,char*content)
发送短信息
number指向手机号码字符串,content为发送的内容
intcheckIfLogin(char*buf)
检查是否登陆到服务器
buf为指向GPRS返回的数据
5.2.3.5LinuxAPI简要说明
在termios.h头文件里面,还有关于操作串口的API定义,Linux内核没有实现他们,主要是库函数通过调用ioctl函数来实现各种串口操作的。
本系统开发的时候会用到这些函数,这些函数是定义在termios.h文件里面。
如下:
//返回termios_p所指termios结构中的接收波特率。
externspeed_tcfgetispeed(structtermios*termios_p);
//返回termios_p所指termios结构中的发送波特率。
externspeed_tcfgetospeed(structtermios*termios_p);
//将termios_p所指termios结构中的接收波特率设置为speed。
externintcfsetispeed(structtermios*termios_p,speed_tspeed);
//将termios_p所指termios结构中的发送波特率设置为speed。
externintcfsetospeed(structtermios*termios_p,speed_tspeed);
//等待fildes所指对象已写输出数据被传送出去。
externinttcdrain(intfildes);
//挂起/重启fildes所指对象数据的接收和发送。
externinttcflow(intfildes,intaction);
//丢弃fildes指定对象所有已写但还没传送以及所有已收到但还没有读取的数据。
externinttcflus
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 毕业设计 基于 嵌入式 Linux 车辆 稽查 系统 设计