tencent cloud

物联网通信

动态与公告
产品动态
产品简介
产品概述
产品功能
产品优势
应用场景
产品限制
基本概念
快速入门
快速开始
场景一:设备互通
场景二:设备状态上报与状态设置
MQTT.fx接入指南
控制台使用手册
产品管理
规则引擎
子账号访问IoT
固件升级
资源管理
证书管理
开发者手册
功能组件
签名方法
设备身份认证
设备接入协议
网关子设备
消息通信
设备影子
设备固件升级
设备远程配置
资源管理
设备日志上报
NTP服务
设备端接入手册
设备接入概述
基于C SDK接入
基于 Android SDK 接入
基于 Java SDK 接入
基于 Python SDK 接入
API 文档
History
Introduction
API Category
Making API Requests
Device Shadow APIs
Device APIs
CA Certificate APIs
Product APIs
Data Types
Error Codes
常见问题
一般性问题
设备接入和上报问题
规则引擎问题
控制台相关问题
IoT Hub 政策
隐私协议
数据处理和安全协议
词汇表

MCU+通用 TCP_AT 模组移植(nonOS)

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

SDK 下载

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

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 模组调试功能,有调试需要再打开

代码抽取

1. 在 Linux 环境运行以下命令:
mkdir build
cd build
cmake ..
2. 即可在 output/qcloud_iot_c_sdk 中,找到相关代码文件,目录层次如下:
qcloud_iot_c_sdk
├── include
│   ├── config.h
│   ├── exports
├── platform
└── sdk_src
└── internal_inc
说明:
include 目录:SDK 供用户使用的 API 及可变参数,其中 config.h 为根据编译选项生成的编译宏。
platform 目录:平台相关的代码,可根据设备的具体情况进行修改适配。
sdk_src :SDK 的核心逻辑及协议相关代码,一般不需要修改,其中 internal_inc 为 SDK 内部使用的头文件。
3. 用户可将 qcloud_iot_c_sdk 拷贝到其目标平台的编译开发环境,并根据具体情况修改编译选项。

HAL 层移植

对于网络相关的 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实现目标平台的移植。

业务逻辑开发

您可参考 SDK samples 目录下的例程进行开发。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