《Hzjnoc浅谈手机软件开发.pdf》由会员分享,可在线阅读,更多相关《Hzjnoc浅谈手机软件开发.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 生命中,不断地有人离开或进入.于是,看见的,看不见的;记住的,遗忘了.生命中,不断地有得到和失落。于是,看不见的,看见了;遗忘的,记住了。然而,看不见的,是不是就等于不存在?记住的,是不是永远不会消失?1 手机软件的运行环境 1。1 概述 手机可以被看作袖珍的计算机.它有 CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB 和串口)。它还有一个更重要的 I/O 设备,那就是空中接口。手机通过空中接口协议(例如 GSM、CDMA、PHS 等)和基站通信,既可以传输语音、也可以传输数据。手机的 CPU 一般不是独立的芯片,而是基带处理芯片的一个单元,也称作 CPU 核。基带
2、处理芯片是手机的核心,它不仅包含 CPU 核、DSP 核这些比较通用的单元,还包含通信协议处理单元。通信协议处理单元和手机协议软件一起完成空中接口要求的通信功能。随着芯片技术的不断发展,越来越多的外围电路可以被集成到基带处理芯片中,例如BAP,即基带模拟处理器。这样手机才可能越做越小、越做越便宜。1.2 单 CPU 和双 CPU 很多手机只有一个 CPU,也就是基带处理芯片中的 CPU 核.在这个 CPU 上既要跑通信协议,又要实现用户界面(称作 UI 或 MMI).当然 DSP 会分担一些计算量繁重的工作,例如语音编解码、安全层的各种算法等.在市场推动下,手机功能在不断发展。摄像头、MP3、
3、蓝牙这些功能可以依靠硬件,对CPU 的压力还不是很大,但 java 虚拟机、嵌入式浏览器等应用软件就会对 CPU 资源有较高的要求。单 CPU 的首要任务是完成通信协议。通信协议软件有着很精确的定时要求,如果这个CPU 还要兼顾很多应用软件的话,就难免吃力。于是双 CPU 手机应运而生。顾名思义,双 CPU 手机就是有两个 CPU 的手机,一个 CPU 专心把通信协议做好,另一个CPU 负责 UI、java 虚拟机、嵌入式浏览器等应用功能。两个 CPU 可以做在一个芯片里面,也可以分开。市场上的实际情况是,很多手机设计公司(Design House)没有基带处理芯片的开发能力,他们购买国外公司
4、的手机模块,自己在外面再加一块 CPU。模块跑通信协议,自己加的 CPU 跑 UI 和应用软件,两者通过串行口通信。很多 Design House 也会购买国外方案商的开发板级方案,自己做 PCB、软件上改改 UI 和外设驱动。市场上的智能手机基本上全是双 CPU 方案,什么 Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式 Linux 全是运行在第二块 CPU 上的。这些商业操作系统无法和无线通 信协议软件集成到一块 CPU 上。双 CPU 的手机功能比较多,但它们一般体积大,耗电多,成本高。现在市场上的大部分手机还是单 CPU 的.目前的大部分
5、手机应用,例如 Java、BREW、WAP、邮件、摄像头、闪存、MP3、蓝牙,在单 CPU 方案里都能实现。我认为不管 3G、4G 如何发展,小巧、实用、低成本的单CPU 方案总会占据较大的市场份额。微软在单 CPU 方案的手机市场还没有立足之地,又怎么谈的上什么引领方向呢?本文主要介绍单 CPU 手机,大多数论述也适用于双 CPU 方案的通信 CPU。1。3 3G 和 4G 3G 和 4G 是指第三代、第四代无线通信技术,对手机而言,它们改进的是空中接口的效率,空中接口能以更大的带宽传送数据。通过手机无线上网的速度会更快.这和话音业务、手机应用软件没有直接的联系。当然,手机的嵌入式数据业务由
6、于更高的带宽,会产生更多的可能性。不过这些可能性的实现还是会受到手机输入慢、显示屏小等条件的制约。2 手机软件的组成 2.1 概述 手机软件和 PC 机软件一样从中断向量表开始,因为比较小,看上去更加清晰。中断向量表的第一个跳转指令当然是跳到复位的处理程序,后面是中断处理、错误处 理的跳转指令.一上电,手机就跳转到复位的处理程序,开始检查内存、初始化 C 运行环境,然后创建第一个任务。这个任务会按顺序创建、启动其它任务。绝大多 数手机程序都是多任务的,但也有一些小灵通的协议栈是单任务的,没有操作系统,它们的主程序轮流调用各个软件模块的处理程序,模拟多任务环境.手机软件可以粗略地分成启动模块、操
7、作系统、协议栈、数据业务、本地存储、驱动程序、用户界面和其它应用.启动模块前面已经说过了,下面简单介绍其它部分。2。2 操作系统 操作系统在手机软件只占很小一部分。它的主要功能就是提供多任务调度、通信机制。有的操作系统会提供动态内存分配,定时函数,但这些都不是必须的.例如需要动态内存分配的模块,可以自己管理一个内存池,这样更易于隔离模块和预测内存需求。大多数手机的操作系统都是一个很小的内核,例如 REX、HIOS 等。高通 REX 的源代码连 C 代码加汇编也不过一千多行,编译后不过是 2、3K 的代码量。而一般手机软件有几百到上千个源文件、超过一百万行的代码。2。3 协议栈 协议栈是手机软件
8、最复杂的部分,它的复杂性在于它和基带处理芯片的设计密切相关。只有具备芯片设计能力的企业才可能开发协议栈。协议栈会使用基带处理芯片的所有资源。2。4 数据业务 数据业务主要有两种:在前一种,手机相当于一个调制解调器,PC 机通过手机上网,网络协议全在 PC 机上,手机提供数据链路。另一种就是嵌入式数据业务,手机内部包含 TCP/IP/PPP 等协议,有时还要实现 HTTP 和嵌入式浏览器。2。5 本地存储 手机都有本地存储功能,存储电话本、短消息、用户设定等。一般手机都有一个基于 flash的文件系统。早期的手机存储是基于 EEPROM 的.2。6 驱动程序 硬件驱动一般指外设驱动,不过有的外设
9、已经被集成到基带处理芯片中了。驱动程序包括键盘、电源管理模块、LCD、flash、RTC、串口、USB、SIM 卡或 UIM 卡、射频驱动等。2。7 用户界面 用户界面(UI)又称作人机界面(MMI),它负责和用户的交互,在必要的时候调用其它模块的功能。除了手机的必备功能外,用户界面也可能包含一些相对独立的应用程序,例如日程表、游戏等。2。8 其它应用 其它应用包括 Java 虚拟机、WAP 浏览器、邮件软件等,是一些比较大,又相对独立的应用模块。基本上讲完了。大家肯定看得挺没意思吧。这些程序和微软的 longhorn、metedata 有什么关系呢?手机程序绝大部分是用 C 语言写的。但对于
10、做应用软件的程序员要求具备面向对象、设计模式的思维能力,然后用 C 语言实现出来。高通的 BREW 就是用 C 语言硬生生地模仿 C+,弄出很多奇怪的宏。一般应用软件的开发不用这么死板,但对各种软件设计方法的了解还是必要的。3 手机的核心技术 手机的核心技术是芯片和协议栈,两者是密不可分的。芯片设计需要协议栈来验证,协议栈必须充分发挥出芯片的功能。芯片的 CPU 核、DSP 核都可以买到现成的单元,但通信协议部分就需要自己设计了.手机比较难做好的是耗电量、恶劣信号环境的性能等。4 第三方软件 4。1 原理 “第三方软件”这个词的含义比较宽泛.本文用它来指代不是硬编码在手机里,而是可以通过数据线
11、或网络下载到手机上,可以装载、运行,也可以删除的软件。前面讲到的软件都是完整程序的各个部分。这些部分会被放到一起编译,产生一个二进制文件,通过 JTAG 口(升级时可以用串口)下载到手机的 flash 中.手机一上电,就会从指定地址开始运行.这个地址的内容就是跳转到复位处理程序的跳转指令。哈哈,又讲回头了。第三方软件是指手机可以通过数据线或者网络下载一些可执行文件到文件系统中。然后有一个装载器可以执行这些文件。这样第三方就可以开发一些应用程序,下载到手机中来扩充手机功能。这些可执行文件现在主要有两种格式:java 程序和 BREW 程序。java 程序需要 java 虚 拟机装载运行。BREW
12、 程序是一个很奇怪的东西,它实际就是用与编译手机程序相同的编译器编译出来的目标代码.这些目标代码必须是可以重新定位的,即不能包含全局和静态变量。装载器将程序将执行权传给给 BREW 程序,一种听上去更安全的说法是调用 BREW 程序的入口函数。这个入口函数的位置在文件中是固定的。装载器在调用 BREW 程序的入口函数时会传入一个地址。通过这个地址,BREW 程序能够顺藤摸瓜,找到系统提供的各种 API 的地址,它通过这些 API 访问手机的显示、通信等功能.java 程序基本上是平台无关的,针对各种平台设计的 java 虚拟机隔离了平台的大部分特性,除了厂家特意提供的一些 OEM 功能。BRE
13、W 程序显然是平台相关,换一个 CPU,就不认识原来的目标码了。4。2 其它 除了 java、BREW 外,Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式 Linux 这些商业操作系统当然可以提供各种创建第三方程序的方法。在 这些环境写程序和在 PC 平台写程序很相近,基本上体会不到嵌入式编程的特点,只是屏幕小一些,输入麻烦一些。这些第三方软件不是必需的。手机在 3G 的市场中只占了一个较小的部分,网络是大头。而第三方软件相对于手机来说,所占的份额就更小了.程序员有一个嵌入式移动开发的专栏,总在讲这些手机第三方软件的开发手机软件只是嵌入式软件的一部分。第三方软件在嵌入式移动开发中又能占到多少比重呢?5 结束语 需要说明:关于以后的市场究竟以单 CPU 手机为主,还是以双 CPU 手机为主的问题,我倾向于单 CPU 手机,但这只是我个人观点.实际市场会怎么发展,殊难预料.对于一个芯片两个 CPU 核的方案,从软件角度看我是很赞成的。将应用软件和协议软件分开,协议软件可以更加稳定,应用软件可以自由发展,使用大量在 PC 环境已经成熟的技术。
限制150内