Neptune开发板 MQTT-OTA升级实验 原创
本次将通过MQTT下发OTA升级指令,完成OTA升级固件实验。
1、环境准备
1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:
Neptune开发板的环境搭建及使用
1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取
git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git
2、材料准备
1、Neptune HarmonyOS物联网 IOT模组
3、使用库介绍
本次使用库都是使用W800 SDK内置的mqtt库与ota库完成:
MQTT库位于:
//device/winnermicro/neptune/sdk_liteos/src/app/mqtt
OTA库位于:
//device/winnermicro/neptune/sdk_liteos/src/app/ota
关于本次MQTT使用就不过多赘述详见Neptune开发板 使用libemqtt 点亮LED和关闭LED:
W800 SDK提供HTTP OTA升级功能,同时只需使用此函数即可完成:
关于参数设置(本次设置一个参数即可):
typedef struct _HTTPParameters
{
CHAR* Uri;
CHAR* ProxyHost;
UINT32 UseProxy ;
UINT32 ProxyPort;
UINT32 Verbose;
CHAR* UserName;
CHAR* Password;
HTTP_AUTH_SCHEMA AuthType;
} HTTPParameters;
例如ota库中wm_http_fwup.c中只需要设置URL参数即可。
4、编写代码
关于MQTT部分直接使用Neptune开发板 使用libemqtt 点亮LED和关闭LED中代码
4.1 OTA升级部分:
static int HTTP_OTA(void)
{
HTTPParameters httpParams;
memset(&httpParams, 0, sizeof(HTTPParameters));
httpParams.Uri = URL_ADDR;
printf("Location: %s\n",httpParams.Uri);
httpParams.Verbose = TRUE;
return http_fwup(httpParams);
}
4.2 增加MQTT命令
5、搭建HTTP文件服务器:
使用HFS搭建:参考本篇文章
6、编译,烧录,测试
1、查看版本号:V0.1,测试结果:
2、连接MQTT服务器并下达LED亮灭指令测试结果:
3、下达OTA指令测试结果:
4、升级成功,版本号为V0.2,测试结果:
需要注意的问题在//device/winnermicro/neptune/sdk_liteos/src/os/liteos/wm_osal_liteos.c
129~132行需屏蔽,否则OTA不成功。
129 if (stk_start != NULL) {
130 printf(" --- task name %s\n", name);
131 assert(stk_start == NULL);
132 }
总结:本次实验基本达到要求,完成了MQTT下发指令,HTTP OTA升级的需求,但对外网HTTP OTA需要再做多参数的才能完成,同时发现了MQTT不能长效化的运行,有bug的出现需要再调试,对wm_osal_liteos.c中129~132行出现的问题还需了解。
OTA升级固件的文章不多,赞一个!
学习收藏