背景
在某個新基線上移植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移動台中的一種發射機或接收機或發射機與接收機二者的組合
