Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293720
  • 博文数量: 748
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 8270
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-12 17:57
文章分类

全部博文(748)

文章存档

2010年(748)

我的朋友

分类:

2010-10-28 10:36:06

  android的ril驱动模块, 在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分,另有一radiooptions可供自动或手动调试使用。都依赖于include目录中ril.h头文件。目前cupcake分支上带的是gsm的支持,另有一cdma分支,这里分析的是gsm驱动。   gsm模块,由于modem的历史原因,ap一直是通过基于串口的at命令与bb交互。包括到了目前的一些edge或3g模块,或像omap这类ap,bp集成的芯片,已经使用了usb或其他等高速总线通信,但大多仍然使用模拟串口机制来使用at命令。这里的ril(radio interface layer)层,主要也就是基于at命令的操作,如发命令,response解析等。(gprs等传输会用到的mux协议等在这里并没有包含,也暂不作介绍。)   以下是详细分析,本文主要涉及基本架构和初始化的内容:   首先介绍一下rild与libril.so以及librefrence_ril.so的关系:   1. rild:   仅实现一main函数作为整个ril层的入口点,负责完成初始化。   2. libril.so:   与rild结合相当紧密,是其共享库,编译时就已经建立了这一关系。组成部分为ril.cpp,ril_event.cpp。libril.so驻留在rild这一守护进程中,主要完成同上层通信的工作,接受ril请求并传递给librefrence_ril.so, 同时把来自librefrence_ril.so的反馈回传给调用进程。   3. librefrence_ril.so:   rild通过手动的dlopen方式加载,结合稍微松散,这也是因为librefrence.so主要负责跟modem硬件通信的缘故。这样做更方便替换或修改以适配更多的modem种类。它转换来自libril.so的请求为at命令,同时监控modem的反馈信息,并传递回libril.so。在初始化时, rild通过符号ril_init获取一组函数指针并以此与之建立联系。 如果喜欢android gsm驱动模块详细分析请收藏或告诉您的好朋友.
阅读(269) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~