mobile android双模手机的开发流程及框架.doc

上传人:ni****g 文档编号:544474495 上传时间:2023-08-29 格式:DOC 页数:7 大小:70KB
返回 下载 相关 举报
mobile android双模手机的开发流程及框架.doc_第1页
第1页 / 共7页
mobile android双模手机的开发流程及框架.doc_第2页
第2页 / 共7页
mobile android双模手机的开发流程及框架.doc_第3页
第3页 / 共7页
mobile android双模手机的开发流程及框架.doc_第4页
第4页 / 共7页
mobile android双模手机的开发流程及框架.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《mobile android双模手机的开发流程及框架.doc》由会员分享,可在线阅读,更多相关《mobile android双模手机的开发流程及框架.doc(7页珍藏版)》请在金锄头文库上搜索。

1、WM Platform双模手机的开发流程及框架 分类: +3G/移动开发 2009-04-28 22:42 185人阅读 评论(1) 收藏 举报 当前,基于WM(Windows Mobile)/UNIX/Linux系统的嵌入式开发已成为终端通讯产品的主流开发模式。终端通讯产品,特别是手机,随3G时代的到来,将引领当前潮流。双模式手机产品更是未来手机的发展趋势。工作之余,整理了WM Platform双模手机的开发流程及框架。首先,请一定要弄清楚Windows程序内部运行原理。Windows应用程序、操作系统与输入输出设备三者之间的交互如下:其中:(1)Windows程序设计是一种事件驱动方式的程

2、序设计模式,主要是基于消息的。当用户需要完成某项功能时,会调用操作系统的某项支持,然后操作系统将用户的需要包装成消息并投递到消息队列中,最后应用程序从消息队列中取走消息并进行消息响应。(2)应用程序通过函数调用的方式来通知操作系统执行相应的功能。一般情况下,操作系统所能完成的每一个功能都有一个函数与其对应。因此,应用程序对这些函数的调用就称为系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口,简称Windows API(Application Programming Interface)。(3)操作系统将每一个事件都包装成一个称为消息的结构体MSG来传递给应用程序,然后

3、应用程序对事件进行处理。对事件做出反应的过程称为消息响应。其次,请弄清楚WM Platform双模手机开发框架中每一层的功能,便于Bug的定位及调试。一般情况下,基于WM Platform双模手机的开发框架图如下:其中:(1)左边为基于WM Platform的主模式,右边为内嵌的副模式。(2)主模中各层的主要功能如下:APP:用户信息的显示和用户操作的管理。同API进行交互。API:给APP提供调用接口和同RilProxy进行交互。实现系统的兼容性、重用性和安全性。RilProxy:將进程函数回调到RilDriver层。同API和RilDriver进行交互。RilDriver:同RilProx

4、y和Module进行交互,包括Active信息。Module:实现网络的通信功能。同RilDriver进行交互。(3)副模中各层的主要功能如下:APP:通过主模中提供的Cprog.exe程序实现与主模中APP相同的功能。TSPI:由主模中API层提供的TSPI来进行交互。 Driver:作用等同于主模中的RilProxy层和RilDriver层 。 Module:实现网络的通信功能。同RilDriver进行交互。最后,请注意如下两点:(1)副模式的流程及框架理论上应与主模式相同,但实际设计中常把作交互的层合并在一起。因此,副模式的流程及框架可以有所不同。(2)WM有很多不同版本,具体细节可查询

5、最新的MSDN。注:(1)双模手机中涉及的术语可能有不同的名称。(2)为适应发展,Microsoft已将WM改成WP(Windows Phone)了。优化RIL驱动,巧解WinCE电话漏接难题 分类: wince 2010-06-29 21:11 136人阅读 评论(1) 收藏 举报 随着3G移动电话热潮的高涨,我公司许多的嵌入式移动产品也正计划加入无线上网和电话功能。近期,公司委派我负责一个在WinCE 6.0平台下集成移动电话、无线上网和收发 SMS功能的项目。但没有想到的是这个项目却让我陷入到反复调试的痛苦之中。原因是这个在WinCE 6.0平台下开发的系统经常出现:漏接电话、或有信号但

