【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台

移植环境:

开发包或平台

版本或要求

链接

Link Kit SDK(阿里云物联网设备端C-SDK)

iotkit-embedded-2.3.0.zip

https://help.aliyun.com/document_detail/96623.html?spm=a2c4g.11186623.6.548.6c75492bv8pakT

STM32F1xx(MCU)

Flash:最好在128KB以上(参考)

RAM :最好20K以上(参考)

 

阿里云物联网管理平台

基础版或者高级版

 

蜂窝网2/3/4G模组或者以太网网卡

   

KEIL5 MDK

   

1 概述

应公司软件研发的方案,采用阿里云物联网平台作为代理,节省开发时间和成本,因而本不得已采用阿里云提供的设备端SDK开发物联网终端。由于阿里云物联网提供的SDK包是为Linux平台设计的,鉴于公司的条件,也是不得已采用MCU方案。当然,从SDK中提取源码移植MCU平台也不是一件容易的事。个人建议是,公司条件好的话,采用嵌入式Linux方案最佳,开发方便又快。iotkit移植至MCU主要参考了阿里云物联网一文《MCU+支持TCP的模组》。本文主要讲述阿里云物联网平台基础版对应的设备端开发,暂不涉及物模型、TLS加密等。本人实际已经完成高级版的开发,由于基础版和高级版的移植差别不大,故采用基础版作为讲解。

 

2 设备端开发过程

本节摘自阿里云物联网《MCU+支持TCP的模组》一文。

【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台_第1张图片

  1. 用户将需要根据所需SDK功能,从SDK选择所需源文件
  2. 添加SDK源文件到相应开发工具的项目中,并增加功能所需宏定义
  3. 用户还需要实现使用到功能中定义的HAL接口,比如线程、定时器、内存管理相关的功能;用户还需实现SAL的HAL函数,用于初始化通信模组、通过模组发送数据和接收数据
  4. 用户可以参照exmaple调试SDK是否工作正常
  5. 应用程序调用SDK提供的API接口连接物联网平台,并收发数据,进行调试
  6. 产品发布

从上图的流程,可以看出阿里云物联网官方提供的移植步骤还是比较明确的。

 

3 Link Kit SDK源码提取

功能说明

文件列表

说明

MQTT连接

头文件:

include/iot_export.h

include/export/iot_export_mqtt.h

include/export/iot_export_errno.h

include/iot_import.h

include/import/iot_import_product.h

include/import/iot_import_tcp.h

include/import/iot_import_config.h

源文件:

src/protocol/mqtt/

src/infra/utils/ src/infra/log/ src/infra/system /

src/sdk-impl/

由于使用MQTT连接云端,本功能必选。

region设置、一机一密以及一型一密的设置、基于MQTT Topic通信

【注】OS、TCP hal可以参考src/ref-impl/os/下面的参考实现,其中有三个平台的实现:macos、windows、ubuntu,可以根据目标平台差异度选择相应的参考实现。例如,目标平台为freeRTOS,建议选择ubuntu的实现进行参考

 

此处的源码抽取与阿里云物联网官方所列出的不一样,在移植过程中仅用到了MQTT部分,当然如果是高级版的话,还会用到物模型。

将上述的c文件加入到keil工程,如下所示:

【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台_第2张图片

 

 

 

3.1 编译前,对KEIL工程进行简单设置

关闭编译警告提示:

【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台_第3张图片

 

3.2 编译整个工程

编译结果如下图所示:

看到编译结果,千万别慌,请确保你在移植前,你的工程编译是无误的,否则会让你整个人崩溃。244个错误,从阿里云的牌子上想,对方的工程师不可能技术那么渣吧。正如前面所说的,阿里云提供的SDK包是针对Linux平台开发的,window和linux下用的C语言,最有可能是用的C语言的版本不同。确实是如此,keil自带编译器默认编译C89标准,当然阿里云物联网也linux的编译工具链作了说明,采用gcc-5.4.0,该编译工具链是支持C99。因此,我们只要将keil自带的编译器支持C99标准即可。如下图所示:

【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台_第4张图片

 

3.3 重新编译工程

重新编译工程,不会再出现上述那么多个错误了,最多显示40多个吧,当然这40多个都是自己可以解决,基本都是声明了接口,但是没有实现接口实体。这些接口,请根据官方提供的接口说明自行实现。

 

4 运行官方example

MQTT的例子程序为SDK的 examples/mqtt/mqtt_example.c 这个文件, 具体请参考《MCU+支持TCP的模组》一文

https://help.aliyun.com/document_detail/97921.html?spm=a2c4g.11186623.6.556.e38c492btCE3pL

连上阿里云物联网平台后,会出现下列设备信息:

【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台_第5张图片

 

你可能感兴趣的:(物联网)