手机本质上是一个实时嵌入式系统。
嵌入式系统是以应用为中心和以计算机技术为基础的,并且软硬件可裁剪的,能满足应用系统对功能、可靠性、成本、体积和功耗等指标的严格要求的专业计算机系统。通常由嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。
嵌入式应用软件开发要使用交叉开发环境。
交叉开发环境是指实现、编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境中。
交叉开发硬件环境包括宿主机和目标机。
宿主机(Host)是一台通用计算机,可以是PC或工作站。它通过串口或网络连接与目标机通信。
目标机(Target)可以是嵌入式软件应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。
实时系统(RealTime System)是一个能够在指定或者确定的时间内完成系统功能及对外部或内部事件在同步或异步时间内做出响应的系统。
响应时间(Response Time)是计算机从识别一个外部事件到做出响应的时间,
实时系统根据响应时间,可分为3种类型:
弱实时系统-响应时间可以是数十秒或更长;
一般实时系统-响应时间可以在秒的数量级上,如手机系统;
强实时系统-响应时间在毫秒或微妙的数量级上;
在RTOS中,任务(task)是拥有资源和独立调度的基本单位。与操作系统中的线程相似,它是一个具有独立功能的无限循环程序的一次运行过程,具有动态性、并行性和异步独立性。
动态性指的是任务的状态不停地在变化。并行性指的是系统中的多个任务在宏观上是并行的。异步独立性指任务是系统中独立运行的基本单元,也是内核分配和调度的基本单元,内阁任务运行时各自相互独立。任务是实时系统中独立运行的基本单元,它是一段没有返回的代码,可以有自己的运行参数,但返回类型总是void。
在实时操作系统中,任务的实体由系统给它分配的优先级、任务堆栈和任务控制块3部分组成。
大多数手机开发人员,最初接触到的都是开发PC系统应用,手机与PC相比,有许多不同之处:
1开发PC应用软件的系统环境和软件的实际运行环境相差不大;但开发手机软件,基本都是在宿主机-PC上开发,然后通过下载线将软件下载到目标机-手机中,开发和运行是两个不同的环境。
2 手机CPU运行速度低;
3手机内存和硬盘容量小;
4手机显示器小;
5使用PC系统时,基本都是利用外接电源供电,电量属于无限供给(未接充电器的笔记本除外);但使用手机时,主要利用自带的电池供电,电量有限;
6 PC系统基本都使用全键盘,但手机的按键个数少,或纯触控操作,无键盘;
7手机的主要功能是接打电话和收发信息,所以这两个任务的优先级最高,也就是在任何时刻,都尽可能的让用户可以接听电话和收到信息;
8手机系统有WatchDog重启机制;
当然还有许多其他不同之处,相对于PC开发,手机开发可以说是一个全新的领域。
手机软件开发除了要了解基本的软件开发、编程知识外,还会涉及嵌入式系统开发、ARM开发、通信协议(GSM、GPRS、CDMA等)、网络协议(HTTP、TCP/IP等)、WAP、MMS、J2ME、串口通信等各方面知识。