高通平台目前都是非对称多核心,最主要的是AP和Modem。两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式,但是借鉴了TCP/IP的框架设计。它的框架是这样的,内核态:基于共享内存实现链路层,扩展协议域;用户态,封装出类似于socket函数的接口,用于用户态使用。而我所描述的QMI就是用户态使用的API接口,这些接口非常类似于socket,只要有个socket编程的经验的是会容易理解的。 ### RIL&QMI框架与功能 #### 一、QMI框架设计原理 **QMI**(Qualcomm MSM Interface),即高通消息接口,是高通公司为了满足其平台内部不同组件之间的通信需求而设计的一种通信协议。在高通平台中,主要涉及到两个核心组件:**AP**(Application Processor)和**Modem**。这两个组件之间如何实现高效且可靠的通信成为了一个重要的技术挑战。 考虑到传统的**TCP/IP协议**虽然是一种非常成熟的进程间通信机制,但并不完全适用于这种特定的场景,因此高通并没有直接采用TCP/IP的方式,而是借鉴了TCP/IP的框架设计理念,结合自身的特点设计了一套独特的通信方案。这套方案的核心特点在于: - **内核态**:基于共享内存来实现链路层,并在此基础上扩展了协议域。这种方式不仅能够提高通信效率,还能够简化协议栈的设计复杂度。 - **用户态**:提供类似于socket的API接口,使得开发者可以在用户态轻松地使用这些接口进行通信。这样的设计让开发过程更加直观和便捷,对于有socket编程经验的人来说尤其如此。 #### 二、QMI框架介绍 QMI框架的设计旨在通过消息机制实现与不同操作系统(如Windows、Linux等)的应用程序进行灵活的交互。它还允许主机客户端根据实际需求定制化裁剪无线通信功能,如电话呼叫、短信发送、WiFi连接以及IMS服务等。 QMI通过**Service**和**Client**两种机制来进行消息传递。具体而言,一个Service可以对应多个Client,但一个Client只能与一个特定的Service相联。高通原生提供了许多Service,覆盖了诸如电话呼叫、网络接入、短信处理、GPS定位等多种功能。 #### 三、QMUX与TLV机制 **QMUX**(QMIMultiplexing Protocol)是QMI协议的一部分,用于处理数据的复用和解复用。它负责将QMI消息封装成QMUX格式,并通过共享内存传递给BP侧(Baseband Processor)。整个QMUX控制信道结构主要包括以下几个关键部分: - **I/FType**:消息类型标识,长度为一个字节,通常值为0x01表示QMUX消息。 - **Length**:消息长度,不包括I/FType字段。 - **ControlFlags**:控制标志位,用于指示消息的传输方向。该字段长度为1字节,其中第7位为方向标志,0表示由控制点发送,1表示由服务端发送。 - **ClientID**:控制点的唯一标识符,用于区分不同的客户端。 **TLV**(Type-Length-Value)是一种广泛应用于通信协议中的数据组织形式,也是QMI消息的主要组成部分。QMI中的每个服务都会定义一系列的请求和响应消息,每个消息都会包含一个或多个TLV项。这些TLV项用来携带具体的输入或输出参数,例如请求中的配置参数、响应中的结果状态等。 - **请求**:由控制点发出,用于请求服务执行特定操作。 - **响应**:由服务端返回,作为对请求的响应,包含了操作结果和可能的错误状态。 - **指示**:由服务端主动发送,用于通知控制点有关底层状态的变化信息,例如信号强度变化、网络连接状态改变等。 #### 四、QCCI/QCSI机制 除了传统的QMI机制外,高通还引入了**QCCI**(Qualcomm Communication Channel Interface)和**QCSI**(Qualcomm Communication Service Interface)这两种新的消息传递机制。这两种机制相比传统的QMI机制具有更多的灵活性和便利性,可以进一步降低开发者的负担,提高开发效率。 - **QCCI**主要用于实现不同组件之间的消息传递,支持多种消息类型,包括但不限于请求、响应和指示。 - **QCSI**则更侧重于服务层面的交互,通过定义一套标准化的服务接口规范,使得服务间的通信变得更加简单和一致。 无论是QMI本身的设计理念还是QMUX与TLV的具体实现细节,以及后续推出的QCCI/QCSI机制,都体现了高通在通信领域深厚的技术积累和不断创新的精神。这些机制不仅解决了AP与Modem之间高效通信的问题,也为开发者提供了强大而灵活的工具,极大地促进了移动通信技术的发展。
2025-10-30 18:11:49 2.37MB QMI与RIL
1
RIL是Android 的无线接口层.负责提供电话服务.是上层应用和下层硬件modem之间的中间层。负责数据的可靠传输、AT命令的发送以及响应(response)的解析. Android的RIL驱动模块,在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分。 本文档对RIL进行了详细介绍
2023-03-16 13:14:07 353KB Android RIL
1
Quectel Android9 Android10 Android11 Android12 RIL driver
2023-02-19 09:45:35 905KB lte
1
A133 android10.0 EC200S-CN 4G ril
2022-09-28 15:48:03 1.33MB ril库
1
Quectel Android RIL rar file
2022-09-15 13:00:35 74KB ril android
RK平台android11 移远4G模块EC20 支持补丁 补丁为rk3568 移植,其他平台可以同样参考
2022-07-21 21:04:03 491KB android rockchip modem ril
1
ril移植ril移植ril移植ril移植
2022-07-19 11:07:40 496KB ril移植
1
android 移植 ril代码,ril移植的代码,modele是华为w770,你喜欢就下载学习吧。
2022-07-19 10:55:55 269KB android 移植 ril代码
1
本文档介绍了Android平台呼叫流程框架分析,基于telephony相关代码自上而下进行了详细介绍,参照代码,清晰明了
2022-06-07 14:33:07 170KB Android 呼叫 RIL
1
Ril驱动的架构,Ril基本协议,Ril实际开发总结,Ril提供给上层应用的接口等,是初学开发者的首选资料!
2022-05-09 11:34:04 99KB Ril Driver Development
1