IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 设备端移植CSDK接入华为mqtt IoTDA -> 正文阅读

[嵌入式]设备端移植CSDK接入华为mqtt IoTDA

一、开发环境

虚拟机:Ubuntu16.04
gcc版本:5.4.0
arm-linux-gnueabihf-gcc版本:8.2.1

二、下载IoTDA CSDK

1、新建文件夹huawei_iotda,用来存放相关文件:

mkdir huawei_iotda 

2、进入huawei_iotda:

cd huawei_iotda

3、克隆华为云物联网设备侧CSDK代码:

git clone https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c.git

SDK依赖openssl、paho、zlib库,因此接下来先编译相关动态链接库。

三、编译openssl库

1、从openssl官网 https://www.openssl.org/source 下载最新版本的openssl(如openssl-1.1.1l.tar.gz),上传到linux编译机上(笔者的目录为/home/lyy/work/huawei_iotda),并解压文件:

tar -vxzf openssl-1.1.1l.tar.gz

2、新建openssl,用于存放openssl生成的相关文件:

mkdir openssl

3、进入openssl源码目录:

cd openssl-1.1.1l

4、运行 setarch i386 ./config no-asm shared --prefix=/home/lyy/work/huawei_iotda/openssl --cross-compile-prefix=arm-linux-gnueabihf-命令配置openssl并生成Makefile;
5、修改Makefile。Makefile中使用" -m32",如果不去掉的话在后面的编译过程中将产生错误,所以需要找到" -m32"将其删除。搜索所有 “-m32”,然后删除掉,保存并退出:

vi Makefile
:/-m32

6、编译出库。 在openssl源码目录下,运行make depend命令添加依赖:

make depend

运行make命令开始编译:

make

再运行如下命令进行安装:

make install

在配置的openssl安装目录下/home/lyy/work/huawei_iotda/openssl找到lib目录,有生成的库文件:
libcrypto.so.1.1、libssl.so.1.1和软链接libcrypto.so、libssl.so,请将这些文件拷贝到SDK的lib文件夹下(同时将/home/lyy/work/huawei_iotda/openssl/include底下的openssl文件夹拷贝到SDK的include目录下)。

四、编译paho库

1、访问github下载地址https://github.com/eclipse/paho.mqtt.c, 下载paho.mqtt.c源码:

git clone  https://github.com/eclipse/paho.mqtt.c

2、进入paho源码目录;

cd paho.mqtt.c

3、修改编译工具链、添加头文件目录和动态链接库

CC = arm-linux-gnueabihf-gcc

CFLAGS += -I/home/lyy/work/huawei_iotda/openssl/include
LDFLAGS += -L/home/lyy/work/huawei_iotda/openssl/lib/ -lrt -lssl -lcrypto

在这里插入图片描述

4、编译,执行清空命令:

make clean

执行编译命令:

make

5、编译完成后,可以在build/output目录下看到编译成功的库。
6、拷贝paho库文件 当前SDK仅用到了libpaho-mqtt3as,请将文件libpaho-mqtt3as.so和libpaho-mqtt3as.so.1拷贝到SDK的lib文件夹下(同时将paho源码目录下src文件夹里的头文件(MQTTAsync.h/MQTTClient.h/MQTTClientPersistence.h/MQTTProperties.h/MQTTReasonCodes.h/MQTTSubscribeOpts.h/MQTTExportDeclarations.h)拷贝到SDK的include/base目录下)。

五、编译zlib库

1、下载zlib源码https://github.com/madler/zlib/archive/v1.2.11.zip 通过如下命令解压缩:

unzip zlib-1.2.11.zip

2、进入源码目录下:

cd zlib-1.2.11

3、配置生成makefile文件

./configure

4、修改Makefile文件

vi Makefile

CC = gcc改为 CC = arm-linux-gnueabihf-gcc
其他地方的gcc 改为 $(CC),改完后保存并退出。
5、执行makefile文件

make

拷贝so库文件 将源码目录下生成的libz.so、libz.so.1、libz.so.1.2.11拷贝到sdk的lib文件夹下。

六、编译华为IoTDA CSDK

1、进入到解压的文件夹下:

cd huaweicloud-iot-device-sdk-c

2、修改配置信息: 需要修改src/device_demo/device_demo.c文件中的如下参数:
servierIp_:平台南向IP,可在控制台的应用管理中查看。
username_:MQTT协议需要填写username,iot平台默认设备ID为username,设备ID是设备注册时返回的值。
password_:设备密钥,设备注册时返回的值。
3、修改Makefile,将CC = gcc改为 CC = arm-linux-gnueabihf-gcc
执行make命令进行编译(如果是32位的操作系统,请删除掉Makefile中的"-m64"):

make

4、编译完成后,查看MQTT_Demo.o文件格式
file MQTT_Demo.o
在这里插入图片描述
可以看出MQTT_Demo.o是32位小端ARM架构的可执行文件;

七、下载验证

1、将MQTT_Demo.o和lib拷贝到嵌入式设备端,将lib重命名为iotda_lib,并导出库路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/customer/iotda_lib
2、运行测试程序MQTT_Demo.o

./ MQTT_Demo.o

在这里插入图片描述
提示缺少 libanl.so.1文件!
3、在linux编译机arm-linux-gnueabi-gcc工具链安装目录下找到该动态连接库,将整个动态链接库拷贝到嵌入式设备端,导出lib库目录:
在这里插入图片描述

cp -a /mnt/gcc_lib/ ./
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/customer/gcc_lib

重新运行MQTT_Demo.o
在这里插入图片描述
可以看到,arm linux设备端已经可以连接到华为云服务器了。至此,移植CSDK接入华为mqtt IoTDA已经完成并测试通过了。

如果是要移植到linux PC 上可以参考官方ReadMe文档https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c/blob/master/README_CN.md。移植方式大体是相同的,只是编译工具使用gcc而已。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:56:38  更:2021-10-08 11:57:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:58:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码