6、电话无法拨出、或短信收发不正常、或通话自动中断和通话断断续续等问题。初期我怀疑是因为信号质量问题所导致,所以花了大量时间和精力在硬件上,如天线和GSM射频通讯模块上。但后来却发现原来是我在Win CE 下没有进行优化RIL接口驱动所造成的问题。在这里与大家分享一些在此过程中得到的经验和教训。一WinCE系统电话漏接的原因分析在无线移动通讯上,漏接的意思是指机器设备接通了,但机器设备却没反应。一般来说,这个故障可能出现在两个层面:一是GSM射频通讯基带部分没有发出有来电的消息;二可能是WinCE系统没有对GSM模块的来电消息做出响应。(1)硬件上没有发出有来电消息第一种漏接的原因可能是GSM射频

7、通讯基带部分没有发出有来电的消息,这部份主要是因为GSM硬件上出现了问题,使到系统根本没有输入信号。例如,在有信号的场合下但电话无法拨出时,很可能就是GSM信号质量出现问题。所谓信号质量问题是指在正常情况下接收到的信号强度明显低于正常标准,这是与GSM射频硬件相关的故障。因此,我把时间和精力都集中在天线接收和GSM射频通讯硬件上,例如更换增强型的天线和使用经测试合格的GSM射频芯片和基带处理芯片。但经过多次硬件调试和更换,却发现此问题一直存在,后来我决定先排除对GSM硬件可能存在故障的怀疑。(2)WinCE系统没有对来电消息做出响应第二种漏接的原因可能是WinCE系统对来电信号没有做出响应。后

8、来,经过多次调试,我发现问题还真是出在WinCE 6.0系统的软件部分。用专业术语的话说,就是在通讯接口层RIL模块(即Radio Interface Layer,无线接口层)和优先级处理上出了问题。这个RIL层主要是用于沟通WinCE系统与GSM通讯模块,并且对GSM通讯模块的行为做出适当的响应与动作,例如启动数据连接、发送 SMS 消息等。换句话说就是,当问题出在WinCE软件模块时,就算GSM信号强度提高了,该漏接的还是会漏接,该挂断的还是会挂断。二WinCE 6.0 RIL接口驱动详细分析 (1)WinCE 6.0新加入的电话功能一般来说,要在基于WinCE平台的产品上具备无线通讯功能

9、(如拨号上网、拨打电话、收发短信)的方法有两种:一是选择让用户外接手机模块;二是在嵌入式产品上集成手机模块。如果是外接手机模块,那么手机只是起到在上网浏览期间接收和发送数据的作用,而如果是嵌入式设备自身集成手机模块,那么就可以很方便的实现无线通讯的全部功能。因此,为了实现嵌入式设备更好的增加无线通信功能,WinCE 6.0 提供了连接移动电话网络所需的接口函数。例如,WinCE 6.0 提供了cellcore.dll组件,这个动态链接库扩展了 Win32 API函数,其作用是用以支持各种移动电话服务,例如启动数据连接、发送 SMS 消息等。另一个重要组件是无线接口层 RIL驱动程序 ril.d

10、ll。该组件为应用层与移动电话硬件的连接提供了低级别接口。在早先几个版本的WinCE是不支持直接拨打电话和发送 SMS文本消息的。因此,在以前要想在WinCE上构建移动电话,OEM厂商就必须开发自己的接口层,然而这并非易事。现在有了这个RIL接口,要想在 WinCE平台上构建移动电话程序,就不用OEM厂商再自己开发相应的接口层了,这一功能也大大激发OEM厂商在WinCE平台上构建移动电话程序的热潮。(2)什么是RIL(Radio Interface Layer)组件?在WinCE 6.0新加的RIL无线接口层组件原本是Windows Mobile里的,它的主要工作为连接WinCE操作系统和电话

