外接通信模组的设备,在移植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模组。