前言:

Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机)

对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。

QMI的核心称之为QMI框架(QMI Framework),其主要功能包括以下3点:

1,连接MSM模块和设备终端,提供一个正交的控制和数据通道。在QMI的消息用有两种定义,一种是

QMIControl Message,另一种是QMI DataMessage,支持这两种消息并发,不会互相干扰导致出错。

2,列举一系列的枚举逻辑设备,提供给连接使用。QMI机制类似于一个服务器机制,有相应的client端

和services端,对应于QMI的control point和service。在AP向BP发送请求时,AP作为client端,当AP

接收BP侧返回的响应时,AP作为services端。QMI包含了一系列的QMI Service,例如nas,voice,wds等,

这些不同的services相当于不同逻辑设备,给不同的app调用。

3,QMI有相应的消息和消息的协议,设备终端就是通过这些消息来访问AMSS。对于不同的qmi消息,

消息长度不一样,可自己定义消息长度,不同的qmi消息,消息格式是相同的。

上图是QMIFramework的一个软件结构图。

从图中可以看出,上层控制点打包对应类型的QMI消息或通过其他操作系统的框架,将要发出的数据传到AP

侧底层的逻辑设备,最后逻辑设备通过内联的总线接口,传到BP侧的AMSS。在代码中可以找到从控制点发

送到逻辑设备的函数。

这个是控制点向BP侧发送同步消息的函数,参数包括走的QMI_Service类型,Service里面消息的名称,

请求消息的初始地址,长度,返回相应的初始地址和长度。逻辑设备和BP侧内联的总线也可以分很多种:

USB,SDIO,共享内存,无线协议802.11等都可以作为总线连接AP和BP。咱们现在开发的MSM平台用

的是共享内存。代码中qmi_port_defs.h中的枚举qmi_connection_id_type定义了AP侧QMI和BP侧的

连接通道,包括集成modem的MSM平台和独立modem的MDM。

在代码中的vendor\qcom\proprietary\qmi\platform目录,linux_qmi_qmux_if_client.c,定义了和BP侧通信

的逻辑设备种类。

目前我们QMI支持的逻辑设备有图中四种,电话系统,音频,蓝牙,GPS。

TE和MSM通信原理图:

两个特点:1.单一的物理链接总线,必须被多个逻辑设备所复用。

2.不同的逻辑设备要求独立的控制信道和数据信道。

QMI终端原理图如下:

从图中可看出,整个QMI架构中,主要是通过QMUX层完成软件上的TE和MSM的交互。

1,一个服务可以对应多个控制点,一个控制点只能对应一个服务。

2,控制点与服务的关系就好比C/S模型中的客户端与服务器关系。

3,如果某程序使用几种QMI服务,那么它就要为每种服务构建一个控制点。

可以看出QMI并不是一个简单的一对一传输通信方式,而是一个服务可以同时接受几个控制点发出的消息,

其实现的原理也是对传输信道的复用。

android QMI机制---概论相关推荐

  1. Linux中消息机制的通信原理,android QMI机制---概论

    前言: Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机) 对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设 ...

  2. android QMI机制--简介

    前言: Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机) 对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设 ...

  3. 6 android QMI机制---Modem消息接收

    原文:https://blog.csdn.net/u012439416/article/details/74277494 6 Modem消息接收 3.1 消息初始化 初始化:qmi_modem_tas ...

  4. android QMI机制---Modem消息接收

    6 Modem消息接收 3.1 消息初始化 初始化:qmi_modem_taskàqmii_init()àqmux_init().qmux_init方法完成对控制通道的初始化后, 通过函数qmuxi_ ...

  5. android QMI机制---modem消息发送

    7 modem消息发送 一般BP侧处理完请求后,都会回应一个响应给AP,一般是用宏QMI_SVC_PKT_PUSH将要作为响应 的消息发送出去.qmi_svc_utils.h中QMI_SVC_PKT_ ...

  6. android QMI机制---QCRIL消息发送

    4 QCRIL消息发送 当ril有请求过来时,就会调用ril库的onRequest()方法,此时就会根据当前Qcril注册的函数列表 进入到qcril_request_api的onRequest_ri ...

  7. 基于android2.3.5系统:开天辟地Android启动机制[二]

    **************************************************************************************************** ...

  8. Android消息机制Handler用法

    这篇文章介绍了Android消息机制Handler用法总结,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 1.简述 Handler消息机制主要包括: Messa ...

  9. 【腾讯Bugly干货分享】经典随机Crash之二:Android消息机制

    为什么80%的码农都做不了架构师?>>>    本文作者:鲁可--腾讯SNG专项测试组 测试工程师 背景 承上经典随机Crash之一:线程安全 问题的模型 好几次灰度top1.top ...

最新文章

  1. 数据科学工具 Jupyter Notebook 教程(一)
  2. unity发布安卓黑屏_Unity将携十余爆款新游和多个独立游戏亮相ChinaJoy 2020
  3. python下载教程pdf-Python教程PDF合集下载
  4. [小故事大道理] -- GoodMorning,Sir!
  5. CentOS 7安装zabbix-2.4.8监控
  6. linux监控http连接数,zabbix监控linux tcp连接数
  7. jsp的九大内置对象和作用域
  8. python判断线程结束_判断Threading.start新线程是否执行完毕的实例
  9. Linux基本命令二(帮助命令)
  10. 将网页和文档的背景改为绿色来保护眼睛
  11. 在dll中用DirectSound8同时播放多个wav文件不能发声
  12. pandownload搜索引擎脚本
  13. 如何利用模型对大客户风险评估——信用额度进行推测
  14. 桌面排版神器:Affinity Publisher
  15. 闲鱼双11全链路营销体系初体验
  16. 去掉/隐藏 word的回车符
  17. 管理kde wallet
  18. 火车站的江湖,远比你想象的深
  19. PostGISGeography支持功能PostGIS Geography Support Functions
  20. Tensorflow训练maskrcnn

热门文章

  1. 离散傅里叶变换(DTFT) MATLAB实例
  2. centos7手动修改dns
  3. 和信创天联手Websense支持Linux Deepin开源社区发展
  4. (pygame)自己编的一个接炸弹小游戏。。。
  5. 创建Vue项目以及使用
  6. 电子劳动合同如何签订才能生效呢?四步就能教会你!
  7. 视频播放破亿,抖音近期的流量密码是什么
  8. IPC中的AIDL机制(二)
  9. 沈阳皮童:几个小窍门专治皮鞋变形
  10. 看不懂英文文档不要慌,利用Python轻松实现翻译小软件