11、模块,RIL的主要作用是用于维护和关联无线GSM通讯模块的状态和事件消息。微软的帮助手册是这样介绍RIL的,作为无线通讯的一个非常重要的组件,RIL使各种无线语音和数据应用成为可能,也使到运行在WinCE 6.0上的软件可以通过RIL无缝地与GSM/GPRS或者CDMA2000 1X modem通信。RIL的位置是处于GSM无线基带系统的协议栈之上,而在WinCE系统的CellCore层之下。RIL跟上层通讯主要采用两种方式,一种是通过Socket发送与接收消息的方式来实现,还有另外一种方式是通过TCP/IP直接访问内核中的shared memory,进行RPC调用,这种方式主要应用在数据模式

12、上。因此,RIL组件能隐藏GSM无线基带硬件上的一些细节,也就使到OEM厂商可以根据自己的需要将不同型号的无线modem集成到它们的产品之中。简单的说,就是只要采用了RIL驱动模块和底层的GSM通讯模块,WinCE系统就具有了移动电话的功能。一是因为RIL提供了语音、数据、SMS短信、 SIM卡管理以及STK应用的功能,也包括了EXTAPI、拔号盘等移动电话的其它功能。二是因为从软件的角度来看,RIL工作在PPP、TCP/IP协议之下,能把AT命令的发送以及Response响应的解析,也能把数据可靠的传输。而且,除了对网络协议的支持,RIL也支持SMS、Voice Call等功能。(3)RIL

13、驱动程序的结构解析从RIL组件的功能我们可知,开发一个移动电话的设计起点,是需要有效的进行RIL驱动程序的开发。因为RIL驱动程序为应用程序提供无线通信相关的服务,包括呼叫控制、短消息、GPRS等功能。而且对于上层应用程序来说,也可以抽象地把RIL驱动程序看作逻辑设备,它只需要和RIL驱动程序通信就能够获得所需要的服务。因此,RIL接口层驱动可以按照流驱动Stream I/O的规范来设计,这样做的好处是应用程序可以把设备看作文件,通过文件接口来访问RIL。在WinCE系统中,一个加载式驱动程序通常会被分成与硬件相关的PDD层和与硬件无关的MDD层两部分。MDD实现的是和平台无关的功能,它描述了

14、一个通用的驱动程序框架,而PDD是和硬件以及平台相关的代码组成。MDD会调用PDD中特定的接口来获取硬件相关的信息。因此,在使用层次型驱动的时候,一般只需要基于相近的样列驱动程序,针对特定的硬件只修改PDD程序,MDD建立的框架可继续使用。在根据微软帮助手册的建议,RIL 驱动程序的基本框架最好是采用MDD+PDD结构。一般来说,微软在WinCE中提供了很多通用驱动程序的MDD样本,所以关键在于调试PDD层。因为不同的GSM/GPRS通讯模块,其PDD层的实现是不一样的。例如,层次模型RIL_XXX是提供给DeviceManger的 stream Interface。而在RIL Service

15、这一层,Dispather 会将request code 分发给相应的function,例如SMS短信息发送。然后SMS 的function 会发消息给 RIL Device,目的是为了请求以AT命令的形式发送给 GSM modem。也就是说,公用的MDD部分已经做好了,现在只需要针对不同的GSM模块进行不同的PDD驱动开发,这样就可以大大地提高开发效率了。(4)WinCE如何通过RIL实现电话功能?现在我们从WinCE线程的角度来观察RIL的工作流程。RIL主要包括RIL Stub 和 RIL Driver 两个部份。RIL Stub 和 RIL Driver 都拥有自己的线程,名为RILT

16、hread。应用程序调用RIL驱动程序的工作流程如下:应用程序的进程在自己的进程空间里,以调用RIL Proxy方式发送请求。RIL Proxy 以IPC方式把请求传给 Device Manager。Device Mananger 根据操作码,将请求分发到相应的RIL驱动程序。RIL Stub接收到操作码后根据PID做Context切换,然后把请求转发给RIL Driver。最后,对应于用户进程Context中的RIL Driver会开始处理操作码。例如,RIL Driver将AT命令发给GSM modem,然后等待返回的response。因此,从以上的工作流程来看,RIL驱动模块性能的好坏会直接影响着所有无线通信应用相关的软件,而驱动程序设计是否经过优化又影响着RIL驱动程序的性能。三优先级处理时需要

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号