外接通信模組的設備,在移植Link SDK的過程中,需要對SDK的網絡依賴接口與模組進行適配。本文介紹適配的相關內容。
前提條件
定制SDK時,在SDK定制頁面的設備硬件形態區域,選中MCU+通信模組。
背景信息
無法直接連網的設備外接通信模組后,通過AT指令控制通信模組,設備即可實現連網。您可以通過移植阿里云物聯網平臺提供的C Link SDK,將設備快速接入物聯網平臺。
Link SDK移植的詳細信息,請參見移植示例說明。
通信模組的設備接入物聯網平臺時,可選擇的方案有:
自有模組驅動連云:如果您已擁有模組的驅動,在移植SDK的過程中,僅需適配對應的接口。移植示例,請參考MCU+蜂窩模組設備上云。
AT模組驅動框架連云:如果您是第一次開發模組驅動,可以參考本文的驅動適配,助您完成設備的開發。移植示例,請參考示例一:STM32+EC200S模組和示例二:Linux+L610模組使用AT框架。
方案簡介
MCU與AT模組之間的通信邏輯按順序分如下三部分:
Link SDK操作AT模組驅動的接口,生成AT指令。
AT指令通過UART發送至AT模組。
AT模組的UART接收報文后,轉發至AT解析器,生成TCP/IP報文發送至物聯網平臺。
自有模組驅動連云
進入路徑./portfile/aiot_port,根據您已有的模組驅動,適配以下對應接口。
示例代碼如下。注釋以Linux系統的設備為例,提供了修改建議和說明。
├── at /*AT模組驅動框架目錄*/ │ ├── aiot_at_api.c /*刪除*/ │ ├── aiot_at_api.h /*刪除*/ │ ├── module /*刪除*/ │ │ ├── air724_ssl.c │ │ ├── air724_tcp.c │ │ ├── fibcom_l610_ssl.c │ │ ├── fibcom_l610_tcp.c │ │ ├── quectel_ec200s_ssl.c │ │ └── quectel_ec200s_tcp.c │ └── net_at_impl.c /*網絡接口實現:保留,并適配自由網絡接口*/ ├── at_port.c /*系統依賴接口的實現:保留,不需要改*/ ├── os_net_interface.h /*操作系統和網絡的抽象接口定義:保留,不需要修改*/ └── project └── stm32l476-at /*STM32環境下使用AT連云的工程*/ ├── Core ├── hal_adapter.c /*刪除,使用自有底層接口*/ ├── mqtt_at_basic_demo.c /*Demo需要修改設備認證信息*/ ├── os_freertos_impl.c /*非FreeRTOS需要實現對應接口*/
適配自有的AT模組驅動接口:./net/at/net_at_impl.c。
AT模組驅動框架連云
要使用此接入方案,您需適配AT模組的驅動。
進入路徑./portfile/aiot_port,參考以下代碼,您可以完成AT模組驅動框架的適配。更多信息,請參見適配硬件鏈路和操作系統和適配模組特性。
說明根據通信模組的系統、硬件、模組型號的實際情況,您需配置與AT模組驅動框架相對應的具體接口。
├── at /*AT模組驅動框架目錄,不需要修改*/ │ ├── aiot_at_api.c │ ├── aiot_at_api.h │ ├── module /*模組指令及特性定義,自有其他類型模組可參照以下示例*/ │ │ ├── air724_ssl.c │ │ ├── air724_tcp.c │ │ ├── fibcom_l610_ssl.c │ │ ├── fibcom_l610_tcp.c │ │ ├── quectel_ec200s_ssl.c │ │ └── quectel_ec200s_tcp.c │ └── net_at_impl.c /*網絡功能實現接口,不需要修改*/ ├── at_port.c /*系統依賴接口的實現,不需要改*/ ├── os_net_interface.h /*操作系統和網絡的抽象接口定義,不需要修改*/ └── project └── stm32l476-at /*STM32環境下使用AT連云的工程*/ ├── Core ├── hal_adapter.c /*適配HAL層傳輸,UART、SPI等*/ ├── mqtt_at_basic_demo.c /*Demo需要修改設備認證信息*/ ├── os_freertos_impl.c /*非FreeRTOS需要實現對應接口*/
測試示例,請參見示例一:STM32+EC200S模組。