3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT(1)

三、环境安装

3.1 串口终端

开发板插上串口线之后,打开设备管理器可以看到识别到串口COM8,这就是开发板的Debug串口。(需要提前安装好USB转串口驱动)。

打开串口工具,新建会话,选择串口协议。

波特率选择1500000也就是1.5M。

创建完成。

选择刚才创建好的会话,点击连接。

复位开发板(开发板上有一个RESET按钮),正常情况下会在终端上看到内核启动过程;启动完成后按下回车即可进入到Linux终端命令行。

从打印的命令行数据可以看出当前设备的配置:

这是uboot打印出来的配置信息。从当前信息里可以看出CPU型号RK3568,内存2GB。

U-Boot 2017.09-gb448fedf55-211210 #addy (Dec 20 2021 - 10:58:09 +0800)

Model: Rockchip RK3568 Evaluation Board
PreSerial: 2, raw, 0xfe660000
DRAM: 2 GiB
Sysmem: init
Relocation Offset: 7d34d000
Relocation fdt: 7b9f87e8 - 7b9fecd0
CR: M/C/I
Using default environment

内核启动打印的信息;从信息里可以看出当前系统使用的内核是Linux 5.10内核。

Starting kernel …

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[ 0.000000] Linux version 5.10.79 (root@ecs-58f4) (aarch64-linux-gnu-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #1 SMP Thu Jun 29 09:39:49 CST 2023
[ 0.000000] Machine model: rockchip,rk3568-toybrick-dev-linux-x0
[ 0.000000] earlycon: uart8250 at MMIO32 0x00000000fe660000 (options ‘’)
[ 0.000000] printk: bootconsole [uart8250] enabled
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000200000-0x000000007fffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges

在串口软件上可以设置终端类型,方便区分Linux终端文件类型。

3.2 固件烧写

说明文档:https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md#https://gitee.com/link?target=http%3A%2F%2Fci.openharmony.cn%2Fdailys%2Fdailybuilds

【1】烧写工具下载

https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97

下来下来之后打开HiHope_DAYU200文件夹。

我这里在windows下进行烧写。

DriverAssitant_v5.1.1.zip目录下是USB驱动,解压后进行安装。如果已经安装旧版本的烧写工具, 需要先点击“驱动卸载” 按钮下载驱动, 然后再点击“驱动安装” 按钮安装驱动。

RKDevTool.exe就是烧写工具。

【2】HiHope官方固件下载

地址:https://gitee.com/hihope_iot/images/tree/master/HiHope_DAYU200

下载下来解压,打开烧写工具选择路径。

确认开发板是否进入烧写模式

(1)如果界面显示"发现一个 LOADER 设备", 说明开发板进入 Loader 模式等待烧写固件。

(2)如果界面显示"发现一个 MASKROM 设备", 说明开发板进入 Maskrom 模式等待烧写固 件。

(3)如果界面显示"没有发现设备", 说明开发板没有进入烧写模式, 需要先让开发板进入烧写模式

进入烧写模式的步骤

(1)先按住 VOL-/RECOVERY 按键 和 RESET 按钮不松开, 烧录工具此时显示“没有发现设备”

(2)然后再 松开 RESER 键, 烧录工具显示“发现一个 LOADER 设备” , 说明此时已经进入烧写模式。

3.3 huaweicloud-iot-device-sdk-c 介绍

说明文档:https://gitee.com/openharmony-sig/iot_device_sdk_c/blob/master/README_CN.md#5

Huawei Cloud IOT Device SDK for C 是华为云推出的一套面向嵌入式设备的物联网开发套件,支持 C 语言开发。该套件提供了一系列 API,可以方便地实现设备与云端的连接、数据上报、远程控制等功能。

该套件主要包括以下组件:

  • Huawei LiteOS:一个轻量级的操作系统,提供了内核级别的任务调度、内存管理、网络协议栈等功能。
  • Huawei Cloud IOT Agent:一个设备端的物联网代理程序,负责与云端的物联网平台进行连接,实现设备注册、数据上报、远程控制等功能。
  • Huawei Cloud IOT SDK for C:一个 C 语言的开发包,提供了一系列 API,可以方便地实现设备与云端的连接、数据上报、远程控制等功能。

使用 Huawei Cloud IOT Device SDK for C 可以大大简化物联网设备的开发流程,提高开发效率,同时也可以保证设备与云端之间的连接稳定性和安全性。该套件适用于各种类型的嵌入式设备,例如智能家居、智能家电、智能穿戴等。

Huawei Cloud IOT SDK for C SDK面向运算、存储能力较强的嵌入式终端设备,开发者通过调用SDK接口,便可实现设备与物联网平台的上下行通讯。SDK当前支持的功能有:

  • 支持物模型:设备消息/属性/事件上报,设备命令/消息/属性/事件接收
  • 支持子设备消息转发、子设备管理
  • 支持OTA升级
  • 支持密码认证和证书认证两种设备接入方式
  • 支持自定义topic
  • 支持设备影子查询
  • 支持自定义日志收集能力
  • 支持端侧规则引擎
  • 支持SSH远程登录
  • 支持对接边缘M2M

四、上云实验

4.1 物联网平台介绍

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。

使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。

物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。

设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。

业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。

4.2 开通物联网服务

地址:https://www.huaweicloud.com/product/iothub.html

点击总览,查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。

总结:

端口号: MQTT (1883)| MQTTS (8883)
接入地址: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

根据域名地址得到IP地址信息:

Microsoft Windows [版本 10.0.19045.2965]
© Microsoft Corporation。保留所有权利。

MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。

4.3 创建产品

(1)创建产品

点击产品页,再点击左上角创建产品。

(2)填写产品信息

根据自己产品名字填写。

(3)产品创建成功

(4)添加自定义模型

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。

这个模型就是定义自己设备接下来需要向服务器上传那些数据类型。根据自己的数据类型进行编写。

先点击自定义模型。

再创建一个服务ID。

接着点击新增属性。

4.4 添加设备

产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。

(1)注册设备

(2)根据自己的设备填写

(3)保存设备信息

创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。

(4)设备创建完成

可以点击设备进入到设备详情页面。

4.5 OpenHarmony环境构建

在文件Harmony源码路径/build/subsystem_config.json中添加构建脚本:

“iot-device-sdk-c” : {
“path”: “third_party/iot-device-sdk-c”,
“name”: “iot-device-sdk-c”
},

(1)添加子系统编译构建

在文件OpenHarmony源码路径/build/subsystem_config.json中添加如下构建脚本:

“iot-device-sdk-c” : {
“path”: “third_party/iot-device-sdk-c”,
“name”: “iot-device-sdk-c”
},

在产品配置文件中添加子系统,其子系统名称与文件中添加内容对应,就是iot-device-sdk-c:iot-device-sdk-c

配置文件位于`MY_OHOS_

(2)编译依赖的动态库

此sdk主要依赖于libboundscheck.so,libpaho-mqtt3as.so,libssh.so,libnopoll.so这些动态库,其间接依赖于libz.so,libssl.so,libcrypto.so

(3)编译第三方动态库

对于libboundscheck.solibpaho-mqtt3as.solibssh.solibnopoll.so, 这些库对应的源码没有在OpenHarmony中集成,如果开发板中没有这些动态库,需要自行下载并编译。

执行以下命令拉取对应源码:

cd $MY_OHOS_DIR/third_party/iot_device_sdk_c
mkdir third_party
cd third_party
git clone https://gitee.com/Janisa/huawei_secure_c.git \
&& git clone -b v1.3.12 --single-branch https://github.com/eclipse/paho.mqtt.c.git \
&& git clone -b libssh-0.9.6 --single-branch https://git.libssh.org/projects/libssh.git \
&& git clone -b 0.4.8 --single-branch https://github.com/ASPLes/nopoll.git \

分别在OpenHarmony源码路径/third_party/iot_device_sdk_c/third_party/huawei_secure_c,OpenHarmony源码路径/third_party/iot_device_sdk_c/third_party/paho.mqtt.c, OpenHarmony源码路径/third_party/iot_device_sdk_c/third_party/libssh, OpenHarmony源码路径/third_party/iot_device_sdk_c/third_party/nopoll文件夹中放入或替换BUILD.gn文件,

内容如下:

# 放入 $MY_OHOS_DIR/third_party/iot_device_sdk_c/third_party/huawei_secure_c

Copyright © [2020] Huawei Technologies Co.,Ltd.All rights reserved.

OpenArkCompiler is licensed under the Mulan PSL v1.

You can use this software according to the terms and conditions of the Mulan PSL v1.

You may obtain a copy of Mulan PSL v1 at:

http://license.coscl.org.cn/MulanPSL

THIS SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR

FIT FOR A PARTICULAR PURPOSE.

See the Mulan PSL v1 for more details.

import(“//build/ohos.gni”)

src_libHWSecureC = [
“src/vsprintf_s.c”,
“src/wmemmove_s.c”,
“src/strncat_s.c”,
“src/vsnprintf_s.c”,
“src/fwscanf_s.c”,
“src/scanf_s.c”,
“src/strcat_s.c”,
“src/sscanf_s.c”,
“src/secureprintoutput_w.c”,
“src/wmemcpy_s.c”,
“src/wcsncat_s.c”,
“src/secureprintoutput_a.c”,
“src/secureinput_w.c”,
“src/memcpy_s.c”,
“src/fscanf_s.c”,
“src/vswscanf_s.c”,
“src/secureinput_a.c”,
“src/sprintf_s.c”,
“src/memmove_s.c”,
“src/swscanf_s.c”,
“src/snprintf_s.c”,
“src/vscanf_s.c”,
“src/vswprintf_s.c”,
“src/wcscpy_s.c”,
“src/vfwscanf_s.c”,
“src/memset_s.c”,
“src/wscanf_s.c”,
“src/vwscanf_s.c”,
“src/strtok_s.c”,
“src/wcsncpy_s.c”,
“src/vfscanf_s.c”,
“src/vsscanf_s.c”,
“src/wcstok_s.c”,
“src/securecutil.c”,
“src/gets_s.c”,
“src/swprintf_s.c”,
“src/strcpy_s.c”,
“src/wcscat_s.c”,
“src/strncpy_s.c”,
]

include_common = [
“include”,
“src”,
]

ohos_static_library(“libHWSecureC”) {
sources = src_libHWSecureC
include_dirs = include_common
}

ohos_shared_library(“libboundscheck”) {
sources = src_libHWSecureC
include_dirs = include_common
}

放入 $MY_OHOS_DIR/third_party/iot_device_sdk_c/third_party/paho.mqtt.c

Copyright © [2020] Huawei Technologies Co.,Ltd.All rights reserved.

OpenArkCompiler is licensed under the Mulan PSL v1.

You can use this software according to the terms and conditions of the Mulan PSL v1.

You may obtain a copy of Mulan PSL v1 at:

http://license.coscl.org.cn/MulanPSL

THIS SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR

FIT FOR A PARTICULAR PURPOSE.

See the Mulan PSL v1 for more details.

import(“//build/ohos.gni”)
MQTT_SRC_DIR = “src”

MQTT_AS_SOURCE_FILES = [
M Q T T _ S R C _ D I R / B a s e 64. c " , " {MQTT\_SRC\_DIR}/Base64.c", " MQTT_SRC_DIR/Base64.c","{MQTT_SRC_DIR}/Clients.c”,
M Q T T _ S R C _ D I R / H e a p . c " , " {MQTT\_SRC\_DIR}/Heap.c", " MQTT_SRC_DIR/Heap.c","{MQTT_SRC_DIR}/LinkedList.c”,
M Q T T _ S R C _ D I R / L o g . c " , " {MQTT\_SRC\_DIR}/Log.c", " MQTT_SRC_DIR/Log.c","{MQTT_SRC_DIR}/Messages.c”,
M Q T T _ S R C _ D I R / M Q T T A s y n c . c " , " {MQTT\_SRC\_DIR}/MQTTAsync.c", " MQTT_SRC_DIR/MQTTAsync.c","{MQTT_SRC_DIR}/MQTTAsyncUtils.c”,
M Q T T _ S R C _ D I R / M Q T T P a c k e t . c " , " {MQTT\_SRC\_DIR}/MQTTPacket.c", " MQTT_SRC_DIR/MQTTPacket.c","{MQTT_SRC_DIR}/MQTTPacketOut.c”,
M Q T T _ S R C _ D I R / M Q T T P e r s i s t e n c e . c " , " {MQTT\_SRC\_DIR}/MQTTPersistence.c", " MQTT_SRC_DIR/MQTTPersistence.c","{MQTT_SRC_DIR}/MQTTPersistenceDefault.c”,
M Q T T _ S R C _ D I R / M Q T T P r o p e r t i e s . c " , " {MQTT\_SRC\_DIR}/MQTTProperties.c", " MQTT_SRC_DIR/MQTTProperties.c","{MQTT_SRC_DIR}/MQTTProtocolClient.c”,

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-TDuixVr6-1712638667970)]
[外链图片转存中…(img-jdn0gK19-1712638667970)]
[外链图片转存中…(img-MgqiDIe8-1712638667971)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-Ua508ULM-1712638667971)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值