优秀毕业设计-基于linux下的智能手机设计_第1页
优秀毕业设计-基于linux下的智能手机设计_第2页
优秀毕业设计-基于linux下的智能手机设计_第3页
优秀毕业设计-基于linux下的智能手机设计_第4页
优秀毕业设计-基于linux下的智能手机设计_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于LINUX下智能手机的设计摘要LINUX操作系统的手机最根本的特点是具有一个开放性的操作系统,并且能够进行功能扩展和可以安装第三方应用软件。随着支持数据传输的25G/3G移动通信网络的不断发展,支持数据、语音和图像服务的智能手机将很快成为引发中国手机市场消费高潮的主力产品,市场潜力巨大,因此智能手机的开发是未来手机技术发展的趋势。本文首先对LINUX手机的发展现状和研究背景进行了分析,其次,介绍了智能手机的硬件平台、操作系统和软件设计。通过对硬件的配置和软件的设计实现手机信号强度检测、运营商检测、发短信、接短信、打电话、建立通讯录和删除通讯录接电话的功能。最后,建立硬件环境和交叉编译环境,在LINUX环境下,编译代码生成可执行文件,由交叉编译器在基于GPRS模组的ARM9开发板上运行可执行程序,通过触摸板上面的虚拟按键进行功能的检测,根据检测的结果优化程序,使系统更加完美和流畅。关键字智能手机LINUXGPRS模组ARM9开发板DESIGNOFSMARTPHONEBASEDONLINUXABSTRACTTHEMOSTFUNDAMENTALFEATUREOFSMARTPHONEISITSOPENOPERATINGSYSTEMEXPANDABLEFUNCTIONSANDSUPPORTINGTHETHIRDPARTYAPPLICATIONSOFTWAREAS25G/3GMOBILECOMMUNICATIONNETWORKCOMEINTOOPERATION,SMARTPHONEWHICHSUPPORTDATAANDVOICESERVICEWILLBECOMEAMAINSTREAMPRODUCTINCHINACELLPHONEMARKETSOONINTHENEXTFEWYEARS,SMARTPHONEMARKETWILLDEVELOPFASTENOUGHTHISMARKETHASGREATPOTENTIALSMARTPHONEISTHETRENDOFCELLPHONEDEVELOPMENTINTHEFUTUREFIRSTLY,THISARTICLEANALYSESTHESITUATIONOFDEVELOPMENTOFSMARTPHONE,SECOND,INTRODUCEDHARDPLATFORMTHROUGHTODESIGNOFSOFTWAREANDHARDWARE,THESYSTEMCANCOMPLETETHEFUNCTIONTHATDETECTINGSIGNALSTRENGTH,DETECTIONOFNETWORKOPERATORS,TRANSCEIVERINSMS,RECEIVINGACALL,CREATECONTACTS,DELETECONTACTSLASTLY,SETUPTHEHARDWAREENVIRONMENTANDTHECROSSDEVELOPMENTENVIRONMENT,COMPILETHECODETOGENERATETHEEXECUTABLEFILE,BYCROSSCOMPILERBASEDONGPRSMODULEOFTHEARM9DEVELOPMENTBOARDTORUNTHEEXECUTABLEPROGRAM,THROUGHTHETOUCHPANELONTOPOFTHEVIRTUALKEYFUNCTIONALTESTING,ACCORDINGTOTESTRESULTSMAKETHESYSTEMMOREPERFECTANDFLUENCYKEYWORDSSMARTPHONELINUXGPRSMODULEARM9PLATFORM目录中文摘要I英文摘要II1绪论111引言112研究背景113本课题研究的主要内容214设计研究的预期效果32手机系统的整体设计421硬件平台422LINUX操作系统723通信方式93手机的软件系统设计1131通信系统设计1131手机的应用程序设计11333系统主程序分析2334T9输入法274实验效果图295手机系统测试3351开发板环境的搭建3352PC机环境的搭建3553功能测试及结果35结束语38致谢39参考文献40附录411绪论11引言随着手机的发展,功能会越来越多。除了具有手机基本的通话、收发信息等功能,还能上网、拍照、看电影、欣赏MP3音乐等。这就需要手机不仅具有高性能的嵌入式处理器,更侧重于系统软件平台的稳定性、可移植性、可扩展性。本手机在硬件设计上采用三星公司的基于ARM920T内核的S3C2440高性能嵌入式处理器、凌阳公司的SIM300通讯模块、FLASH、LCD、触摸屏等实现一个完整的手机硬件开发平台。S3C2440最高主频520MHZ,具有快速的处理能力,ARM920T核采用ARM9架构,具有高性能、低功耗等特点。S3C2440处理器广泛应用于PDA、智能手机、MP3等产品中。通讯模块SIM300,包含了基带芯片、RF射频芯片组、COMBOFLASH芯片以及GSM/GPRS终端所需的全部软件功能,支持标准AT命令控制,具有语音功能、SMS信息、数据功能、GSM增值服务等功能。本智能手机系统软件就在此硬件开发平台上实现1。12研究背景近年来,LINUX以自由、免费、开放源代码为武器,经过来自互联网、遍布全球的程序员的努力,加上IBM、SUN等计算机巨头的支持,LINUX在操作系统市场异军突起,服务器版的LINUX、桌面版的LINUX、嵌入式LINUX已经广泛地投入应用,基于LINUX的应用和应用开发渗透到各个领域,一部分手机厂商接机推出了LINUX手机。目前很多手机开发商本身并不希望在操作系统方案上受制于人并增加产品开发成本,而源代码开放的LINUX是最好的切入点。由于很多公司在LINUX桌面应用开发的经验而促成其转向2。智能手机终端产品的开发中,国内基于LINUX的嵌入式操作系统应用开发商远多于桌面应用开发商,LINUX具有最大的自由开发群。此外,由于其开放性使工程师可以对系统有更深入的了解,并能针对特定硬件方案和产品需求进行优化,通过了解源代码开发很多应用。采用LINUX操作系统的理由是降低智能手机的生产成本。LINUX开发起来最大的特点是从根本上开放源代码,与其他系统相比,采用开放源代码的LINUX手机操作系统能够大大降低成本。而且开放源代码还有一个好处是允许手机制造商根据实际情况,有针对性地开发适合自己手机的LINUX操作系统,这样既能让自己的产品有特色,又能避免受制于人,还能够满足用户多方面的应用。到现在,手机的应用就由通话和简单的邮件传输,发展到WEB浏览和拍照摄影,照片编辑,动画播放等多个方面,这样一来,手机软件的开发规模是3年前5倍以上。基于这个原因,开发LINUXOS,开发者教育等各方面的成本就削减了不少,从而上市的产品便会更具竞争力3。LINUX操作系统在使用中的优点是十分明显的。首先,对于消费来说,采用的应用于智能手机上的LINUX操作系统和我们常说的应用于电脑上的LINUX操作系统是一个系统,而且都是全免费操作系统。在操作系统上的免费,就等于节省了产品的生产成本,附加到消费者身上的也就少了,给大家带来了实惠。LINUX操作系统系统资源占用率较低,而且性能比较稳定,这都是大家公认的。使用起来能带来急速体验,在同硬件配置上,能获得其他智能手机操作系统得不到的快乐。如果以LINUX平台的系统资源占用程度同体积庞大的WINDOWSMOBILE相比,其结果可想而知。JAVA在手机上应用越来越广的时候,LINUX操作系统与JAVA的相互融合,是任何一个操作系统所不能比拟的,LINUX加JAVA的应用方式,能够给用户极大的拓展空间。相对来说,LINUX操作系统缺点也不少。由于LINUX操作系统介入智能手机领域较晚,采用此操作系统的手机比较少,所以专为这些少量用户所制作的第三方软件还非常少,影响了LINUX操作系统在智能手机领域内的势力扩张。在LINUX的平台上进行开发,对厂商的要求比较高,业界需要更强大的软件。设计能力,安全性、实时性能、电源管理都是LINUX智能手机操作的天然缺陷。支持LINUX操作系统的机型摩托罗拉A768I、摩托罗拉A780、飞利浦968、海尔N60、中兴E3。由于智能手机结合了强大的硬件运行能力以及开放的软件操作系统,因此无论是娱乐还是商务应用,智能手机的功能都能够在强大的第三方软件的支持下获得无限的扩展。因此,在未来的手机市场上,智能手机将引领整个手机发展的潮流,而不是局限于现在的高端手机。13本课题研究的主要内容通过对本系统的分析研究,明确了本次设计的主要任务有以下几点1根据设计任务书的要求,完成手机控制系统的构建。2对手机的工作过程进行设计分析,对手机系统代码的编写,实现手机信号检测、运营商的检测、接打电话、收发短信的功能。3对手机硬件平台的设计和构建,并对其进行深入的探讨。4把程序在硬件平台上面运行,测试手机性能,完善手机功能。5完成设计说明书。14设计研究的预期效果通过对本课程程序的设计和分析,完成此设计的最终效果如下1采用GPRS模块SIM900,实现显示网络运营商、短信的收发、电话的接打、存储短信、信号强度的功能。2触摸屏输入功能,可输入数字,字母,汉子等信息。3短信息支持中英文接收和发送。4具有菜单控制功能,使用触摸屏控制菜单的选择。实现多级菜单控制,摸屏单机菜单图标直接完成各种要求的功能。5支持中国移动和中国联通两个运营商。2手机系统的整体设计21硬件平台本文设计的基于ARM9平台的智能手机系统架构为基带处理器(S3C2440)应用处理器(SIM900)的双处理器架构。基带处理器实现目前手机所做的呼叫/接听、数据传输等基本的通信功能,应用处理器专用于处理高负荷的多媒体应用。采用这种架构的原因是因为应用处理器构成一个子系统,与基带处理器通信子系统隔离开来。模块化的架构可以利用现有手机上的成熟方案,对现有手机上的大部分代码和电路只需稍加修改就可重复使用,工程师可以集中精力开发新的多媒体应用功能,从而缩短整个开发时间,降低开发成本。图21ARM9试验仪结构211S3C2440介绍S3C2440A是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核。S3C2440的特点1具有PLL时钟发生器,主频最高可达533M。2内核12V供电最高400M,13V供电最高533M。3存储器支持18V、25V、30V、33V。4I/O均支持33V供电。5S3C2440为单机器周期执行指令集。6具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作,降低产品功耗。内核结构采用ARM920T内核,具有16KB指令CACHE、16KB数据CACHE和存储器管理单元MMU,指令高速存储缓冲器ICACHE,数据高速存储缓冲器DCACHE提高指令执行效率及数据存储效率,减少主存带宽和响应性带来的影响,加强的ARM体系结构MMU,用于支持WINCE、LINUX等操作系统,内部高级微控制总线AMBA体系结构。存储器控制器特性S3C2440采用总线结构管理片上外设及内存。S3C2440的存储器管理器提供访问外部存储器的所有控制信号。27位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。总共有8个存储器BANKBANK0BANK7,其中BANK0BANK5为固定128MB,BANK6和BANK7的容量可编程改变,可以是2、4、8、16、32、64、128MB,最大共1GB。BANK0可以作为引导ROM,其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16位和32位。8个存储器BANKBANK0BANK5SRAM、ROMNORFLASH。BANK6BANK7SRAM、ROMSDRAMNORFLASH。S3C2440支持两种启动方式NORFLASH启动,即代码直接写入NORFLASH,运行时直接在NORFLASH上运行。NANDFLASH启动方式,即代码烧到NANDFLASH中,借助片内4K的SRAM,将代码由NANDFLASH烤到SDRAM中,在SDRAM中运行。212GPRS模组介绍在这个智能手机系统中的基带处理芯片SIM900是双频GSM模块,利用无线移动网络实现语音传输和点对点数据传输。同时,模组内具备TCP/IP协议栈,可以直接利用它实现无线上网,具有话音、GSM电路数据,传真、GPRS分组数据、短消息等功能。该无线收发模块将作为一个通信子系统,与应用系统相互独立存在。SIM900与S3C2440的通信通过UART接口,可以由AT命令来实现。音频芯片主要实现MP3播放,录音等音频功能,摄像头模块实现数码拍照、摄像的功能,SD/MMC卡接口可以实现手机存储扩展功能,USB接口可以实现手机与计算机的数据传输5。以上这些模块都由S3C2440芯片来控制,它们共同构成了智能手机的应用模块,如图24所示。GPRS模组使用标准串口与主控制器进行通讯。模组带有一个10针的接口,该接口可以直接和MCU相连接。或者用户可以通过模组上的RS232接口和PC机直接相连接使用。GPRS模组可以用到以下场合1手持通讯设备。2远程数据采集系统。3无线网络终端。GPRS模组需通过J4的电源开关信号(PWRKEY)输入引脚向GPRS模组输入如图22所示的上电时序GPRS才能被启动,启动后GPRS的信号指示灯会闪烁。也可以手动按下GPRS模组上的ON/OFF按键,大约2秒之后松开,GPRS模组亦可以被启动。POWERON1500MSON图22GPRS模组启动时序图GPRS模组启动之后,即可通过UART接口发送AT指令来控制语音或数据收发。连接GPRS模组到实验箱的J8(GPRS)接口上,注意一定要按顺序(实验箱的12V接模组的VCC,IOB0接PWRKEY,GND接GND)插接,且不可插反或错位;断开JP7、JP8的所有跳线;断开手柄接口与手柄的连接;如图23配置GPRS;如连接耳麦和天线。J5JP1图23GPRS模组跳线配置喇叭/听筒/受话器无线通信模块SIM300SIM卡应用处理器S3C2440音频芯片SD/MMC卡摄像头模块LCD和触摸屏模块FLASHANDSDRAM电源管理芯片UART串口应用程序子系统通信子系统图24手机硬件系统框图22LINUX操作系统LINUX操作系统作为一种多任务、稳定可靠、内核可裁减的系统、是开发嵌入式软硬件产片的优秀软件平台。嵌入式LINUX是一种开放源码、软实时、多任务的嵌入式操作系统。通常它是在标准LINUX的基础上针对嵌入式系统进行剪裁和优化后形成的。剪裁和优化后的LINUX体积更小,性能更加稳定,而且源代码本身是免费的。这将大大减少开发商的成本,更具市场竞争力。同时,由于遍布全球的众多LINUX爱好者又能给予LINUX开发者强大的技术支持,所以众多商家纷纷转向嵌入式LINUX的开发。LINUX作为一个嵌入式操作系统具有许多的优点1可运行于多种硬件平台LINUX符合IEEEPOSIX1标准,使应用程序具有较好的可移植性。内核的90以上的代码是用可移植性好的C语言完成的,少部分的底层相关的代码由汇编语言完成,并根据处理器类型分门别类的放在系统内核源码的LINUX/ARCH/目录中。目前LINUX内核支持INTERX86,MOTOROLA/IBMPOWERPC,S390等处理器体系结构。并且支持嵌入式领域中广泛使用的ARM和MOTOROLAMC68000系列。随着LINUX越来越广泛地应用于嵌入式领域,它所支持的嵌入式微处理器必定会进一步增加。2可裁减,性能优异,应用软件丰富LINUX的动态模块加载使LINUX的剪裁极为方便,高度模块化的部件使添加非常容易。一般来说,经过适当剪裁后的LINUX内核的启动部分的目标代码不到500KB。用户完全可以把LINUX内核和ROOT文件系统放在一张软盘上。也可以利用LINUX实现从网络启动,实现网络无盘图形工作站。LINUX是一个全面的多任务和真正的32位操作系统。系统运行稳定,功能强大,支持多种硬件平台,应用工具多。随着LINUX的不断发展,基于LINUX平台上的应用软件也不断得到扩充。3使用成本低LINUX是免费软件,只要遵守GPLGNUGENERALPUBICLICENSE的规定,就可以免费获得,并进行开发和商业发行。LINUX下有许多同样遵循GPL规定的一系列的软件工具开发包,它们均为自由发布及使用的代码,从功能上看并于亚于商用开发包,可以极大地降低开发成本。这一优势是其他嵌入式操作系统无法比拟的。4强大的网络功能LINUX操作系统最突出的是网络部分,基本上所有的网络协议和网络接口都可以在LINUX上找到。LINUX比标准的UNIX能更加高效的处理网络协议,系统地网络吞吐性能也非常好,这也是LINUX在网络服务器市场上占据越来越大市场份额的一个原因。LINUX内核对网络协议的设计是从简洁高效的角度出发的。它有一整套的网络协议模块。LINUX不仅可以支持一般用户需求的文件传输协议FTP,TELNET和RLOGIN协议,还能提供对网络上其他及机器内文件的访问。LINUX的网络功能十分强大,更重要的是,LINUX的网络功能和协议是以内核可选的模块方式提供的,它允许用户自由地裁减和优化。5GUI开发支持LINUX本身有性能优秀的XWINDOWS系统,在XWINDOWS系统的支持下,能方便的进行图形用户界面的开发。6丰富的开发技术资源LINUX有一个庞大的支持者群体,其中许多人都编写驱动程序和其他的更新程序,并且免费通过INTERNET进行共向。这意味着对新硬件的LINUX驱动程序甚至比用其它UNIX系统还来得及时6。23通信方式手机硬件平台的S3C2440属于片上系统,处理器上具备串口、显示等外围接口电路,在本系统中使用S3C2440的UART端口,将GPRS模块的RS232的RXD、TXD与之相连接。需要在内核中添加相应的串口驱动。串口驱动完成基本的底层操作,为上层的通信程序提供接口函数。通用异步收发器,简称UART,即“UNIVERSALASYNCHRONOUSRECEIVERTRANSMITTER”,它用来传输串行数据,手机发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发送出去,手机接收数据时,UART检测另一根电线上的信号,将串行数据收集到缓冲区中,CPU即可读取UART获得这些数据8。UART之间以全双工方式传输数据,最精简的连线方法只有三根线TX用于发送数据,RX用于接收数据,GND用于给双方提供参考电平如图25所示。TXD、RXD数据线以“位”为最小单位进行数据传输,而信息的最小单位为帧,帧由规定好的若干位组成开始位、数据位、奇偶校验位、停止位等如图26。开始位先发出一个逻辑”0”的信号,表示传输字符的开始。数据位紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。奇偶校验位资料位加上这一位后,使得“1”的位数应为偶数偶校验或奇数奇校验,以此来校验资料传送的正确性。停止位它是一个字符数据的结束标志。可以是1位、15位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。空闲位处于逻辑“1”状态,表示当前线路上没有资料传送。波特率是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为101201200位/秒1200波特。S3C2440UARTTXDRXDGNDRXDUARTTXDGND图25UART数据传输方式开始位数据位校验位图26数据帧的格式停止位GPRS3手机的软件系统设计31通信系统设计GPRS模组和微处理器之间的连接时通过串口,对于微处理器而言,GPRS模组就相当于一个调制解调器,微处理器通过串口发送AT指令控制GPRS模块工作情况和得到GPRS模块相关信息。用户可以通过AT命令进行呼叫、短信、电话本、数据业务、补充业务、传真等方面的控制。SIM900常用的AT命令如表1所示。表1常用AT命令命令命令格式功能描述ATAT测试连接是否正常。ATCMICATCMIC,设置MIC的通道及增益。ATCMGFATCMGF设置短消息格式。ATCHFAATCHFA切换声音通道。ATCLVLATCLVL喇叭音量调节。ATCSCSATCSCS选择TE字符集。ATDATD拨号,建立会话、数据或传真等业务。ATHATH0呼叫挂起。ATAATA呼叫应答。ATVTSATVTS发送DTMF拨号音。ATCMGSATCMGS,ATCMGS发送短消息。ATCMGRATCMGR,读取短消息。上位机通过UART发送AT命令到GPRS模组。AT命令以换行符作为指令的结束标志,因此在编程发送AT命令控制GPRS模组时,发送每条命令后还需要发送RN标志命令结束13。1ATH呼叫挂起用户使用ATH或ATH0来切断与远端用户的连接,在有多个电话的情况下,所有的电话都释放包括正在通话挂起和等待的电话。2ATA呼叫应答当命令收到呼叫来电信号时向用户发送RING然后等待用户应答呼叫。应答模式下的命令和响应如表2所示。表2应答模式响应RING有来电命令ATA应答此来电响应OK接受呼叫命令ATH挂断电话响应NOCARRIER电话已切断3ATCPBR读取电话本该命令返回用ATCPBS命令选择的存储区一定范围内的记录。读取电话本的命令和响应如表3所示。表3读取电话本方式命令ATCPBR检测命令响应CPBR150,20,10OK有50个存储位置电话号码最长20位相关信息最多10个字符命令ATCPBR12,14读取位置1214的记录响应CPBR12,“112“,129,“EMERGENCY“CPBR13,“331290909“,145,“FRED“CPBR14,“0146290808“,129,“ZAZI“OK显示记录位置号号码号码类型相关信息命令ATCPBR10读取记录10响应CPBR10,“0146290921“,129,“ROB“OK显示记录10命ATCPBR52读取记录52令响应CMEERROR21位置号错误4ATCMGR读取短消息命令格式ATCMGR采用TEXT方式的响应格式CMGR,命令ATCMGR1响应CMGR“RECUNREAD“,“0146290800“,“98/10/01,18221100“,ABCDEFGHIOK5ATCMGS发送短消息采用TEXT方式的命令格式ATCMGS,TEXTISENTERED按CTRLZ发送出去/按ESC取消命令ATCMGS“33146290800“PLEASECALLMESOON,FRED响应CMGSOK返回给用户的消息参考值由模块分配这个值从0开始每发送一次消息递增1不论是否发送成功在0255之间循环。32手机的应用程序设计321串口初始化手机硬件平台中的GPRS模组和微处理器之间通过UART串口连接和通信,在使用UART串口前要对串口的一下数据进行初始化,包括波特率、数据位、停止位、奇偶校验位等。通过结构体TERMIOS进行设置以设置串口。结构的定义如下STRUCTTERMIOSTCFLAG_TC_IFLAG;输入模式控制TCFLAG_TC_OFLAG;输出模式控制TCFLAG_TC_CFLAG;控制模式控制TCFLAG_TC_LFLAG;本地模式控制CC_TC_LINE;线路规则CC_TC_CCNCCS;控制符;UART串口初始化的程序如下CFSETISPEED/设置串口的波特率为115200BPS/OPTIONSC_IFLAG/设置输入模式/OPTIONSC_CFLAG/设置奇偶校验位为无奇偶校验/OPTIONSC_CFLAG/设置停止位为1位/OPTIONSC_CFLAGOPTIONSC_CFLAG|CS8/设置数据位为8位/OPTIONSC_LFLAG/设置本地模式/串口的初始化完成后,通过LINUX下的WRITE和READ函数分别进行对串口的读和写操作。其函数原形如下INTWRITE(INTHANDEL,VOIDBUF,INTNBYTE);INTREAD(INTHANDEL,VOIDBUF,INTNBYTE);然后初始化GPRS,程序如下GPRS_SENDCOMMAND“ATCMIC0,15N“/设置MIC的通道及增益/GPRS_SENDCOMMAND“ATCHFA1N“/设置声音通道为1/GPRS_SENDCOMMAND“ATCLVL100N“/设置喇叭的音量为100/GPRS_SENDCOMMAND“ATCMGF1N“/设置短信息格式/GPRS_SENDCOMMAND“ATCLIP1RN“/开启来电显示功能/GPRS_SENDCOMMAND“ATCSCS“UCS2“N“/设置USC2编码/GPRS_SENDCOMMAND“ATCSMP17,0,2,25RN“/支持汉字发送/322手机信号强度的检测当手机信号的强度变化时,手机会自动检测信号的强度然后作相应的变化,信号检测的函数在一个主线程内,当信息发生变化时向串口发送一个AT指令“ATCSQRN”,GPRS返回的数据保存在一个队列当中,然后队列进行出对操作读出队列中的数据,代码如下GPRS_SENDCOMMAND“ATCSQRN“DELETEQUEUEBUF/BUF为出对的数组,GPRS返回的数据保存在BUF数组里面,返回值的形式为CSQ,第一个参数是强度,第二个参数是误码率,我们在本程序中只检测第一个参数的值就行,BUF里面的数据是以字符串形式存储的,我们需要把字符串中表示信息强度的第一个参数转化成数字的形式,表示信号强度的参数为一个字符或两个字符,在我们转化成数字时要进行一次判断一种情况是参数是一位数时代码如下IFBUF79SIGNBUF60X30另一种情况参数是两位数时,代码如下IFBUF70数组从队列中读到数据的第13字符为C时在屏幕上打印注册网络中,当检测次数超时时显示网络注册失败,代码如下WHILEBUF12CITFT_SETTEXTPOSMSG,20,33TFT_PRINTMSG,“注册网络中“PRINTF“注册网络中R“GPRS_SENDCOMMAND“ATCOPSN“DELETEQUEUEBUFDELETEQUEUEBUFIFI10PRINTF“网络注册失败N“RETURN0数组从队列中读到到的字符串的第十三个字符为C第十九个字符为M时表示SIM卡为中国移动,然后检测信号的强度,代码如下IFBUF12CTEL_SIGALFFLUSHSTDOUTPRINTF“中国移动N“RETURN0数组从队列中读到的字符串的第十三个字符为C,第十九个字符为U时表示SIM卡为中国联通,然后检测信号的强度,代码如下IFBUF12CRETURN0324查看SIM卡通讯录的信息我们点击触摸屏上面的通信录我们能查看SIM卡里面的联系人的信息,我们点击通信录时首先要发送“ATCPBSRN”命令,GPRS返回的值存放在队列中,然后进行出队列操作,把值保存在数组里面,首先对数组进行切割得到联系人的个数,通过INTPHONEBOOK_GETNUMVOID函数实现。INTPHONEBOOK_SHOWINTNUM,INTMAXNUM函数读取SIM卡中制定序号的联系人的信息,参数中的NUM要转化成字符串存放在数组BUF_NUM中,此时读取BUF_NUM的联系人信息的代码为GPRS_SENDSTRING“ATCPBR“GPRS_SENDSTRINGBUF_NUMGPRS_SENDSTRING“R“GPRS_SENDSTRING“N“GPRS返回的数据即是序号为NUM的电话信息,循环读出SIM卡中的电话信息,然后把序号、电话号码和联系人的姓名打印在屏幕上面,我们通过点击触摸屏上面的上翻下翻的虚拟按键来查看联系人的信息。CASEC_UP/上翻IFINFO_LISTMAXNUMINFO_LIST1BREAKCASEC_DOWN/下翻IFINFO_LISTMAXNUMINFO_LIST1WHILEPHONEBOOK_SHOWINFO_LIST,MAXNUMERRORPRINTF“你们所指定的位置没有信息N“IFINFO_LISTMAXNUMINFO_LIST1BREAKCASEC_HANGGPRS_SENDCOMMAND“ATRN“325短信发送的程序设计首先选择菜单项“发短信”,进入发送短信子程序。程序首先要求输入对方的电话号码,按确定键后输入短信内容,最后按确定键完成短信的发送。首先通过点击触摸屏得到点击处的坐标,然后通过坐标执行点击的功能,输入号码的代码如下KEY48TEL_NUMIKEYTEL_NUMI0TFT_MSG_PRINTTEL_NUMIFI17I17TEL_NUM即为输入的电话号码,由于GPRS只识别UNCODE码,所以我们要把电话号码和发送短信的内容转化为UNCODE码后再发送,发送短信的命令的格式为“ATCMGS,“代码如下GPRS_SENDSTRING“ATCMGS“STRTOUNITELTEL_NUM,TEL_NUM_UIN下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下NYNY图31发送短信过程GPRS_SENDSTRINGTEL_NUM_UINUSLEEP3001000TFT_MSG_PRINT“请输入短消息N“PY_GETSTRINGMSG,INFO,100/调用T9输入法,输入文字,返回对应信息的ASCII码IFINFO00GPRS_SENDSTRING“033N“TFT_MSG_PRINT“发送取消“RETURNSTRTOUNIINFO,INFO_UNI/将信息转换为UNICODE码GPRS_SENDSTRINGINFO_UNIGPRS_SENDSTRING“032N“TFT_MSG_PRINT“发送成功“删除一个数字时,按挂机键,CASEC_CANCELTEL_NUMI0TFT_MSG_PRINTTEL_NUMIFI40NUM1RETURNNUM327拨打电话的程序设计选择打电话进入拨打电话程序,程序首先获得键盘输入的电话号码,然后通过串口将命令发给GPRS模组,完成打电话操作流程图32所示。具体操作如下,首先输入要拨打的人的电话号码,把输入的电话号码转化成字符串的形式,然后打印在触摸屏上面,代码如下SWITCHKEYCASE0CASE1CASE2CASE3CASE4CASE5CASE6CASE7CASE8CASE9IFSECOND_CALL_FLAG0/正常输入电话号模式开始获取电话号码按下确定键发送拨号命令等待、接听返回YNTFT_TEL_PRINTKEY_BUFBREAK号码输入完成后我们点击触摸屏上面的呼叫键,我们向串口发送了一个打电话的命令,“ATD”后面跟我们输入的电话号码,此时我们等待应答信息的到来,最后进入通话状态,代码如下CASEC_CALLGPRS_SENDSTRING“ATD“GPRS_SENDSTRINGKEY_BUFGPRS_SENDSTRING“N“TFT_TEL_PRINT“正在拔叫“TFT_SETTEXTPOSCALLBOX,0,15TFT_PRINTCALLBOX,“S“,KEY_BUFBREAK33系统主程序分析KEY_BUFIKEY0KEY_BUFI0TFT_CLEARWINDOWCALLBOXTFT_PRINTCALLBOX,“S“,KEY_BUFPRINTF“CALLFIRSTPHONEMODULE“/FORTEST删除一个数字按取消键,执行下面的代码CASEC_CANCEL/只有当取消拨打电话后才可以推出本模块IFI0KEY_BUFI0IFI0FLAG0RETURN图32打电话流程主界面程序包含了对应的图像文件和源代码。主要功能是提供主菜单的显示和触摸屏数据的读取。初期这个程序里还包含了触摸屏数据识别函数,用于把相应的位置翻译成对应的控制信息。在主程序里面首先要调用函数UART_INIT初始化串口、调用TFT_INIT初始化触摸屏、调用TS_CAL_INIT进行触摸屏校准操作,初始化完毕后开始创建消息窗口、信号窗口、呼叫窗口。然后设置窗口底色,代码如下MAINFRAMETFT_CREATEWINDOWEX0,0,320,240,COLOR_BLUE/创建主窗口1TFT_FILE_PICTUREMAINFRAME,0,0,“PHONEBMP“,1/显示主窗口图片MSGTFT_CREATEWINDOWEX110,60,90,110,COLOR_YELLOW/创建消息显示窗口2SIGNBOXTFT_CREATEWINDOWEX110,60,90,26,COLOR_CYAN/创建信号显示窗口3CALLBOXTFT_CREATEWINDOWEX110,120,90,26,COLOR_CYAN/创建信号显示窗口3TFT_SETCOLORMSG,COLOR_REDTFT_SETCOLORSIGNBOX,COLOR_REDTFT_SETCOLORCALLBOX,COLOR_RED主程序最主要的是创建三个线程实现手机的基本功能。MSGRECV_PTHREA线程主要是对队列里的数据进行分析处理找出主要信息并进行相应的操作。当我们收到数据是“RING”时表示来电话了,我们在CALLBOX窗口显示“来电话了”的字样,当数到的数据是“CLIP”时表示收到的是来电的电话号码。当我们收到“NOCARRIER”时表示对方已挂机,当我们收到”CMTI”时表示有新短信,在触摸屏上面显示“你有新短信息”,我们通过确定键来查看短信的内容。此线程的代码如下VOIDMSGRECV_PTHREADVOIDARGINTFLAG1,ICHARTEMRECVBUF11WHILE1IFSTRNCMPG_RECVBUF,“RING“,40PRINTF“来电话了N“TFT_CLEARWINDOWCALLBOXTFT_SETTEXTPOSCALLBOX,0,11TFT_PRINTCALLBOX,“来电话了“MEMSETG_RECVBUF,0,300ELSEIFSTRNCMPG_RECVBUF,“CLIP“,50FORI0I0CALL_FUNCKEYCONTINUESWITCHKEYCASEC_ANSWER/接电话按键TEL_ANSBREAKCASEC_HANG/挂电话按键TEL_HANGBREAKCASEC_BOOK/通信录键BACK_BUTTON0,97,36,12SLEEP1PHONEBOOK_LOOKBREAKCASEC_MSG/查看短消信键BACK_BUTTON50,97,36,12/画2个矩形图片SLEEP1MSG_MENU/调用信息模块SLEEP1BREAKRETURNNULL34T9输入法T9输入法给用户提供了一个接口,通过接口函数进入输入法,返回一个字符串首地址。进入输入法后,接口函数调用PY_GETCH()获取一个汉字或字符编码。默认的输入是拼音输入,可以按“”进行输入法的切换。1在数字输入模式下直接返回输入数字的ASCII码在接口函数中调用TFT_PRINT在屏幕显示。2在字母输入模式下1输入一个键值,进入T9PY_GETPY函数,在表中查询匹配的结构体2把匹配的结构体,给PY_GETCH中的结构体数组赋值,返回匹配结构体的个数,在PY_GETCH中按上下键切换结构体,按0键确定结构体,把结构体中字母加入全部输入的字符串中。返回接口函数后调用TFT_PRINTF函数打印字符串。3在拼音输入模式下按下相应的按键进入T9PY_GETPY,获取与输入相匹配的T9拼音列表,返回匹配的结构体的个数,PY_GETCH按上下键切换匹配的结构体,按ENTER键进入PY_GETHZ函数,根据输入的拼音显示匹配的汉字列表,并由键盘选取汉字。按上下键上下翻页汉字,按下对应的数字键,返回汉字。在接口函数中显示。4实验效果图手机主界面如图41所示。点击短信息进入后的界面如图42。点击“查看短信息”查看SIM卡里面储存的短息,如图43。图42手机短信选择页面图41手机主界面图43查看短信内容界面点击图42中的“发送短信息”,进入发信息的页面首先要输入电话号码,然后编写短信的内容,如图44所示。图44输入短信息页面点击图41界面上面的“通讯录”,可以查看SIM卡上面的联系人,进入通讯录后的界面如图45图45通讯录界面当有电话来时,在图41的界面上会有来电提醒,如图46所示。图46来电时的界面当有信息来到时图41的界面会显示“来信息了”,如图47所示。图47信息提醒界面拨打电话时首先输入要拨打的电话号码,然后按拨出键,等待对方的接受,如图48所示。图48拨打电话界面5手机系统测试51开发板环境的搭建1烧录VIVI使用JTAG烧录BOOTLOADERVIVI。2烧录LINUX内核ZIMAGE启动超级终端(波特率设为115200、数据位为8位、奇偶校验为无、停止位为1位、数据流控制为无。然后重启开发板,并按PC机的空格进入VIVI状态,如图51所示。然后输入命令LOADFLASHKERNELX,出现如图52所示。选择菜单栏传送发送文件,选择要烧录的镜像文件ZIMAGE,协议处选择XMODEM协议,然后单击“发送”即可,如图53所示。图51进入VIVI图52烧录内核命令图53发送内核3烧录根文件系统烧录根文件系统与烧录内核过程类似,首先在VIVI状态下输入命令LOADFLASHROOTX,然后选择菜单栏传送发送文件,选择要烧录的镜像文件ROOTCRAMFS,协议处选择XMODEM协议,然后单击“发送”即可。4启动开发板打开超级终端,重启开发板,在超级终端内会打印开发板的启动信息,所示表示启动成功。5配置开发板IP地址使用命令IFCONFIG配置开发板的IP地址为192168224100,命令为“IFCONFIGETH0192168224100”。注意使用此命令配置IP地址在开发板重启后会消失,所以每次重启要重新配置IP地址。(6)挂载网络文件系统使用交叉网线将PC与开发板连接,使用MOUNT命令将REDHATLINUX60上的一个目录挂载到开发板上的一个目录(TMP)上,这样在开发板上就可以访问REDHATLINUX60内的内容。命令为MOUNTONOLOCK192168224128/HOME/XIAOFU/MNT此命令是将IP地址为192168224128的REDHAT宿主机的/HOME/XIAOFU目录挂载到开发板的/MNT目录上,挂载成功后会在开发板的/MNT目录下看到REDHAT内/HOME/XIAOFU目录下的内容。52PC机环境的搭建521REDHATLINUX50的安装首先要在WINDOWS上安装一个虚拟机软件,虚拟机软件为VMWARE。然后再在VMWARE上安装REDHATLINUX50。安装REDHATLINUX50时可以选择CUSTOM定制安装,在选择软件PACKAGE时最好将所有包都安装,需要空间约27G,也可选择最后一项EVERYTHING,即完全安装,将安3张光盘的全部软件,需要磁盘空间大约5G,选择完全安装,提前为REDHATLINUX的安装预留大约615G的空间,在安装完REDHATLINUX50后还要安装LINUX的交叉编译器和开发库以及ARMLINUX的所有源代码,这些包安装后的总共需要空间大约为800M。522开发工具软件的安装开发嵌入式LINUX应用程序必须安装交叉编译器,安装方法为将ARMLINUXGCC432TARBZ进行解压即可。在REDHATLINUX50内执行解压命令TARXZVFARMLINUXGCC341TARBZ。解压完后会出现/USR/LOCAL/ARM/432目录结构,该目录下为进行基于ARM平台的嵌入式LINUX开发的交叉编译环境。解压完后还要设置环境变量,首先执行命令“VI/ROOT/BASH_PROFILE”找到行PATHPATHHOME/BIN将其修改为PATHPATHHOME/BIN/USR/LOCAL/ARM/432/BIN。到此为止,整个嵌入式LINUX的开发环境(宿主机部分)已经完成,然后重启REDHATLINUX50即可。53功能测试及结果1测试检测运营商的功能和信号强度首先找到两张SIM卡,一张移动的SIM卡,一张联通SIM卡,首先把两个SIM卡分别插进卡槽,运行手机可执行程序,启动GPRS模组,分别观察触摸屏上面显示。如果显示正确后,再测试手机的信号强度,分别把手机拿到不同的地方测试信号的显示状况。测试结果如表4所示。表4运营商和信号测试结果卡的类型中国移动中国联通无SIM卡显示内容中国移动中国联通无SIM卡在宿舍的信号强度4格4格4格在教室的信号强度4格4格4格2测试电话薄功能向电话簿中导入几百个人名,人名分别由英文字母,阿拉伯数字,中文汉字或者上述混合体组成,测试排序是否正确。增加联系人,测试联系人是否出现在列表中的正确位置。删除联系人,测试联系人是否已经从列表中删除。测试结果如表5所示。表5电话薄功能测试卡的类型中国移动中国联通联系人是否出现乱码否否能否删除联系人能能顺序是否正确正确正确3短信模块测试首先要在SIM卡里面存放几十条短信,然后测试短信有无出现乱码,用另一个手机往此手机上面发短信测试手机能否收到短信及界面出现来信提示。输入号码,测试是否能打出短信。测试结果如表6所示。表6测试短信功能卡的类型中国移动中国联通短信是否出现乱码否否能都接到短信能能能否发出短信能能有无新信息提示有有4拨打电话功能测试手机的主要功能就是接打电话,首先我们要键入手机号然后点击发送键,测试能否拨出电话,然后进入电话薄选择一位联系人测试能否拨出电话,最后测试能否接到被人的电话。测试结果如表7所示。表7拨打电话功能测试卡的类型中国移动中国联通能否拨出电话能能能否接到电话能能有无来电提示有有能否能听到对方声音能能结束语本系统完成了对LINUX手机的设计,包括手机系统硬件平台的搭建及软件系统的设计,实现SIM卡运营商的检测、手机信号强度的检测、手机电话薄功能、接打电话、收发短信的功能实现LINUX的基本功能,然后通过运行测试,优化代码和系统,最终完成满足需要的要求。由于LINUX代码是开源的我们可以在上面随意添加能实现的功能,由于LINUX有很好的移植性,可以实现跨平台的操作。如今科技的发展越来越迅速,手机的更新换代越来越快,ANDROID、WP操作系统占领大部分的手机,但是这些操作系统都是在LINUX系统的二次开发而演变出来的,里面的设计思想是很相似的,可以说LINUX是很多操作系统和语言的基础,所以通过对LINUX手机的设计的思想和手机的设计过程,我们可以潜移默化的去认识其他的更多的语言和系统。由于本人知识的局限性,有很多的功能还没实现,例如加入多媒体功能,实现来电铃声,短

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论