高通平台学习一

这篇具有很好参考价值的文章主要介绍了高通平台学习一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是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层。由于安卓有两个处理器,一个是AP(Application Processor),一个是BP(baseband processor),而通话主要由BP去处理。
高通平台学习一,高通平台学习,学习,网络,网络协议

高通的芯片里面又分什么AP、BP,甚是不解,于是百度之,终于知其大概。

AP:Application Processor,即应用芯片

BP:Baseband 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)。在7K&8K平台硬件上采用的是ARM9+ARM11(最新的采用Cotex-A8或是Cotex-A9)的架构。其中ANDROID是在ARM11上运行,而ARM9部分负责处理通信协议、射频、GPIO等,或者可以称作MODEM端,同样也运行一个OS,称为AMSS(Advanced Mobile Subscriber Software)文章来源地址https://www.toymoban.com/news/detail-811746.html

到了这里,关于高通平台学习一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高通平台gpio调试

     在Linux下,通过sysfs,获取gpio状态,也可以操作gpio。 1、获取gpio状态         cd /sys/kernel/debug/         cat gpio 2、调试gpio(以gpio42为例)         可以通过这个调试方法确认该gpio是否可用。         首先,需要确认gpio是否有一个基础值。         cd /sys/class/gpio/    

    2024年02月16日
    浏览(37)
  • 高通平台GPS工程测试&接收参数解析

    由于现阶段终端开发十分迅速,高通平台的GPS链路十分简单,在第一次贴片开机之后,等待软件驱动给SDR以及SDR的GPS接收端口配好之后,再把链路上 LNA的GPIO以及VDD电源配齐之后,即可开始调试GPS通路的性能。 因此本文将针对高通平台的GPS研发阶段工程测试进行讲解,并且对

    2024年02月07日
    浏览(41)
  • 关于高通Android 平台上qssi的介绍

    1. QSSI 是 Qualcomm Single System Image 的缩写。 2. Android Q上开始支持QSSI。 3. QSSI 是用来编译system.img的 3.1 QSSI编译注意事项         lunch qssi ------ 编译system.img         lunch target ------ 编译其余的image 3.2 有QSSI和没有QSSI的编译流程对比 没有QSSI source build/envsetup.sh lunch target make 有QSSI

    2024年02月02日
    浏览(74)
  • Android系统 ——高通平台刷机流程(qfil)

    整理一下高通平台的线刷工具 — qfil 下载地址:https://createpoint.qti.qualcomm.com/to 方法一: 方法二: 按住电源键+音量加/音量减 方法三: 一般开发板会有短接的测试点,可以试用镊子进行短接也可以进入9008 指定Programmer Path,Search Path以及RawProgram的配置文件 记得点击download之前

    2024年02月15日
    浏览(46)
  • 高通SDM450平台的LDO 输出与电压调节

    开始之前,首先我们要知道什么是LDO?有什么作用?LDO调试需要调哪些? 什么是LDO,有什么作用? LDO为 低压线性稳压器,高通平台有多路LDO电压输出,以SDM450 为例 共有 LDO1~LDO23 23路。用于给外设提供电源。 LDO需要调什么? LDO的调试主要 有 打开和关闭 LDO电压 和 调整 LDO

    2024年02月11日
    浏览(38)
  • 高通平台开发系列讲解(USB篇)adb应用adbd分析

    沉淀、分享、成长,让自己和他人都能有所收获!😄 在 apps_proc/system/core/adb/adb_main.cpp 文件中main()函数会调用adb_main()函数,然后调用uab_init函数 在uab_init()函数中,会创建一个线程,在线程中会调用init_functionfs()函数,利用ep0控制节点,创建ep1、ep2输入输出节点 目录:

    2024年02月02日
    浏览(47)
  • RK3399平台开发系列讲解(内核入门篇)网络协议的分层

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对于多数的应用和用户而言,使用互联网的一个基本要求就是数据可以无损地到达。用户通过应用进行网络通信࿰

    2024年02月02日
    浏览(37)
  • 高通平台开发系列讲解(AI篇)如何让MTCNN运行在SNPE

    沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍如何使用高通平台 SNPE 运行 MTCNN 。 高通平台的 SNPE ( Snapdragon Neural Processing Engine )

    2024年02月04日
    浏览(34)
  • MTK联发科、高通、紫光展锐手机SOC平台型号汇总(含详细参数)

    MediaTek联发科手机平台汇总: Qualcomm高通SOC平台汇总:     紫光展锐SOC平台汇总:   新移科技已成功研发手机SOC平台: 联发科平台:  MTK6739、MTK6761、MTK6762、MTK6765、MTK8788、MTK6853、MTK6873、MTK6833、MTK6877、MT6785、MT8766、MT8390; 联发科旗舰平台: 天玑9000(MTK6983)、天玑1200(

    2024年02月05日
    浏览(52)
  • 智能座舱更看重「性能冗余」,4家中国供应商领跑高通两代平台

    高通8155,未必是智能座舱的真正王者,但至少在当下,是所有车企可以拿得出手吸引消费者的,为数不多的筹码。而到了明年,5nm的高通第四代座舱平台8295也有机会延续8155的强势地位。 要知道,在国内市场,芯擎最快要到今年下半年量产首款7nm座舱芯片,这意味着,高通至

    2024年02月06日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包