通過編寫嵌入式系統入門邊緣計算
用於操控無線數據機的 AT 設備包是 RTOS 最流行的擴展功能之一。
RTOS 是一個開源的 嵌入式設備操作系統,由 RT-Thread 開發。它為開發者提供了標準化的、友好的基礎架構,開發者可以基於各種設備編寫代碼,它包含大量有用的類庫和工具包,使開發過程更加便捷。
RTOS 使用的是模塊方式,以便於擴展,這一點跟 Linux 類似。各種軟體包可以讓開發者將 RTOS 用於任何想要的目標設備。RTOS 最常用的一種擴展是 AT 設備包,它包含各種不同 AT 設備(例如數據機)的移植文件和示例代碼。
在超過 62,000 次下載中(截止至撰寫本文時),最流行的 RTOS 擴展之一是 AT 設備包,其中包括用於不同 AT 設備的移植文件和示例代碼。
關於 AT 命令
起初,AT 命令是一個協議,用於控制撥號數據機。隨著數據機技術發展到較高的帶寬,它仍然可以用作輕量級而高效的設備控制協議,主流的行動電話廠商也聯手開發了一系列 AT 命令,用於控制行動電話上的 GSM 模塊。
如今,AT 命令仍然在網路通信領域具有通用性,很多設備,例如 WiFi、藍牙、4G,都支持 AT 命令。
如果你正在創建用於邊緣計算輸入、監控或物聯網(IoT)的專用設備,則你可能接觸到一些 RTOS 支持的 AT 設備,包括 ESP8266、ESP32、M26、MC20、RW007、MW31、SIM800C、W60X、SIM76XX、A9/A9G、BC26、AIR720、ME3616、M 6315、BC28 和 EC200X。
RT-Thread 包含套接字抽象層(SAL)組件,SAL 實現了多種網路協議和介面的抽象,為上層提供了一系列標準的 BSD 套接字 API。SAL 進而接管了 AT 的套接字介面,所以開發者只需要考慮網路應用層提供的網路介面。
這個軟體包實現了設備(包括上述設備)上的 AT 套接字功能,支持通過標準套接字介面以 AT 命令的形式通信。RT-Thread 編程指南 中就有關於這些功能的詳細介紹。
at_device 軟體包是在 LGPLv2.1 許可證下分發的,藉助 RT-Thread Env 工具 可以方便地獲取到。該工具包含一個配置器和一個包管理器,它們分別用於配置內核和組件功能,可以用於定製組件並管理在線包。有了這些工具,開發者可以像搭積木一樣構建系統。
獲取 AT 設備包
為了使用配置了 RTOS 的 AT 設備,你必須啟用 AT 組件庫和 AT 套接字功能,需要:
- RT_Thread 4.0.2+
- RT_Thread AT 組件 1.3.0+
- RT_Thread SAL 組件
- RT-Thread netdev 組件
AT 設備包已經針對多種版本進行了相應的更新。版本不同,配置選項也相應地不同,因此必須針對相應的系統版本進行適配。目前最常用的 AT 設備包版本有:
- V1.2.0: 針對低於 V3.1.3 的 RT-Thread,V1.0.0 的 AT 組件
- V1.3.0: 針對低於 V3.1.3 的 RT-Thread,V1.1.0 的 AT 組件
- V1.4.0: 針對低於 V3.1.3 或等於 V4.0.0 的 RT-Thread,V1.2.0 的 AT 組件
- V1.5.0: 針對低於 V3.1.3 或等於 V4.0.0 的 RT-Thread,V1.2.0 的 AT 組件
- V1.6.0: 針對低於 V3.1.3 或等於 V4.0.1 的 RT-Thread,V1.2.0 的 AT 組件
- V2.0.0/V2.0.1: 針對高於 V3.1.3 的 RT-Thread,V1.3.0 的 AT 組件
- 最新版: 針對高於 V3.1.3 的 RT-Thread,V1.3.0 的 AT 組件
獲取正確的版本的過程主要是在生成菜單時自動完成的。它基於現有的系統環境提供最合適的 AT 設備包。
正如前文提到的,不同的版本需要不同的配置選項。例如,
RT-Thread online packages --->
IoT - internet of things --->
-*- AT DEVICE: RT-Thread AT component porting or samples for different device
[ ] Enable at device init by thread
AT socket device modules (Not selected, please select) --->
Version (V1.6.0) --->
按線程啟用 AT 設備初始化的選項決定了配置是否創建一個單獨的線程來初始化設備網路。
2.x 版本支持同時啟用多個 AT 設備:
RT-Thread online packages --->
IoT - internet of things --->
-*- AT DEVICE: RT-Thread AT component porting or samples for different device
[*] Quectel M26/MC20 --->
[*] Enable initialize by thread
[*] Enable sample
(-1) Power pin
(-1) Power status pin
(uart3) AT client device name
(512) The maximum length of receive line buffer
[ ] Quectel EC20 --->
[ ] Espressif ESP32 --->
[*] Espressif ESP8266 --->
[*] Enable initialize by thread
[*] Enable sample
(realthread) WIFI ssid
(12345678) WIFI password
(uart2) AT client device name
(512) The maximum length of receive line buffer
[ ] Realthread RW007 --->
[ ] SIMCom SIM800C --->
[ ] SIMCom SIM76XX --->
[ ] Notion MW31 --->
[ ] WinnerMicro W60X --->
[ ] AiThink A9/A9G --->
[ ] Quectel BC26 --->
[ ] Luat air720 --->
[ ] GOSUNCN ME3616 --->
[ ] ChinaMobile M6315 --->
[ ] Quectel BC28 --->
[ ] Quectel ec200x --->
Version (latest) --->
這個版本包含了很多其他選項,其中也有啟用示例代碼的選項,這對初學者或使用不熟悉的設備的開發者很有幫助。
你也可以設置相應選項,選擇你想用來給你的組件供電的針腳、指示電源狀態的針腳、樣本設備使用的串列設備的名稱,以及樣本設備接收數據的最大長度。在合適的設備上,你也可以設置 SSID 和密碼。
簡而言之,控制選項是夠用的。
- V2.x.x 版本支持同時啟用多個 AT 設備,欲查看啟用的設備信息,在 finsh shell 中執行
ifocnfig
命令即可。 - V2.X.X 版本需要設備在使用前先註冊;註冊可以在樣例目錄中進行,或在應用層以自定義方式進行。
- 針腳選項,例如電源針腳和電源狀態針腳是按照設備的硬體連接來配置的。如果硬體的開啟功能不可用,它們就會被設置為
-1
。 - 一台AT 設備應當對應一個序列名稱,每台設備的 AT 客戶端名稱應當是不同的。
AT 組件配置選項
當選擇了 AT 組件包,啟用了設備支持,AT 組件的客戶端功能也就默認選擇完成了。對 AT 組件來說,這就意味著有更多的選項要設置:
RT-Thread Components --->
Network --->
AT commands --->
[ ] Enable debug log output
[ ] Enable AT commands server
-*- Enable AT commands client
(1) The maximum number of supported clients
-*- Enable BSD Socket API support by AT commnads
[*] Enable CLI(Command-Line Interface) for AT commands
[ ] Enable print RAW format AT command communication data
(128) The maximum length of AT Commonds buffer
與 AT 設備包有關的配置選項有:
- 支持的客戶端最大個數:選擇 AT 設備包中的多台設備時,需要將該選項配置為對應的設備台數;
- 通過 AT 命令啟用 BSD 套接字 API 功能:當選擇 AT 設備包時默認選擇該選項。
- AT 命令的最大長度:AT 命令可發送的數據的最大長度
一切皆有可能
當你開始進行嵌入式系統編程,你會很快意識到,你可以創造自己想像得到得任何東西。RTOS 旨在幫助你實現它,它的那些功能包為你提供了良好的開端。現在,設備的互聯也是可期待的。邊緣的物聯網技術必須能夠通過各種協議進行通信,而 AT 協議是關鍵。
via: https://opensource.com/article/21/3/rtos-embedded-development
作者:Alan Smithee 選題:lkxed 譯者:cool-summer-021 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive