0 引言
随着嵌入式技术和通信技术的发展,在手机领域,智能手机已成为手机发展的主流趋势。目前在智能手机领域,从处理器选型、操作系统选择以及应用程序开发都是研究的热点。在高校计算机相关专业的课程中也越来越多地涉及到智能手机的相关内容,越来越多的学生也都投入到智能手机的学习和开发阵营中来。因此,为这些学生提供相关的实验设备显得很必要。
本文提出基于三星S3C2410芯片为核心构建智能手机硬件实验平台,并结合无线通信模块实现智能手机电话短消息功能。为学生进行智能手机相关的实验提供了平台,通过本平台,学生可以自己动手完成智能手机设计时的各种软件开发,改变了传统的验证式的实验平台模式,有利于学生创新能力的培养。
1 智能手机软硬件实验平台设计
手机的硬件实现方式主要有3种:
(1)只用基带芯片,通常称作功能手机;
(2)基带芯片加协处理器,这类产品是在功能手机的基础上增强了多媒体处理功能;
(3)基带处理器加应用处理器。这是智能手机所采用的设计,基带处理器用于通信,应用处理器用于多媒体和其他应用。
在设计智能手机硬件平台时,需要注意以下几个方面:
(1)应用处理器应具有足够高的主频用以保证系统的运行速度,使各种应用能够运行畅通;
(2)系统应有足够的内存空间用以保存应用程序和用户数据;
(3)具备良好的人机交互界面,用户可以方便地进行操作。基带处理器性能稳定,保证用户实时通信。
1.1 硬件平台设计
硬件主要包括调试接口、存储系统、GSM/GPRS通信模块、人机交互模块。核心控制器芯片采用三星公司的S3C2410处理器,频率稳定运行在203 MHz。作为实验平台,完成智能手机的基本功能,不要求大量数据处理,因而203 MHz的主频能够保证系统的运行速度。系统采用64 MB SDRAM和64 MB NANDFLASH作为存储系统,从而保证系统和用户的存储空间。通信上,应用处理器通过UART2连接基带处理器即GSM/GPRS通信模块,GSM/GPRS模块采用SIMCOM公司的SIM300模块,该模块具备完善的GSM/GPRS三频/四频解决方案,支持GSM通话及短消息收发和GPRS数据传输,可以方便地通过AT命令进行控制。系统通过LCD显示图形操作界面,采用触摸屏代替传统键盘操作,界面更友好,操作更方便。同时提供扩展接口用于学生扩展智能手机的其他功能,如利用以太网接口实现网页浏览等。整个系统的硬件框图如图1所示。
1.2 系统软件平台设计
系统软件平台的功能是为应用程序开发提供平台。系统软件以嵌入式Linux操作系统和嵌入式GUI Qtopia为基础来设计的,整个软件平台的架构如图2所示。
1.2.1 Bootloader
Bootloader是系统上电后运行的第一段代码,主要工作是完成硬件的初始化和为加载操作系统准备好条件。它的实现是依赖于硬件的,不同体系结构开发板的Bootloader变化很大。为了更好地支持目标板的硬件设备,该系统选择在ADS1.2集成开发环境下开发自己的Bootloa-der。Bootloader的实现过程主要分为以下2个阶段:
(1)主要进行与CPU内核以及存储设备密切相关的初始化处理工作,这部分的代码通常用ARM汇编指令编写,包含在start.S文件中。通常包括一些步骤:
①硬件初始化工作。包括关闭看门狗;屏蔽所有中断;设置处理器时钟和工作频率;初始化外部寄存器;初始化堆栈指针。
②为阶段(2)准备RAM空间,并把阶段(2)的代码拷贝倒RAM,跳转倒阶段(2)的入口点。
(2)完成一般的启动流程以及提供目标板设备的驱动支持,这部分会被拷贝倒RAM中执行,这段代码通常由C语言来实现,具有较强的可读性和移植性。
通常包括一下步骤:
①通过set_gpios()函数完成通用I/0设置;
②通过mere_map_init(),mmu_init()函数完成内存映射和内存管理单元初始化;
③初始化MTD设备,使用mtd_dev_init()函数;
④拷贝NAND FLASH中的Kernel映像文件和根文件系统映像到RAM空间中;
⑤跳转到内核的第一条指令处。
至此,Bootloader的任务结束,接下来的任务由操作系统完成。
1.2.2 操作系统的剪裁、移植
操作系统负责对整个的外围设备进行管理和对各个软件任务进行调度。这对于智能手机而言是非常重要的。操作系统采用开源、免费的Linux,基于嵌入式Linux 2.6版本进行移植,主要移植过程包括建立开发环境、下载内核源码、修改配置文件、配置内核、编译内核、编译模块几个步骤,因为移植的过程大致相同,这里只做简单介绍:
(1)宿主机上的交叉编译工具采用arm-linux-gcc-3.4.1 ;
(2)修改commom-smdk.c文件,为NANDFLASH设置分区;
(3)修改配置文件fs/Kconfig,使内核支持启动时挂载devfs;
(4)配置内核;
(5)编译内核与模块,用Busy-box工具制作yaffs文件系统。
1.2.3 嵌入武GUI Qtopia的移植
嵌入式GUI用于开发短信、电话应用程序图形界面,本文采用Trolltech公司的Qtopia作为图形界面库,采用版本是Qtopia-core-opensou rce-src-4.4.3。移植的主要工作有:
(1)修改qmouselinuxtp_qws.h文件,使Qtopia支持触摸屏;
(2)配置、编译、安装;
(3)拷贝相关的库文件到开发板,并设置环境变量。
2 应用程序设计
电话和短信应用程序是智能手机最基本也是最核心的应用。电话短信应用程序设计的主要工作包括:电话短信应用程序的流程设计、通信模块和应用处理器的串口通信以及电话和短消息应用程序界面开发。
2.1 电话/短信应用程序流程
应用程序采用定时器函数来控制整个程序的流程。定时器每200 ms触发1次。
新电话、新短信的检测流程如图3所示,应用程序初始化需要对GSM/GPRS通信模块与应用处理器之间的接口进行初始化,此外还要定义1个200 ms触发的定时器。系统初始化完毕之后,定时器触发开始读串口数据进行判断。当串口无数据时,等待下一次定时器出发;当串口有数据时,将串口的数据进行判断;当数据中有新短信提示符时,按照PDU短信的解码格式对该短信进行解码,并调用UI界面提示用户新短信到达,询问用户是否阅读;当数据中有新电话提示符时,调用UI界面,询问用户是否接听。
当需要发送短信或拨号时,应用程序流程如图4所示。当用户调用发信界面编辑好短信,并输入完收信方,点击发送钮时,应用程序首先判断短信中心号码和接收信息号码是否正确,若不正确,提示用户错误;若号码和号码格式均正确,便对要发送的短信内容按照进行PDU短信格式进行编码,并向串口写AT命令以便将该短信发送出去。拨号和挂断电话的流程很简单,只需要向串口写入ATD+所拨号码以及ATH就可,当拨号错误时,提示用户拨号错误。
2.2 通信模块串口通信的实现
串口是连接智能手机应用处理器和GSM/GPRS通信模块的接口,串口通信流程是打开串口、串口的初始化设置、读/写串口、关闭串口,如图5所示。
在应用程序初始化时初始化时需要对串口进行初始化,对串口的初始化主要是设置串口的一些参数,包括以下几个部分:保存以前的串口设置、建立新的配置、设置波特率、设置数据位、设置奇偶位、激活当前配置、处理要写入的引用对象、设置最少字符和等待时间、设置停止位。只有串口初始化完毕之后,应用程序才能对串口进行相应操作。
2.3 用程序用户界面的设计
用户界面是人机交互的接口。本文采用Linux下常用的界面设计工具Qt来设计应用程序所需的各种UI界面。本文设计的拨打电话、发送短信的界面如图6所示。
当点击界面上的按钮如拨号、发送时,利用其信号和槽机制,将其和底层相应的函数如拨号函数、发信函数相关联就可以实现拨号和发送信息的功能。用户就可以利用该界面进行拨打电话和发送短信了。
3 结语
本文设计了一种基于嵌入式Linux的智能手机电话短信实验模块。构建了智能手机软、硬件平台,并完成了电话短信的应用程序设计。为学生进行智能手机开发的相关实验提供了平台。目前,本平台已应用于北京化工大学通信实验室创新型实验平台中,并为学生进行智能手机实验进行服务。在后续的设计中,考虑将嵌入式数据库移植到应用程序中以实现电话短信中的名片夹以及收件箱等功能,并开发基于该硬件平台下的其他应用程序如MP3播放等模块以提供给学生进行试实验和学习。
欢迎转载,本文来电子发烧友网(//www.obk20.com/)
评论
查看更多