EC600U_esp32_iap_uart/qcloud-iot/docs/MCU+通用TCP_AT模组移植(nonOS).md
2024-02-05 17:39:56 +08:00

3.9 KiB
Raw Permalink Blame History

简介

对于不具备网络通讯能力的MCU一般采用MCU+通讯模组的方式通讯模组包括WiFi/2G/4G/NB-IoT一般提供了基于串口的AT指令协议供MCU进行网络通讯。针对这种场景C-SDK 封装了AT-socket网络层网络层之上的核心协议和服务层无须移植。本文阐述针对 MCU(无OS)+通用TCP AT模组的目标环境如何移植C-SDK 并接入腾讯云物联网平台以IoT Explorer为例。 相较于有RTOS场景at_socket网络接收数据的处理会有差异应用层需要周期性的调用IOT_MQTT_Yield来接收服务端下行数据错过接收窗口则会存在数据丢失的情况所以在业务逻辑较为复杂的场景建议使用RTOS通过配置 FEATURE_AT_OS_USED = OFF选择无OS方式。

系统框图

mcu+module

移植步骤

port_flow

1. 下载最新版本设备端 C-SDK

2. SDK功能配置及代码抽取

  • 无RTOS使用通用TCP模组编译配置选项配置如下:
名称 配置 说明
BUILD_TYPE debug/release,根据需要设置
EXTRACT_SRC ON 使能代码抽取
COMPILE_TOOLS gcc/MSVC 根据需要设置IDE情况不关注
PLATFORM linux/windows 根据需要设置IDE情况不关注
FEATURE_OTA_COMM_ENABLED ON/OFF 根据需要设置
FEATURE_AUTH_MODE KEY 资源受限设备认证方式建议选秘钥认证
FEATURE_AUTH_WITH_NOTLS ON/OFF 根据需要是否使能TLS
FEATURE_EVENT_POST_ENABLED ON/OFF 根据需要是否使能事件上报
FEATURE_AT_TCP_ENABLED ON 使能at_socket组件
FEATURE_AT_UART_RECV_IRQ ON 使能AT串口中断接收
FEATURE_AT_OS_USED OFF at_socket组件无RTOS环境使用
FEATURE_AT_DEBUG OFF 默认关闭AT模组调试功能有调试需要再打开

3. 数据模板模板代码生成

对于IoT_Explorer产品可以参考IoT_Explorer/Data_template数据模板代码生成 对于IoT_Hub产品可跳过这一步

4. HAL 层移植

参见C-SDK_Porting跨平台移植概述

对于网络相关的HAL接口通过上面的编译选项已选择SDK提供的AT_Socket框架SDK会调用 network_at_tcp.c 的at_socket接口at_socket层不需要移植需要实现AT串口驱动及AT模组驱动AT模组驱动只需要实现AT框架中at_device的驱动结构体 at_device_op_t 的驱动接口即可可以参照at_device目录下的已支持的模组。AT串口驱动需要实现串口的中断接收然后在中断服务程序中调用回调函数 at_client_uart_rx_isr_cb 即可,可以参考 HAL_OS_nonos.c 实现目标平台的移植。

5. 业务逻辑开发

对于IoT_Explorer产品可以参考IoT_Explorer/Data_template数据模板应用开发实现具体业务场景下的业务逻辑开发。 对于IoT_Hub产品可以参考IoT_Hub目录下的例程。