背景
在某个新基线上移植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移动台中的一种发射机或接收机或发射机与接收机二者的组合