簡體   English   中英

智能手機如何使用 AT 命令和數據連接? gsm 多路復用器? 多個串口?

[英]How do smart phones use AT commands and data connection(s)? gsm mux? multiple uarts?

我參與了一個項目,我們擁有某種物聯網設備。 PCB 上帶有 LTE 調制解調器的 nxp 處理器。 其上運行的軟件通過單個 uart 接口連接到調制解調器。 它將通過 AT 命令初始化調制解調器,最后向提供商 (PPP) 進行數據調用。 然后,它使用 lwIP(輕量級 IP)打開一些 mqtt 訂閱,並允許用戶代碼向我們的服務器發出 http get/post 請求。

我們希望每 15 分鍾從調制解調器檢索信號強度並將其報告回服務器。 我現在要做的是將調制解調器放回命令模式,檢索信號強度信息,go 放回數據模式,然后恢復正常運行。

從數據模式到突擊隊模式再回到數據模式的往返需要幾秒鍾(4-5 左右)。 這很煩人,因為在那段時間我們不接受命令。

我讀過 gsm mux 07.10。 通過遵循一些定義的協議,它允許在一個物理 uart 上創建虛擬串行端口。 這聽起來不錯,盡管我意識到這將以性能為代價 go(字節將添加到我們發送到命令模式/數據模式的每個幀中)。

gsm mux 07.10 規格可追溯到 1999 年。我遠不是移動解決方案方面的專家。 我在想:muxing還是去go的路嗎? 例如,典型的智能手機如何處理這個問題? 它們是否包含具有多個 uart 的調制解調器以並行訪問 AT 命令和實時互聯網連接? 或者他們實際上仍然依賴 gsm mux?

如果有人願意提供一些見解。 還有潛在的 C 庫可以實現 gsm mux 07.10? TinyGSM 似乎實現了它(雖然我似乎無法找到它),而且我還可以找到實現 gsm mux 07.10 的 linux kernel 驅動程序。 但是該驅動程序是在 linux 中的 tty 接口之上編寫的,因此這意味着我將不得不對 kernel 驅動程序進行逆向工程並剝離 tty 內容並將其替換為我自己的 uart 實現。

首先,規范編號是舊的 GSM 規范編號,所以那些舊規范將永遠不會更新,新規范會采用新的編號方案。 我不記得轉換是什么時候進行的,但我確實記得有人在 07.10 上做演示,大概是在 1998/1999 年左右,所以可能是在那之后幾年或大約那個時間(肯定是在 2009 年之前)。

較新的規范編號方案對第一部分使用三位數字。 因此,例如舊的 AT 命令規范 07.07 現在是 27.007,而當前的 07.10 多路復用規范是27.010


以下是我記得的07.10。

開發 07.10 的動機是為了准確支持您描述的那種場景。 回想一下 90 年代中期,如果手機有串行接口,那就是 RS-232,每個制造商在手機底部都有專有連接器。 一個單一的串行接口。

但是,為了在串行通信中使用 07.10 mux,您需要在 Windows 中安裝一些支持 07.10 的特定串行驅動程序(我認為它們可能存在一些可靠性問題?),因此 07.10 從未出現並成為不僅僅是一個很少使用的解決方案。

同樣在 90 年代末,許多手機上都可以使用藍牙和 IrDA 等額外的串行接口,后來的 USB 也可以使用,它們都添加了額外的物理接口,並在每個協議中進行了本地多路復用。

因此,在物理 RS-232 上進行多路復用的需求不再是一個問題,07.10 的任何小普及都已經減少到幾乎沒有。

快進幾十年,突然有人在 stackoverflow 上詢問它。 你真好:) 據我所知,我看不出將它用於你提出的目的有任何基本問題。

支持 AT 命令的現代智能手機很可能有一個 AT 命令解析的代碼庫,它具有 90 年代的根源,其中很可能包括AT+CMUX命令。 當然,今天的制造商對支持它的明確願望為零,但當它已經存在時,它只會與他們支持的所有其他遺留 AT 命令的集合一起出現。

因此,如果調制解調器支持AT+CMUX ,您應該使用 go。關於客戶端協議庫,我沒有任何經驗或建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM