高通双卡方案RILD启动流程解析
"本文档详细解析了高通芯片在Android系统中的双卡RILD(Radio Interface Layer Daemon)的启动流程,特别关注RILD如何处理双卡功能,包括启动配置、客户端ID分配以及通信机制。" 在高通双卡方案中,RILD(Radio Interface Layer Daemon)是关键组件,负责与射频硬件交互并提供电话和数据服务。RILD的启动流程分为以下几个步骤: 1. **启动配置**: - 卡1:启动过程始于\system\core\rootdir\init.rc,这里启动了名为`serviceril-daemon`的服务,并执行`/system/bin/rild`。在启动时,命令行参数argv未包含`-c`开头的客户端ID,因此默认使用ID为0。 - 卡2:启动于`device\qcom\common\rootdir\etc\init.qcom.rc`,通过`serviceril-daemon1/system/bin/rild-c1`来启动,但在`init.class_main.sh`脚本中,只有客户端ID为1的RILD被激活。这是由于系统设置,可能在其他地方单独启动了`ril-daemon1`。 2. **匹配Socket和库加载**: - RILD会为每个卡匹配相应的Socket名称,确保它们能正确通信。同时,它会获取加载参考库`libril-qc-qmi-1.so`的路径,这是高通特定的RIL库,用于处理QMI(Qualcomm Message Interface)协议。 3. **客户端ID的传递**: - 客户端ID通过main函数的argc参数传递给`qcril.c`的`rilInit`函数。`RIL_Init`会将此ID设置到全局变量`qmi_ril_process_instance_id`中,这样在RIL请求处理时,可以根据这个ID来区分是处理卡1还是卡2的请求。 4. **请求处理**: - 两个RILD实例的`ril.cpp`都会调用`onRequest_rid`函数,但通过本地全局变量`qmi_ril_process_instance_id`来确定服务哪张SIM卡。这样,即使请求接口相同,也能正确地路由到对应卡片的硬件接口。 此外,文档还提到了Android系统中,native层与framework层通信的一种方法,即使用socket。通常JNI是两者间的桥梁,但仅支持framework调用native。通过socket通信,native层可以主动向framework层发送消息,实现双向通信。这种方式虽然比Android原生的Binder机制更为灵活,但实现相对复杂。 总结来说,高通双卡RILD的启动流程涉及启动配置、客户端ID的分配、库加载以及请求处理的逻辑,这些都确保了对多SIM卡功能的支持,并提供了与上层系统的有效通信机制。理解这个过程对于设备制造商和开发者优化网络功能、调试双卡问题至关重要。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展