高通与At指令:基础概念
背景
在某个新基线上移植AT指令,发现有问题,因此收集了这个系列的 文章 作为 这方面的知识补充。
原文作者:laozhuxinlu,本文有删改。
AT指令在产线中是一类比较重要的问题, 一天没来得及解决,则会拖延生产的有关进度。
入门基础
以Q&A的形式的一些基本概念的介绍,让大家能够初步的认识什么是ATCommand,知道它是干嘛的,包括涉及到的一些相关知识。
什么是AT Commands
AT 即Attention。AT命令集是从TE(TerminalEquipment:终端设备)或DTE(DataTerminal Equipment:数据终端设备)向TA(Terminal Adapter:终端适配器)或DCE(DataCircuit Terminating Equipment:数据电路终端设备)发送的。通过TA,TE发送AT命令来控制MS(Mobile Station:移动台)的功能与GSM网络业务进行交互。
总结来说,ATCommand是一种调制解调器的命令语言,由计算机(超级终端)发出的被用来控制和执行模块功能,通过uart串口进行通讯的命令操作方式,通过串口将命令集发送到设备端,然后设备端(手机)自有一套处理框架流程对不同的AT命令进行解析,判断,然后进行相对应的处理,并返回其对应的处理结果。
AT Commands的功能
ATCommand在手机通讯中,主要是提供给用户AT控制指令控制手机行为,比如说呼叫、短信、电话本、数据业务、补充业务、传真、GPRS等;同时包括对手机的一些参数的获取、设置及上层UI的改变等等……
在这里介绍的架构主要是针对高通平台的Android设备,高通平台提供了自有的一套流程框架(ATCoP)处理ATCommand。
ATCoP(AT Command Process)接收串口(SerialPort)处传来的AT Command,进行解析(Parse),根据解析的结果到AT Command Tables中寻找相应的表项,若匹配,则执行对应的处理函数;或者如果处于ap侧处理的列表命令,会发送到ap侧进行处理返回(AP测需要实现相应的AT Client)。
后面针对于AtCoP会有更加具体的讲解,包括modem中对APSide的ATCommand的具体处理流程,会以一个单个模块来具体讲述。
AT 指令的构成
一般而言,命令主要分为下列3部分。
前缀:由字符AT构成,他来源于单词立正attention的头字母。
主体:主体由命令,参数和可用到的数值组成。
终止字符
ATCommands的语法格式其实就是AT Commands的输入格式,总体上说AT命令有四种形式:
1)无参数指令(基本命令语法)。 一种简洁的指令,格式:AT[+|&]<command>举例:显示本机号码“AT+CNUM”,恢复出厂设置命令“AT&F”。
2)查询指令(读命令语法)。 查询该指令当前设置的值,格式:AT[+|&]<command>?。举例:电话本存储区可选择的值“AT+CPBS?”。
3)帮助指令(测试命令语法)。用来列出该命令各参数的所有的可能值(并非各个组合都可能支持),格式:AT[+|&]<command>=?。举例:AT+CMGL=?。
4)带参数指令(扩展命令语法)。用于设置相应的参数值, 比较常用的一种格式,它为指令提供了强大的灵活性,格式:AT[+|&]<command>=<par1>,<par2>,<par3>„针对不同的AT Commands测试的输入格式是不一样的。甚至大部分都是多种测试的输入格式,具体格式在相应的AT Commands的协议介绍中有详细说明。
不同的命令其大致的语法格式是差不多的,当然也有一些自定义的AT命令,但其基本格式还是需要按照标准来定义。
注意:对于上面所说的四种格式,对某个命令而言并不是都存在四种格式,有些命令就一种格式,有些支持两种或者三种四种格式,具体的需要查询协议介绍。
AT Commands的大致分类:
具体可参见AT命令手册
一般命令
呼叫控制命令、网络业务命令
安全性命令
电话本命令、短消息命令
补充数据命令、数据命令
传真命令
串口控制命令
自定义的一些AT命令
…………
AP侧、BP侧的AT 指令
注意:这里所谓的AP Side和BP Side的AT命令是根据最终在哪处理来区分的。
- 如果是在modem下对命令进行处理的称为BP Side相关命令
- 如果针对一些命令,在modem之上(AP侧)进行处理的,可称之为AP相关命令。
对于大部分的AT命令几乎都是BP侧的,但是有一些特别的命令(比如说自定义的命令,或者在AP侧才有接口或者处理更加方便的),对于这些命令我们会发到AP侧,在AP侧有专门的AT Client对其进行处理并返回处理结果。
后面章节中对AP Side的AT命令会有更加详细的介绍。
ATCoP
ATCoP(AT Command Processor) 这是一套AT命令的处理框架,位于BP侧中。
注意:由于我没有拿到modem的代码,因此下面的文章关于BP的大部分是无法修改的。
ATFWD
ATFWD?或许很多人看到这个词会觉得很陌生,的确,因为这一块属不属于AT模块,都不好说。
所有的AT命令都是通过串口到modem的,而ATFWD是高通就AP Side的AT命令的实现所做的一套框架:
- 主要是从modem那边接收到AT命令(QMI通讯方式),再处理,最后返回到modem
- 可以理解成这就是之前说的AT Client,也可以理解成实现AT命令在BP之间的交互方式。
术语
TE:Terminal Equipment,终端设备,与DTE等价。比如一个计算机它是和信息网络的一端相接的可提供必要功能的设备这些功能使得用户通过接入协议能接入网络 如发送信息和接收信息也可指由线路 电路 信道 数据链路的终端或起点组成的设备。
TA:Terminal Adapter,终端适配器,与DCE等价。提供终端适配功能的物理实体是一种接口设备。
DCE: Data Circuit terminating Equipment,数据电路终接设备。一种接口设备在线路之间进行代码或信号转换 同数据终端设备实现接口能够建立保持和释放数据终端设备与数据传输线之间的连接。
DTE: Data Terminal Equipment,数据终端设备。它具有向计算机输入和接收计算机输出的能力与数据通信线路连接的通信控制能力以及一定的数据处理能力。
ME:Mobile Equipment,移动设备。比如GSM话机就属于ME移动台中的一种发射机或接收机或发射机与接收机二者的组合
高通与At指令:基础概念的更多相关文章
- 高通camera结构(摄像头基础介绍)
摄像头基础介绍 一.摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进 ...
- [转帖]从0开始的高并发(一)--- Zookeeper的基础概念
从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...
- 基础:高通bring up camera【转】
本文转载自:http://blog.csdn.net/liwei16611/article/details/53056710 bring UP 需要做的工作 1.kernelspace senso ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- Docker 基础概念科普 和 常用操作介绍
Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...
- 计算机系统4-> 计组与体系结构1 | 基础概念介绍
在大二上学期学习数字逻辑的过程中,我对计算机如何运作产生了兴趣,因此开了这个系列来记录自己在这方面的学习过程,此前三篇分别是: 计算机系统->Hello World的一生 | 程序如何运行,从大 ...
- GJM : Unity3D 高通Vuforia SDK AR 开发
一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...
- Android图形合成和显示系统---基于高通MSM8k MDP4平台
介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...
- JavaWeb开发技术基础概念回顾篇
JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...
- vue初学:基础概念
一.vue使用步骤: 1.引包vue.js 2.html中写要操作的DOM节点 3.创建vue对象:new Vue({options}); 4.配置options:el:(要操作的对象,用选择器,同j ...
随机推荐
- SpringBoot注入时设置《多例》
SpringBoot设置多例 1.准备数据 测试接口 package com.cc.jschdemo.springmultiton; /** * <p>spring多例测试</p&g ...
- Solution Set - NOI真题
NOI2024 RP++! NOI2018 Day1T1 Link&Submission. 考虑一个最高的水位线使所有点通过没有积水的边就可以连通,也就是求出了一棵海拔的最大生成树.会发现只有 ...
- ios系统的css兼容问题处理和iOS上网页滑动不流畅问题
1.H5网页touch滑动的时候在苹果手机上出现不流畅的问题 -webkit-overflow-scrolling 用来控制元素在移动设备上是否使用滚动回弹效果. 解决办法:给所有网页添加如下样式 b ...
- C语言:删除顺序表中重复的信息—(删除顺序表中重复的单词)
如何删除顺序表中的重复单词: (开始看内容之前容朕说一句:如果你最后怎么都运行不了你想要的结果,①我敢保证大概率是你的下标越界你的下标越界了你的下标越界了.②在我这程序里面你肯定打少了p--,少了p- ...
- Prompt提示词助力AI写作
AI以极高的效率和还可以的输出质量,得到了许多写作人的青睐,Prompt作为AI写作的核心,通过简短的提示来引导AI生成文本,让写作新手也能轻松自如. 1. 看不下去的行业乱状 让人不禁遗憾的是,国外 ...
- Semantic Kernel入门系列:利用YAML定义prompts functions
引言 在上一章节我们熟悉了prompts functions(提示函数)的创建,我们了解了PromptTemplateConfig中各个属性的简单使用.Semantic Kernel允许我们利用多种方 ...
- 从 p12 格式 SSL 证书解出 pem 格式公钥私钥给 Postman 使用
目的 Postman 的(非 Chrome 扩展版的)app 并不能读取系统中的客户端证书,这种调试要发送客户端证书的 https 请求的时候就得自己另外设置.系统直接导出证书有 cer 和 p12 ...
- python垃圾回收和缓存管理
Python垃圾回收和缓存管理 你有没有想过为什么我们频繁地使用Python敲代码做项目,实际上一直在生产对象并不断占用内存,而我们很少会去清理Python的内存,理论上来讲它总有一天把内存消耗殆尽( ...
- Linux内核Kernel启动过程
在上一篇计算机启动过程文章中介绍了计算机启动的基本流程,本篇文章主要介绍Linux内核Kernel的启动过程. 一.内核启动的基本流程 sequenceDiagram participant Boot ...
- 代码审计——基础(JAVAEE)
JAVAEE 目录 JAVAEE 常见框架 Struct2(控制层) Hibernate(持久层(与数据库交互)(不用再写简单的sql语句,但是需要一些列复杂的配置文件))(全ORM模型) Sprin ...