免费预览已结束,剩余45页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科生毕业论文本科毕业论文(科研训练、毕业设计)题 目:嵌入式车载电话系统 姓 名:学 院:软件学院系:软件工程系专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校外): 职称: 年 月45嵌入式车载电话系统摘要 车载电话是最经几年来随着移动通讯技术的发展和汽车的普及而逐渐发展成熟的一种新的科技产品,它的出现降低了驾驶汽车过程中接听电话所带来的危险性。本论文所讨论的系统基于现有的成熟的GSM网络平台,具有友好的人机交互接面,实现了一般移动电话的语音通话功能和短信息发送功能。系统在硬件上采用基于三星公司S3c2410处理器的嵌入式实验板,该处理器带有完整功能的MMU能够运行标准的ARM-Linux内核;GSM通讯模块采用SIMCOM公司的SIM300 GSM/GPRS三频模块。在软件方面,安装了Qtopia桌面环境,并使用Qt/Embeded设计用户界面,使用户操作更方便快捷;在嵌入式实验板上移植了SQLite轻型数据库,简化了程序设计。整个系统具有良好的可扩展性,我们可以很容易的在当前实现的系统上添加自动发送短信报警、GPRS上网等功能。关键词 GSM 嵌入式系统 车载电话 Qt/Embedded SQLite LinuxAbstract Automobile telephone is a kind of new technical product which appears along with the development of motion communication technology and the popularization of automobile,and it reduce the risk brought from the process which driver answer telephone when driving.This thesis discuss the system which is based on existing GSM network platform,has friendly graphical user interface,and realize the function of common mobile phone such as telephone conversation and send/receive short message.The hardware platform using in this system is UP-NET-ARM2410-S training board, of which the microprocessor is S3c2410,that contain complete MMU,can run standary ARM-Linux kernel; GSM module is SIM300 Tri-band GSM/GPRS module which is producted by SIMCOM Ltd.In software,Qtopia is install in training board and Qt/Embedded is used to designed GUI,to make operation more easily,besides that SQLite database is tranplant to simplify program design.This system has great expansibility, which make us more easily add new features such as wireless communications with GPRS and guarding against theft and alarm.Keywords GSM Embedded system Automobile telephone Qt/Embedded SQLite, Linux目录第一章 绪论11.1课题背景11.2国内外研究状况21.3论文研究的内容和目的2第二章 嵌入式车载电话的总体设计方案42.1嵌入式车载电话的硬件平台42.1.1硬件平台总体架构42.1.2 S3c2410处理器简介52.1.3 GSM/GPRS模块简介62.2嵌入式车载电话的软件开发环境62.2.1 Linux操作系统在ARM嵌入式领域的应用62.2.2 Gcc编译器72.2.3 Gnu make工具82.2.4 Qt/Embedded图形界面82.2.4.1 Qt/Embedded图形界面简介82.2.4.2 Qt/Embedded的交叉编译和移植92.2.4.3 Qtopia桌面系统的交叉编译和移植112.2.5 SQLite数据库的交叉编译和移植12第三章 嵌入式车载电话的软件设计与实现143.1嵌入式车载电话的软件整体框架143.2.1 SIM300模块的AT指令介绍143.2.2 GSM监听和控制模块的实现163.2.3后台进程与各个人机界面模块间通讯与数据传输的实现173.3 SQLite板上数据库系统的设计183.3.1 SQLite C/C+ API介绍183.3.2数据库中表的结构193.4用户界面的设计与实现203.4.1电话呼叫/接听模块的人机界面203.4.2短消息收发模块的人机界面213.4.3电话本模块的人机界面22第四章 实验测试结果234.1电话功能的测试234.2短信功能的测试244.3电话本功能的测试26第五章 总结28致谢29参考文献30ContentsChapter 1 Introduction11.1 Topic background11.2 Research condition21.3 Purpose and content of this thesis2Chapter 2 Design proposal of the whole system42.1 Hardware of the telephone system42.1.1 Hardware framework42.1.2 Introduction to S3c2410 processor52.1.3 Introduction to GSM/GPRS module62.2 Software development environment62.2.1 Using Linux OS in embedded system62.2.2 Introduction to Gcc compiler72.2.3 Introduction to Gnu make tools82.2.4 Qt/Embedded GUI82.2.4.1 Introduction to Qt/Embedded GUI82.2.4.2 How to cross-compile and transplant Qt/Embedded92.2.4.3 How to cross-compile and transplant Qtopia112.2.5 How to cross-compile and transplant SQLite12Chapter 3 How to design the software of the whole system143.1 Software framework143.2.1 Introduction to SIM300 and AT command143.2.2 How to control GSM/GPRS module163.2.3 How to communicatioin between each module173.3 Design of SQLite database183.3.1 Introduction to SQLite C/C+ API183.3.2 Table in database193.4 Design of UI203.4.1 UI of telephone module203.4.2 UI of SMS module213.4.3 UI of phonebook module22Chapter 4 Test result234.1 Test the function of telephone module234.2 Test the function of SMS module244.3 Test the function of phonebook module26Chapter 5 Summary28Ackonwlegement29Reference30第一章 绪论1.1课题背景随着我国经济的发展和科技的进步,人民生活水平的不断提高,汽车和手机都已经走进平常百姓的生活之中。司机在驾车的同时以手持方式使用手机所导致的交通事故率与酒后驾车不相上下,顾而我国于2004年5月1日出台的新交通安全法对驾驶人员开车打手机做了严格的交通法律法规限制。在这种情况下车载电话的出现,兼顾了行车的安全和移动通讯的实时性,在欧美等发达国家和地区已经作为轿车的标准配置而被广泛应用。本论文基于成熟的GSM移动通信网络平台,使用GSM专用芯片设计,研制一套具有语音、短信收发等功能的车载移动电话系统。相比于一般的移动电话,车载电话具有如下几个优点:1首先,车载电话能使驾驶人员通话更加方便。车载电话系统是固化在汽车内部的,其麦克风可固定于前车玻璃左上方处,能够确保语音采集效果;利用车内音响系统作为通话听筒,音质效果好,音量大,能到达免提功能,同时也确保通话质量。其次,车载电话可实现来电自动接听设计,使驾驶者在手不离开方向盘就能方便接听电话。来电时,不仅车内液晶屏上能显示来电号码,内部的语音系统也能播报,这样使驾驶者能清楚判别来电方。再次,车载电话提供防盗报警接口,增强了车辆的防盗安全性,车载电话系统设计有可以与报警系统相连接的接口。当防盗系统感应到有未经许可的人员进入汽车内部时,便通过电话系统的接口向预存的号码自动向车主发起呼叫,确保在第一时间将车辆情况通知到车主。同时,在车主可以通过拨打车载电话,监听车辆内部声音,实现远程监控功能。同时,以后还能够升级系统,利用GPRS传输当前车辆GPS定位信息给车主,使车主能够及时了解到车辆的情况,达到预警目的。同时,车载移动电话系统也具备一般移动电话的基本功能,如通话记录查询、短消息通信、铃声设置、电话薄等。1.2国内外研究状况1目前市面上的车载电话一般分为两种,一种是本身不带通讯模块而配合手机使用的车载免提系统。如一汽 一汽-大众汽车公司生产的AudiA6高级轿车,安装了由Audi公司与德国Culmann公司合作开发的VarioCom车载电话系统。系统可兼容单频或双频、GSM或GPRS网络。使用不同的适配器可以兼容爱立信、诺基亚、西门子、摩托罗拉共28款手机。这类免提系统的特点是通过手机连线或蓝牙与手机连接实现免提功能。另一种是带有通讯模块能够实现手机通讯功能的车载电话。由于其本身带有通讯模块,能够围绕通讯模块增加许多扩展功能,比如通过电话、短信报警实现防盗等等。故而第二类车载电话常常作为辅佐功能出现在各式各样的车载信息服务系统、导航系统。经过这几年的发展,市场上的车载电话产品已经突破了原先作为汽车配件在汽车出厂时安装的局面,呈现一片繁荣的局面。如今从事车载电话研究生产的公司一般有两类:一是汽车制造商及车载电话OEM厂商,他们依然以汽车配件的形式制造、销售车载电话。比如本田公司研发的一套车载通信系统,配备在“雅阁”轿车上。该系统有具有先进的VICS系统,能够获取全日本的道路交通信息,具有通信、导航的作用。另一类是手机制造商,如诺基亚公司发布的车载通信系统将该公司的手机“63101”与部分凌志车型的语音导航仪相连接。该系统包括诺基亚提供的控制装置和插放手机的底座,控制装置与方向盘上安装的指令模块或选配的触屏导航仪连接,手机插放在隐藏于中心仪表盘中的底座上。系统启动后,手机号码本便可传送到仪表盘的彩屏上,届时可点触屏幕拨打电话。在传输的号码中最多有20个分配有语音指令,可通过语音拨打电话。将手机插放到底座后,手机可自动充电,并可通过扬声器和音响系统进行免提通话。另外,如果对导航仪屏幕上的某个区域感兴趣的话,还可以直接点该处拨打电话。这套系统价格昂贵,在300-350美元左右,并且也只能使用于“SC430”. “LX 470”,“GS 430”及“LS 430”的2003年款等车型。3 1.3论文研究的内容和目的本论文设计并实现了一套基于GSM网络的车载移动电话系统,这套系统基于博创兴业科技有限公司开发的UP-NET-ARM2410-S嵌入式教学科研平台,选用ARM-Linux为操作系统,采用Qt/Embedded编写用户界面,以实现移动电话的通话、短消息收发和电话本功能为主要的设计目标。本论文的结构如安排下:第一章为绪论,叙述了论文的研究背景及意义,论文研究的内容和市场上较为流行的同类产品。第二章为嵌入式车载电话的总体设计方案,介绍了嵌入式车载电话的硬件框架、所选用的硬件模块的优点,以及开发嵌入式车载电话软件系统所使用的工具和开发环境等等。第三章为嵌入式车载电话的软件设计和实现,具体描述了嵌入式车载电话的软件系统结构,以及各个模块的设计思路和实现。第四章为实验测试结果,展示了本系统实际演示的结果。第五章为本篇论文总结。第二章 嵌入式车载电话的总体设计方案2.1嵌入式车载电话的硬件平台2.1.1硬件平台总体架构嵌入式车载电话系统采用博创兴业科技有限公司的UP-NET-ARM2410-S嵌入式开发平台。该平台使用ARM920T内核的三星S3c2410处理器,主频为202MHz,核心板上带有64M FLASH和64M SDRAM,支持标准的ARM-Linux内核。主板上有丰富的资源和接口:8寸640*480TFT真彩LCD、触摸屏、串口、USB、IDE硬盘接口等等。ARM 嵌入式开发平台的GSM/GPRS 扩展板采用的GSM/GPRS 模块型号为SIM300,是SIMCOM 公司推出的一款GSM/GPRS 三频模块。该扩展板通过128pin的总线扩展插口与开发板连接。系统总体框架图如图1-1:图1-1 嵌入式车载电话的硬件框架图GSM/GPRS扩展板上的SIM300芯片通过扩展板上16C550串口芯片与总线相连接,处理器要控制GSM/GPRS模块时需通过总线访问16C550串口芯片再进一步访问GSM/GPRS模块。在此应用16C550 芯片,一方面是为了获得完整的MODEM 控制,另一方面也是为了获得精确的UART 波特率。2.1.2 S3c2410处理器简介三星(Samsung)S3C2410是一款著名的移动设备处理器产品,近两年由于国内嵌入式系统设计事业的迅速发展,S3C2410在国内遍地开花,市场上可以见到许多基于它的设备。S3c2410具有较强的处理能力,同时兼具低功耗和高集成度的特性。它所包含的功能模块如下2:1、内部1.8V,存储器3.3V,外部IO3.3V,16KB 数据CACH,16KB 指令CACH,MMU;2、内置外部存储器控制器(SDRAM 控制和芯片选择逻辑);3、LCD 控制器(最高4K 色 STN 和256K 彩色TFT),一个LCD 专用DMA;4、4 路带外部请求线的DMA;5、三个通用异步串行端口(IrDA1.0, 16-Byte Tx FIFO, and 16-Byte Rx FIFO),2 通道SPI;6、一个多主IIC 总线,一个IIS 总线控制器;7、SD 主接口版本1.0 和多媒体卡协议版本2.11 兼容;8、2 个USB HOST ,一个USB DEVICE(VER1.1);9、4 个PWM 定时器和一个内部定时器;10、看门狗定时器;11、117 个通用IO;12、24 个外部中断;13、电源控制模式:标准、慢速、休眠、掉电;14、8 通道10 位ADC 和触摸屏接口;15、带日历功能的实时时钟;16、芯片内置PLL;17、设计用于手持设备和通用嵌入式系统;18、1632 位RISC 体系结构,使用ARM920T CPU 核的强大指令集;19、ARM 带MMU 的先进的体系结构支持WINCE、EPOC32、LINUX;20、指令缓存(cache)、数据缓存、写缓冲和物理地址TAG RAM,减小了对主存储器带宽和性能的影响;21、ARM920T CPU 核支持 ARM 调试的体系结构;22、内部先进的位控制器总线(AMBA2.0, AHB/APB) 。2.1.3 GSM/GPRS模块简介4GSM/GPRS 扩展板采用的SIM300 GSM/GPRS 模块,是SIMCOM 公司推出的GSM/GPRS 三频模块,主要为语音传输、短消息和数据业务提供无线接口。模块为用户提供了功能完备的系统接口。60Pin 系统连接器是SIM300 模块与应用系统的连接接口,主要提供外部电源、RS-232 串口、SIM 卡接口和音频接口。GSM/GPRS 模块与微控制器间是通过串行口进行通信的,通信速率支持300b/s,1200b/s,2400b/s,4800b/s,9600b/s,19200b/s,38400b/s,57600b/s,115200b/s。模块与控制器间的通信协议是 AT 命令集,其中大部分命令是符合协议“AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version 6.4.0 Release 1997)”。AT 命令集控制接口SIM300 GSM/GPRS模块的软件部分对外提供了一个控制系统操作的 AT 命令集,通过接收来自串口发送的 AT 命令,解释并执行相应的操作,从而实现模块的相应功能。SIM300模块通信所用到的 AT 命令集包括以下几个方面:1、一般控制命令:包括 SIM 卡检测、话机状态设置。2、通话控制命令:包括拨号、自动拨号、重拨、挂机、应答、自动应答、产生 DTMF拨号音、音量控制、回声抑制等命令。3、电话簿管理命令。4、短消息收发管理命令。2.2嵌入式车载电话的软件开发环境2.2.1 Linux操作系统在ARM嵌入式领域的应用从诞生至现在,Linux发展迅速,已成为一个功能强大设计完善的操作系统,目前Linux已可以与各种传统的商业操作系统分庭抗礼,占据了市场的相当大份额。在嵌入式领域Linux同样获得了飞速发展,目前正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。将Linux作为嵌入式操作系统具有很多优点:1、系统稳定,功能张大,支持多种硬件平台。它可以非常稳定地运行在许多种体系结构的处理器上。最新的Linux内核支持工ntel x86, Motorola/IBM PowerPC, ARM,SuperH等微处理器体系结构,具有良好的移植性。2、模块化可裁减特性非常适合嵌入式系统的要求,系统完全启动只需要小到500K字节不到的目标代码,完全可以把Linux内核和root文件系统放在一张软盘上。3、自由软件可以有效降低开发成木4、文档完善,支持渠道众多。5、强大的网络功能,完全适用移动互连的嵌入式设备发展趋势。2.2.2 Gcc编译器5开发Linux应用程序,绝大多数情况下使用的都是C或C+语言,目前Linux下最常用的C/C+编译器首推GCC(GNU Compiler Collectioin),它是GUN项目中符合ANSI C标准的编译系统,不仅能够编译C、C+和Object C等语言编写的程序,更值得称道的是它还可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等等。最主要的是我们可以通过GCC交叉编译器,在I386-RedHat9.0主机平台上编译生成目标板上可以运行的程序。使用GCC编译程序时,编译过程可以细分为4个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)GCC的基本命令格式:gcc optionfilename,其中option为编译选项。示例如下: gcc o prog main.c sub1.csub2.c其中 o prog指定生成的文件为prog,如果想单独编译每一个源文件,在统一链接可以使用如下指令:gcc o main.o c main.cgcc o sub1.o c sub1.cgcc o sub2.o c sub2.cgcc o prog main.o sub1.o sub2.o前三句指令打开了-c的选项,告诉GCC只编译生成目标文件,而不进行链接,最后一句指令gcc调用ld将三个目标文件链接成prog可执行文件。除此之外,GCC还有许多编译选项,对应其强大的功能。2.2.3 Gnu make工具56 在大型的开发项目中,通常有几十到上百个的源文件,如果每次均手动键入gcc命令进行编译的话,会非常不方便,这个时候使用GNU 的make工具能够比较容易的构建一个工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写。此文件正是make正常工作的基础。所要完成的Makefile文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(多个)正确的Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。make是一个命令工具,它解释Makefile中的指令(应该说是规则),Makefile中描述了工程中所有文件的编译顺序、规则。Makefile有自己的书写格式、关键字、函数。像C语言有自己的格式、关键字和函数一样。而且在Makefile中可以使用shell所提供的任何命令来完成你想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE开发环境中都在使用,已经成为一种工程的编译方法。2.2.4 Qt/Embedded图形界面2.2.4.1 Qt/Embedded图形界面简介7Qt/Embedded,是一个专门为小型设备提供图形用户界面的应用框架和窗口系统。提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt是KDE等项目使用的 GUI 支持库,所以有许多基于Qt的X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。Qt/Embedded 以原始Qt为基础,并做了许多出色的调整以适用于嵌入式环境。它通过Qt API与Linux I/O设施直接交互,成为嵌入式Linux端口。Qt/Embedde采用framebuffer(帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。Qt/Embedde的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的Xlib/Server系统。Framebuffer是出现在2.2.x以上内核的版本当中的一种驱动程序接口。这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。framebuffer驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面:一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。Qtopia即QPE(Qt PalmtopEnvironment)是由著名的Trolltech公司基于Qt的嵌入式版本Qt/Embedded库的基础上,专门针对PDA、SmartPhone这类运行嵌入式Linux的移动计算设备和手持设备所开发的开放源码的一套应用程序包和开发库。Qtopia是基于qt/embedded程序库编写的应用程序环境,(Qtopia是Qt在Linux/embedded Linux版本里的一个application实现。)界面优美。主要应用于高端手机,pda等嵌入式系统,具有广阔的发展前景。以下就进一步介绍如何交叉编译Qte以及移植Qtopia桌面系统至实验板。2.2.4.2 Qt/Embedded的交叉编译和移植搭建Qt/Embedded 平台需要以下的源码包1、tmake-1.13.tar.gz 用于生成Makefile文件, 用在qte应用上2、qt-x11-2.3.2.tar.gz 用于生成uic文件,uic文件用于将Qt designer生成的.ui文件转换成C+源文件和头文件3、qt-embedded-2.3.10-free.tar.gz Qte的源码文件包,编译该源码包最要是为了得到libqte.so文件Qt/Embedded 平台的搭建具体步骤如下(以下的步骤是假设在/Qt目录下操作的): 第一步,解压安装包并设置环境变量tar xzvf tmake-1.13.tar.gztar xzvf qt-x11-2.3.2.tar.gztar xzvf qt-embedded-2.3.10-free.tar.gzexport TMAKEDIR=$PWD/tmake-1.13export QT2DIR=$PWD/qt-2.3.2export QTEDIR=$PWD/qt-2.3.10环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.注意: 在以下安装中,make命令执行前先执行一下make clean命令.第二步,编译Qt/Embedded。1、Build Qt2.3.2cd $QT2DIRexport TMAKEPATH=$TMAKEDIR/lib/linux-g+export QTDIR=$QT2DIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHmake clean./configure -no-xftmakemkdir $QTEDIR/bincp bin/uic $QTEDIR/bin/2、Build Qt/Embeddedexport TMAKEDIR=$PWD/tmake-1.13export QT2DIR=$PWD/qt-2.3.2export QTEDIR=$PWD/qt-2.3.10cd $QTEDIRexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g+export QTDIR=$QTEDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHmake clean./configure -xplatform linux-arm-g+ -no-xft -no-qvfb -depths 4,8,16,32makemake正确结束之后,我们可以在$QTEDIR/lib目录下看到libqte.so libqte.so.2 libqte.so.2.3和libqte.so.2.3.10这四个文件。有了这四个库文件之后我们就可以把它拷贝到我们开发板中相应的库目录下面。这里我们将其放在/usr/qpe/lib中。/usr/qpe是一个指向/mnt/yaffs/Qtopia目录的链接名。/mnt/yaffs/Qtopia将在下一小节中介绍,Qtopia桌面就要移植到该目录下。命令如下cp -arf libqte.so* /usr/qpe/lib2.2.4.3 Qtopia桌面系统的交叉编译和移植除了上一节我们编译Qt/Embedded所用的三个源码包外,还需要如下源码包:e2fsprogs-libs-1.37.tar.gz 用于编译生成libuuid库tslib.tar.gz 触摸屏的库文件qtopia-free-2.1.1.tar.gz Qtopia源码包libjpeg-iwmmxt.tar.bz2 JPEG支持库1、交叉编译Qtopia桌面平台交叉编译Qtopia的具体过程较为复杂,在本节中不便详细说明,以脚本文件(buildqtopia.sh、myQtopia_build)的形式附于附录I之中。2、Qtopia桌面平台的移植(假设编译Qtopia在/Qt/Qtopia目录下进行)运行buildqtopia.sh之后会在本级目录下生成以下目录:e2fsprogs-libs-1.37 ext2 文件系统工具包,Qtopia 用到了其中的libuuide2fs-install ext2 工具包编译结果jpeg-6b jpeg 解码库jpeg-install jpeg 编译结果tslib 触摸屏工具包tslib-install 触摸屏工具包编译结果tmake-1.13 tmake 工具,编译Qtopia 时需要使用qt-2.3.2 Qt/X11-2.3.2 及编译结果, 编译Qtopia 时需要使用其中的工具qt-x11-free-3.3.4 Qt/X11-3.3.4 及编译结果,编译Qtopia 时需要使用其中的工具qt-2.3.10 Qt/Embedded 2.3.10 及编译结果qtopia-free-2.1.1 Qtopia 2.1.1 及编译结果首先,下载Qtopia,在实验板的/mnt/yaffs目录下新建一个目录Qtopia,并将qtopia-free-2.1.1/image/opt/目录下的所有内容拷贝到新建的Qtopia中。其次,将e2fs-install/lib/目录下的libuuid.so* 库文件、jpeg-install/lib目录下的libjpeg.so* 库文件和arm-linux-gcc库文件目录下的libgcc_s.so*和libstdc+.so*拷贝到目标机的/ mnt/yaffs/lib 目录下。再次,将/Qt/Qtopia目录下的qtopia.sh 下载到目标机的/mnt/yaffs/Qtopia 目录下。最后,我们还要在目标板的/usr目录下建立一符号链接qpe使其指向/mnt/yaffs/Qtopia目录。至此,编译、移植Qtopia桌面平台结束,我们可以在minicom控制台中输入/usr/qpe/qtopia.sh启动Qtopia桌面平台。2.2.5 SQLite数据库的交叉编译和移植SQLite第一个Alpha版本诞生于2000年5月,是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。以下介绍如何交叉编译SQLite-3.3.12并移植到ARM2410-S实验板:1、下载、解压sqlite-3.3.12.tar.gztar -xvzf sqlite-3.3.12.tar.gzmv sqlite-3.3.12 sqlite-target2、声明环境变量export config_BUILD_CC=gccexport config_TARGET_CC=arm-linux-gcc3、修改sqlite-target目录下的configure文件的部分内容修改configure文件的目的是为了让不configure去检查你的交叉编译环境,否则会出现如下同样的错误: checking for /usr/include/readline.h. configure: error: cannot check for file existence when cross compiling,不能生成Makefile文件。 1、将第20420行的 (exit 1); exit 1; ; 改为 (echo 1); echo 1; ; 2、将第20446行的 (exit 1); exit 1; ; 改为 (echo 1); echo 1; ; 4、配置在sqlite-target的同级目录下建立存放中间文件的临时目录arm-linux-sqlite-obj:mkdir arm-linux-sqlite-obj运行配置文件生成Makefile文件:./sqlite-target/configure -disable-tcl -prefix=./arm-linux-sqlite -host=arm-linux将Makefile中BCC = arm-linux-gcc -g -O2 改成: BCC = gcc -g -O2编译:makemake install编译生成目标文件位于-prefix指定的sqlite-target同级目录下的arm-linux-sqlite中。arm-linux-sqlite下面会生成三个目录sqlite、lib、include。其中sqlite存放的是数据库管理文件sqlite3;include中存放的是SQLite的C语言头文件;lib目录下是SQLite的库文件。5、移植到嵌入式试验板此时,只需要将arm-linux-sqlite/lib下面的动态链接库文件libsqlite3.so.0.8.6以及两个符号链接libsqlite3.so.0和libsqlite3.so下载到实验板的/usr/qpe/lib目录中即可。在minicom控制台中输入:cp -arf libsqlite3.so* /usr/qpe/lib至此,SQLiteli-3.3.12移植完毕第三章 嵌入式车载电话的软件设计与实现3.1嵌入式车载电话的软件整体框架嵌入式车载电话系统的软件分为了四个模块,电话模块(Dial)、短消息模块(Sms)、电话本模块(PhoneBook)、后台监控进程模块(Daemon)。电话模块提供拨打/接听电话的人机界面;短消息模块提供发送/接受短消息的人机界面;电话本模块提供对通讯录的查找、添加和删除功能的人机界面;后台进程负责监控GSM模块,当接受到电话或短消息时,后台进程则会启动相应的界面模块提醒用户。系统的整体框架如图3-1: 图 3-1 嵌入式车载电话软件结构图在该结构中,后台进程模块与各个界面进程模块之间的通讯使用Linux的信号实现,数据在各个模块之间的传输和共享则由SQLite数据库完成。3.2 GSM监控后台的设计与实现。3.2.1 SIM300模块的AT指令介绍 SIM300模块计算机之间的通信协议是一些AT指令集。何个指令以AT+开头,以回车结尾。何个命令执行成功与否都有相应的返回。其他一些非预期的信息(如有有短信到来、线路无信号等),模块将在串口上有对应的输出提示,接收端监听并可据此可以做出相应处理。 AT指令中用到的两个控制符为: 结束符() 十六进制的OxOD 发送符() 一六进制的Ox1A1、 开机SIM卡插入SIM300模块后上电,等信号指示灯开始以每隔3秒闪亮一次时表示模块已经开启,并且注册GPRS网络成功。此时模块处于待机状态,这时语音和短信功能建立,串口已经可以正常工作。命令:AT+CSQ 用来测试模块当前的信号强度,返回若中包含99,则表示无信号。2、 设置命令:ATE0 设置关闭回显输入的命令。命令:ATX4 设置语音连接结果返回模式为第四种,使能返回忙音和无拨号音命令:AT+CLIP=1 设置被叫时返回信息包括主叫方电话号码命令:AT+CHFA=1 选择当前通话通道为通道1,即免提方式命令:AT+CMIC=1,15 设置通道1的麦克风音量为最大值命令:AT+CMIC=0,15 设置通道2的麦克风音量为最大值命令:AT+CNMI=2,2 设置短消息接受时提示方式,SIM卡不保存直接将短消息发送至串口命令:AR+CSCS=GSM 设置SIM300模块字符集命令:AT+CLVL=100 设置受话器音量3、 电话拨号时向SIM300模块发送命令 ATD被叫号码;并等待返回结果。返回OK时表示拨号成功,NO DIALTONE表示没有拨号音,NO CARRIER表示被拒接。拨号成功后向SIM300模块发送命令AT+CLCC等待返回当前连接状态。当有来电时会接受到RING+CLIP: 主叫号码,号码类别。 拒接电话时发送ATH到SIM300模块。 当有来电时要应答电话则发送ATA到SIM300模块。4、 短消息使用Text模式发送短消息,命令如下:AT+CMGF=1 设置短信发送格式为TEXTAT+CMGS=“目标手机号码” 等待收到符号后发送短消息内容使用PDU模式发送短消息,命令如下:AT+CMGF=0 设置短信发送格式为TEXTAT+CMGS=YYY 等待收到符号后发送SCATPDC其中YYY:为TPDU的十进制长度SCA:服务中心地址TPDU:发送规约数据单元接收短消息时,由于已经设置AT+CNMI=2,2,短消息到来时串口将会收到如下信息:+CMT: 发送方号码,发送时间短消息内容3.2.2 GSM监听和控制模块的实现后台进程启动之后,首先将tty设备初始化波特率为115200bps,有效数据为8位,无校验位,1位停止位,每次读取最少字符数为1个,每次读取的等待时间为1秒。之后初始化任务队列,并在任务队列中插入GSM的初始化命令,之后为GSM的监听和控制创建一个新的线程,由新的工作线程负责AT命令的发送与信息反馈以及随即信息的分析。GSM监听控制线程启动后,首先从任务队列取出一个AT命令的发送任务,发送相应的AT命令到SIM300模块,并设置该标志为“等待返回信息”,然后读取其返回的信息,由于TTY设备返回字符具有连续性,同一条信息的每个字符之间不会出现太长的间隔时间,所以如果在一秒钟之内没有读到字符就可以认为已经接受到一条完整的信息。之后对应任务队列队头的任务分析返回的信息。具体流程如图3-2:图3-2 GSM监控线程工作流程图3.2.3后台进程与各个人机界面模块间通讯与数据传输的实现后台进程与其他三个界面在运行时分属于不同的进程。系统提供的IPC机制非常丰富有信号、消息队列、共享内存、信号灯、套接字等等。在本系统中,由于使用了轻型的SQLite数据库,数据的传输可以通过数据库的转存,不仅有较好的可靠性,而且很多信息本身就需要在数据库中保存备份,如收/发到的短消息、拨打过的电话号码等等。除此之外,我们还选用了信号机制来实现进程之间事件发生的通知手段。由于使用信号机制,我们必须保证后台进程能够活得每个界面模块进程的进程ID,同时也要使各个界面模块进程能够得到后台进程的进程ID。故而在后台进程启动时,必须在/tmp目录下写下一个临时文件,里面记载后台进程的进程ID,以是界面模块进程能够通过该临时文件获取后台进程的进程ID。同时后台进程在退出时要调用unlink函数删除该临时文件。界面模块进程在启动时要通过带参数的信号将自己的进程ID发送给后台进程,退出时同样要告知后台进程。后台进程中我们安装了SIGUSR1信号用于处理界面模块进程启动和退出,安装并使用SIGUSR2信号与界面模块交换GSM信息。我们在安装信号时指定了SA_SIGINFO参数,这样可以通过信号传递一个32位长整型的数据。发送方法如下(假设短信界面进程要求发送短消息):sigval_t sigv;sigv.sival_int = (Outbox_ID 16) | GPRS_SMS_SEND;/Outbox_id为所要发送的短信在数据库Outbox表中的ID值sigqueue(dialPID, SIGUSR2, sigv);因此我们定义如下短整型常量用于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46751-2025低温再生转轮调湿新风机组
- 电力安全严抓策略讲解
- 2025小升初语文写作基础补差卷(段落+简单记叙文)
- 2026-2031年中国高比表面氢氧化钙市场调研分析及投资战略研究报告
- 消防安全建言献策方案
- 2025重庆涪陵区人民政府江东街道办事处招聘5人备考题库附答案详解(典型题)
- 2025四川银行分支机构对公专项社会招聘备考题库附答案详解(综合题)
- 2025大理市林业和草原局喜洲镇苍山卫士中队招聘备考题库(1人)含答案详解
- 2025重庆北碚区公益性岗位招聘2人备考题库有完整答案详解
- 2025杭州钱塘区总工会公开招聘工会社会工作者1人备考题库附答案详解(巩固)
- 药厂取样培训课件
- 基于形式化验证技术-洞察及研究
- 弱电工程保养维护的服务标准与项目
- 2025版租赁合同范本打印(含解约条款)
- 高中家长教育讲座课件
- 四肢瘫患者的康复护理
- 学校教务宣传课件模板
- 微生物菌剂筛选-洞察及研究
- 多肉教学课件
- 甲亢病人健康教育
- 儿科护理专题报告范文
评论
0/150
提交评论