随笔:关于AT命令

AT命令(Attention)在手机中,用于对modem(也就是移动模块)通过串口命令进行操作,处理与语音电话、短信和数据。

AT命令的用途

在N年前的一个涉及MeeGo的项目,MeeGo采用ofono开源项目进行移动通信,ofono通过AT命令来提供GSM的通信,但是不支持CDMA。这也从侧面论证了CDMA手机可能并不采用AT命令作为标准接口。当时请OEM根据高通芯片的API和参考,参照GSM的AT命令进行封装,在拨号应用中通过AT命令对modem进行操作,并通过DBus允许其他应用调用拨号软件。无论ofono还是我们的处理,架构层次如下:

OS(系统或系统级应用)→ AT命令(OEM封装)→ 芯片API

Android系统与AT命令

对于智能手机,AP和BP分离的情况,在AP上的系统通过串口和BP通信是个不错方式。在Android的源码中有一个内部包com.android.internal.telephony中有对AT命令的封装和解析,但这种internal的包开发者不能调用的SDK部分,可以用来封装ROM。这说明Android对AT command的方式是支持的。

网上信息,对于Android如何调用AT command,用root登录命令行,直接对串口进行操作,如

echo -e "AT\r" > /dev/smd0

具体的串口,不同设备会有不同,甚至不一定会提供。这种方式,开发者是可以调用的,通过Runtime.exec直接执行命令行命令,但要求是root,例如echo -e "ATD123456789;\r" > /dev/smd0,拨打123456789的号码。

衍生Android系统

关于ROM,国内有很多Android的衍生分支,最著名的是小米,但实际上包括华为手机,中兴手机,他们对UI和用户体验,以及部分的系统应用都进行了更改,另外还有百度云ROM等等。架构如下:

Android衍生系统→ Android OS→ AT command → 芯片API,我个人估计是Android衍生系统不会直接处理AT command,需要AT命令的应该是新OS。

但我有下面的疑问

以前OS很多,Modem的厂家也很多,OEM通过中间规范的AT命令来适配。现在OS已经高度统一,芯片厂家的数目也减少了很多,原则上芯片厂商可以提供直接适配OS,不一定需要中间标准的AT命令,芯片平台完全可以直接对接OS。

对于SoC芯片,AP和BP是继承在一起的,中间并没有什么串口,如果放在一起还需要通过串口的方式调用,看起来有点傻,估计是内存共享或别的什么方式。

我的看法是:AT命令很可能即将完成其使命。

我上3GPP的网站上去查,目前最新的AT命令标准发布与2014.6.27,似乎还活得挺滋润的。但是给出的keywords是

UMTS, GSM, command, terminal, LTE

这说明CDMA确实很可能不是采用AT命令的方式。


你可能感兴趣的:(随笔:关于AT命令)