建设网站有什么原则,网易企业邮箱改密码,wordpress安全吗,网站建设中模版什么是QMI?
Qualcom Message Interface 高通信息接口
高通平台目前都是非对称多核心#xff0c;最主要的是AP和Modem。两个处理器怎么进行通信呢#xff0c;我们把AP和Modem当作两个主机#xff0c;问题就变得了很简单#xff0c;TCP/IP协议不是一种非常成功的进程间跨主…什么是QMI?
Qualcom Message Interface 高通信息接口
高通平台目前都是非对称多核心最主要的是AP和Modem。两个处理器怎么进行通信呢我们把AP和Modem当作两个主机问题就变得了很简单TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式但是借鉴了TCP/IP的框架设计。它的框架是这样的内核态基于共享内存SMD实现链路层扩展协议域用户态封装出类似于socket函数的接口用于用户态使用。而我所描述的QMI就是用户态使用的API接口这些接口非常类似于socket
QMI协议常用组件
DMS(设备管理Device Management) 提供查询设备信息功能 参考: qmi/device_management_service_v01.h NAS(网络访问Network Access) 提供网络管理功能 参考:qmi/network_access_service_v01.h WDS(数据连接) 参考:qmi/wireless_data_service_v01.h UIM(管理User Identity Module) 提供查询UIM卡信息 参考:qmi/user_identity_module_v01.h CTL(控制服务) 用户发起其他服务请求前必须先申请 ClientID, 这个ID就是由控制服务分配的, 这个服务永远在线 参考:qmi/control_service_v01.h 数据(拨号服务) 建立数据连接 参考:data/qualcomm_mobile_access_point_msgr_v01.h
每个服务模块都定义了 请求、响应、通知Indication指示, 请求分为同步和异步,其中异步请求的结果通过indication指示 通知。每个请求响应都有一个匹配的ID这样用户可以一次发出多个请求。并且响应也不必严格按照请求的顺序进行回应。
Indication指示作为主动提供的消息 要么发送给某个特定的客户端, 要么是广播消息广播给所有使用这个服务的客户)。 通常情况下用户需要通过一些请求/响应 来打开indication 指示协议中的每条消息都定义了一系列输入在请求中才有输入参数或者输出在响应或者indications指示中才有输出)参数。 这些参数我们命名为TLV
安卓架构很多人都有印象从APP层到FrameWork层到HAL层再到Linux Kernel层。由于安卓有两个处理器一个是APApplication Processor一个是BPbaseband processor而通话主要由BP去处理。
高通的芯片里面又分什么AP、BP甚是不解于是百度之终于知其大概。
APApplication Processor即应用芯片
BPBaseband Processor即基带芯片
搞什么嘛双核就双核呗怎么又搞出个AP和BP啊
原来FCC美国联邦通信委员会认证要求将AP和BP分开因为射频控制相关的功能信号调制、编码、射频位移等都是高度的时间相关的最好能将这些函数放在一个CPU核上运行并在这个CPU核上运行一个实时的操作系统这样AP核上操作系统和驱动的bug就不会导致设备发送灾难性的数据到移动网络中并且一旦BP被设计和认证好不管你采用的操作系统和应用软件怎么变化它都可以正确的执行通讯功能手机的设计者也可以更加自由的设计用户界面和应用软件。
QMI举例
越来越多9X07模块被用于物联网那么首要解决的问题即建立数据连接所以本文使用QMI建立数据网络连接示意。
QMI初始化及释放
9X07模块提供了qcmap_msgr服务来进行拨号通过与dsi_netctrl对比qcmap_msgr接口更清晰而且操作也简单。 AP侧使用QMI架构和modem通信初始化流程是固定的
qcmap_msgr_get_service_object_v01查询服务对象 qmi_client_notifier_init初始化client通知信息 qmi_client_get_service_list查询支持的服务列表个数 qmi_client_get_service_list查询支持的服务列表信息 qmi_client_init使用其中一个服务信息初始化client
QMI机制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客户端BP作为services服务端 当AP接收BP侧返回的响应时BP作为client客户端AP作为services服务端。
QMI包含了一系列的QMI Service例如nas,voice,wds等这些不同的services相当于不同逻辑设备给不同的app调用。
3,QMI有相应的消息和消息的协议设备终端就是通过这些消息来访问AMSS。对于不同的qmi消息消息长度不一样可自己定义消息长度不同的qmi消息消息格式是相同的。
下图是QMIFramework的一个软件结构图。从图中可以看出上层控制点打包对应类型的QMI消息或通过其他操作系统的框架将要发出的数据传到AP。 侧底层的逻辑设备最后逻辑设备通过内联的总线接口传到BP侧的AMSS。在代码中可以找到从控制点发送到逻辑设备的函数。 这个是控制点向BP侧发送同步sync消息的函数参数包括走的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。
bp的AMSS实时系统
AMSS的source实际上是Qualcomm平台的的底层部分去掉了为应用程序提供接口的AEE(application execution environment)部分高通在DualProc芯片上的其他平台基本上都是采用的这样的架构。所以如果要了解这套source的话有必要对BREW作一个基本的了解不需要了解它应用程序的运作机制只需要了解底层的操作系统尤其是REX(Run Time Executive)的运行机制必须了解。在6K平台只有单芯片ARM9或者ARM11。在7K8K平台硬件上采用的是ARM9ARM11最新的采用Cotex-A8或是Cotex-A9的架构。其中ANDROID是在ARM11上运行而ARM9部分负责处理通信协议、射频、GPIO等或者可以称作MODEM端同样也运行一个OS称为AMSSAdvanced Mobile Subscriber Software