QMI Ril和Android

Android Ril

       Android 的RIL部分主要分为RILJ和RILC两部分,其中RILJ运行在framework->telephony 的java部分,RILC运行在HAL层的native部分。在android1.0--7.0时代,RIL层架构如下图所示:

       RILJ与RILC间的交互是基于本地Socket的方式,RILJ与RILC间通过rild端口的Socket连接进行消息的交互和处理;RILC与Modem间通过qemud的Socket端口完成AT命令的发送和执行,完成Modem的操作控制和查询请求以及Modem主动上报的消息处理。

       到了Android 8.0+时代,google引入了HIDL,用于取代framework与HAL层之间的socket通讯方式,于是在android 8.0+时代RIL层架构如下图所示:

使用HIDL的原因大概有以下几点:

1、通讯效率提升,特别是对内存的使用。

2、进一步解耦android和modem厂商的版本兼容性问题。

3、编程接口更友好,和binder调用很类似。
 

QMI RIL

       我们知道手机是多核架构,主核 application processor 运行android操作系统,modem processor 负责射频和协议部分,还有其他一些soc负责专门的音频、射频、显示的处理。

       RIL架构是为了实现通话,因此归根到底需要和modem通讯,modem厂商有高通、mtk、海思、展讯等。不同的modem在接口、内部机制等方面都有不同,app processor部分都用android原生的那一套,但在RILC和modem通讯部分就存在厂商差异了。QMI就是高通设计的app processor与RILC通讯的机制。QMI框架包括client部分和server部分,其中QMI client运行在app processor,由rild 采用dlopen方式打开;QMI server运行在modem processor;client和server之间使用socket方式通讯。如下图:

发布了110 篇原创文章 · 获赞 158 · 访问量 119万+

猜你喜欢

转载自blog.csdn.net/dxpqxb/article/details/103382862
RIL