背景

在某个新基线上移植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指令:基础概念的更多相关文章

  1. 高通camera结构(摄像头基础介绍)

    摄像头基础介绍 一.摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进 ...

  2. [转帖]从0开始的高并发(一)--- Zookeeper的基础概念

    从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...

  3. 基础:高通bring up camera【转】

    本文转载自:http://blog.csdn.net/liwei16611/article/details/53056710 bring UP 需要做的工作   1.kernelspace senso ...

  4. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  5. Docker 基础概念科普 和 常用操作介绍

    Docker 基础概念 Docker是什么?         Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...

  6. 计算机系统4-> 计组与体系结构1 | 基础概念介绍

    在大二上学期学习数字逻辑的过程中,我对计算机如何运作产生了兴趣,因此开了这个系列来记录自己在这方面的学习过程,此前三篇分别是: 计算机系统->Hello World的一生 | 程序如何运行,从大 ...

  7. GJM : Unity3D 高通Vuforia SDK AR 开发

    一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...

  8. Android图形合成和显示系统---基于高通MSM8k MDP4平台

    介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...

  9. JavaWeb开发技术基础概念回顾篇

    JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...

  10. vue初学:基础概念

    一.vue使用步骤: 1.引包vue.js 2.html中写要操作的DOM节点 3.创建vue对象:new Vue({options}); 4.配置options:el:(要操作的对象,用选择器,同j ...

随机推荐

  1. OSI模型之数据链路层

    一.简介 数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层的数据可靠地传输到相邻节点的目标机网络层.其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的 ...

  2. 基于FPGA的音乐蜂鸣器设计

    蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电子设备.电话机.定时器等电子产品中作发声器件. 图1 :蜂鸣器实物图 蜂鸣器主要分为压电 ...

  3. js实现懒加载原理

    概念:对于页面有很多静态资源的情况下(比如网商购物页面),为了节省用户流量和提高页面性能,可以在用户浏览到当前资源的时候,再对资源进行请求和加载.原理:当图片元素的偏移高度<=设备高度+滚动条与 ...

  4. 记录一个vue路由拦截效果的小技巧

    使用一句三元表达式, <router-link class="flex-left left" tag="div" :to="loginState ...

  5. 快速搭建Zookeeper和Kafka环境

    前言 由于项目需要涉及到zookeeper和Kafka的使用,快速做了一篇笔记,方便小伙伴们搭建环境. zookeeper 官方定义 What is ZooKeeper? ZooKeeper is a ...

  6. RAC关闭【Oracle 10g】

    顺序:关闭监听->关闭实例->关闭服务->关闭软件 1.关闭监听 进入节点1,[oracle@arprac01 ~]$lsnrctl stop 进入节点2,[oracle@arpra ...

  7. Gem离线包安装

    Gem离线包安装 项目环境 以 rest-client 为例 本地如果是rails项目环境: ruby '2.7.0' gem 'rails', '~> 6.0.3', '>= 6.0.3 ...

  8. Go语言—值类型和引用类型

    一.值类型 定义 变量直接存储的值,内存通常在栈中分配: var i = 5 -> i-->5 应用 int.float.bool.string.数组.struct 二.引用类型 1. 定 ...

  9. Linux(三):Linux的目录及相关作用

    使用 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各个目录的功能同样至关重要.使用 Linux 时,通过命令行输入 ls -l / 可以看到,在 Linux 根目录( ...

  10. 智能工作流:Spring AI高效批量化提示访问方案

    基于SpringAI搭建系统,依靠线程池\负载均衡等技术进行请求优化,用于解决科研&开发过程中对GPT接口进行批量化接口请求中出现的问题. github地址:https://github.co ...