转载自http://blog.csdn.net/fengkehuan/article/details/6203076
Android RIL结构分析与移植
介绍
本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。
包括四个主题:
1.Android RIL框架介绍
2.Android RIL与 WindowsMobile RIL
3.Android RIL porting
4.Android RIL的java框架
在本文档中将Android代码中的重要模块列出进行分析,并给出了相关的程序执行流程介绍,以加深对模块间交互方式的理解。
对于java代码部分,这里仅进行简单的介绍。如果需要深入了解,可以查看相关参考资料。
本文档中还对Android RIL的Porting部分内容进行了描述和分析。
针对对unix操作系统环境并不熟悉的读者,本文档中所涉及到的相关知识包括:
Unix file system
Unix socket
Unix thread
Unix 下I/O多路转接
以上信息可以在任意一份描述Unix系统调用的文档中找到。
1.Android RIL框架介绍
术语:
fd
unix文件描述符
pipe
unix管道
cond
一般是condition variable的缩写
tty
通常使用tty来简称各种类型的终端设备
unsolicited response
被动请求命令来自baseband
event loop
android的消息队列机制,由unix的系统调用select()实现
init.rc
init守护进程启动后被执行的启动脚本。
HAL
硬件抽象层(Hardware Abstraction Layer,HAL)
1.1.Android RIL概况:
Android RIL提供了无线硬件设备与电话服务之间的抽象层。
下图展示了RIL在Android体系中的位置。
android的ril位于应用程序框架与内核之间,分成了两个部分,一个部分是rild,它负责socket与应用程序框架进行通信。另外一个部分是Vendor RIL,这个部分负责向下是通过两种方式与radio进行通信,它们是直接与radio通信的AT指令通道和用于传输包数据的通道,数据通道用于手机的上网功能。
对于RIL的java框架部分,也被分成了两个部分,一个是RIL模块,这个模块主要用于与下层的rild进行通信,另外一个是Phone模块,这个模块直接暴露电话功能接口给应用开发用户,供他们调用以进行电话功能的实现。