高通双卡方案RILD启动流程解析
需积分: 18 80 浏览量
更新于2024-09-07
1
收藏 115KB DOC 举报
"本文档详细解析了高通芯片在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卡功能的支持,并提供了与上层系统的有效通信机制。理解这个过程对于设备制造商和开发者优化网络功能、调试双卡问题至关重要。
2020-01-14 上传
2023-12-05 上传
2017-08-15 上传
点击了解资源详情
2012-12-17 上传
2018-06-07 上传
攻城狮学无止境
- 粉丝: 0
- 资源: 6
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