概述
移植环境:
开发包或平台 | 版本或要求 | 链接 |
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功能,从SDK选择所需源文件
- 添加SDK源文件到相应开发工具的项目中,并增加功能所需宏定义
- 用户还需要实现使用到功能中定义的HAL接口,比如线程、定时器、内存管理相关的功能;用户还需实现SAL的HAL函数,用于初始化通信模组、通过模组发送数据和接收数据
- 用户可以参照exmaple调试SDK是否工作正常
- 应用程序调用SDK提供的API接口连接物联网平台,并收发数据,进行调试
- 产品发布
从上图的流程,可以看出阿里云物联网官方提供的移植步骤还是比较明确的。
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工程,如下所示:
3.1 编译前,对KEIL工程进行简单设置
关闭编译警告提示:
3.2 编译整个工程
编译结果如下图所示:
看到编译结果,千万别慌,请确保你在移植前,你的工程编译是无误的,否则会让你整个人崩溃。244个错误,从阿里云的牌子上想,对方的工程师不可能技术那么渣吧。正如前面所说的,阿里云提供的SDK包是针对Linux平台开发的,window和linux下用的C语言,最有可能是用的C语言的版本不同。确实是如此,keil自带编译器默认编译C89标准,当然阿里云物联网也linux的编译工具链作了说明,采用gcc-5.4.0,该编译工具链是支持C99。因此,我们只要将keil自带的编译器支持C99标准即可。如下图所示:
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平台的全部内容,希望文章能够帮你解决【物联网-设备端】移植阿里云物联网SDK中iotkit至STM32平台所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复