目录

  • 1、实现方案
  • 2、制作差分包
    • 1)差分包制作工具获取
    • 2)生成差分包
  • 3、升级流程
    • 1)将生成的bin文件上传到http服务器上,获取http的url
    • 2)操作文件系统,将bin文件保存
  • 4、注意事项

1、实现方案

2、制作差分包

1)差分包制作工具获取

百度网盘链接:https://pan.baidu.com/s/1pxNF7HJLKV43s1ZkpTpfow
提取码:owdj

2)生成差分包

  • 解压文件
  • 打开【开始】——》进入【命令提示符】——》进入到解压后的文件目录下——》txt文件中的指令
  • 最后得到的bin文件就是生成的差分包文件

3、升级流程

1)将生成的bin文件上传到http服务器上,获取http的url

void cm_test_http2(char *fota_url)
{//HTTP client结构体httpclient_t client = {0};//HTTP client数据httpclient_data_t client_data = {0};//错误返回值HTTPCLIENT_RESULT ret = HTTPCLIENT_ERROR_CONN;//HTTP 响应数据缓冲区指针char *buf = NULL;//分配响应数据内存buf = malloc(CM_HTTP_RECV_SIZE);//如果分配失败,则退出if (buf == NULL) {cm_printf("Malloc failed.\r\n");free(buf);return;}//清空缓冲区memset(buf, 0, sizeof(buf));//将缓冲区指针注册到数据结构体中client_data.response_buf = buf;  //Sets a buffer to store the result.cm_printf("start http test\n");//响应数据缓冲区长度client_data.response_buf_len = CM_HTTP_RECV_SIZE;  //Sets the buffer size.cm_printf("start connect\n");//启动连接ret = httpclient_connect(&client, fota_url);//如果连接成功if (ret == HTTPCLIENT_OK) {//发送GET请求cm_printf("start send request\n");ret = httpclient_send_request(&client, fota_url, HTTPCLIENT_GET, &client_data);//如果请求成功if (ret == HTTPCLIENT_OK) {cm_printf("start recv\n");//开始接收数据ret = httpclient_recv_response(&client, &client_data);// 删除之前保存的文件delete_file("/fota/fota.pack");// 将获取到的bin文件进行保存write_fota_file(client_data.response_buf, client_data.content_block_len);osDelay(50);// 触发升级,若返回0,则表示升级失败cm_fota_update();}else{cm_printf("send request fail,ret=%d\n",ret);}}else{cm_printf("connect fail,ret=%d\n",ret);}cm_printf("close\n");//关闭连接httpclient_close(&client);//释放缓冲区free(buf);
}

2)操作文件系统,将bin文件保存

// 将bin文件进行保存
void write_fota_file(unsigned char *message, unsigned int len)
{//先创建文件夹,否则创建文件可能会失败cm_fs_mkdir("/fota/");//创建文件并写入内容create_fota_file("/fota/fota.pack", message, len);}//创建文件并写入内容
void create_fota_file(char *file, unsigned char *message, unsigned int fota_data_len)
{int fd;int ret;//打开或创建测试文件//  fd = cm_fs_fopen("/param_config/param_config.txt",O_CREAT|O_RDWR);fd = cm_fs_fopen(file, O_CREAT | O_RDWR);//如果出错则退出if(fd < 0){cm_printf("[FWRITE]file open failed\n");return;}//写入指定内容到文件内ret = cm_fs_fwrite(fd, message, fota_data_len);//如果出错,关闭文件后退出if(ret <0){cm_printf("[FWRITE]file write failed\n");cm_fs_fclose(fd);  return;}cm_printf("[FWRITE]file write ok\n");//将缓冲写入到Flashcm_fs_fflush(fd);//关闭文件cm_fs_fclose(fd);
}// 删除文件
void delete_file(char *file)
{// 返回0表示删除成功cm_printf("delete:%d\n",cm_fs_fdelete(file));
}

4、注意事项

  • 做 OTA 功能前,需要明确 SDK 的版本,每个版本的实现方式存在差异
  • 具体的版本还需要跟中移物联的技术支持获取

中移物联4G-Cat.1模组ML302开发 | OpenCpu开发 | 自定义OTA功能相关推荐

  1. Air700E开发板|移芯EC618|4G Cat.1模组:概述及PinOut

    文章目录 基础资料 概述 主要功能 外设分布 PinOut(管脚定义) 管脚功能说明 固件升级 正常开机模式: 下载模式: IO 电平选择 基础资料 Air700E文档中心 概述 EVB-Air700 ...

  2. 中移物联ML302 4G Cat1 模组GPS功能实现流程

    中移物联ML302 4G Cat1 模组GPS功能实现流程 注意:下文种的□表示"\r\n" 1,首先要入网 [17:26:55.659]发→◇AT+CGACT=1,1 □ [17 ...

  3. 中移物联ML302 4G Cat1 模组TCP/UDP 实现流程

    中移物联ML302 4G Cat1 模组TCP/UDP 实现流程 注意:下文种的□表示"\r\n" 一,首先AT [00:57:34.794]发→◇AT □ [00:57:35.7 ...

  4. 【4G模块】中移物联ML302 + GD32F407 使用支持MQTT协议AT指令接入阿里云物联网平台

    目录 〇.目的.GD32.ML302相关简介 0.目的: 1.ML302: 2.LTE Cat.1: 3.GD32F407 一.GD芯片创建工程写驱动:LED.串口4.4G模块 1.创建工程 2.LE ...

  5. 【无标题】中移物联OneMO模组亮相2022世界数字经济大会暨第十二届智博会

           9月2日至4日,2022世界数字经济大会暨第十二届智慧城市与智能经济博览会在宁波举行.大会以"数字驱动,智能发展"为主题,以推动"数字产业化.产业数字化.数 ...

  6. 4G DTU接入平台系列教程(三):OneNet中移物联云平台接入教程详解

    LTE-659 4G DTU系列 OneNet中移物联云平台连接教程 今天介绍物联设备 LTE-659 4G DTU如何接入OneNet中移物联云平台系列. LTE-659是一款Cat 1模块.物联网 ...

  7. 中移物联与阿里云IoT联合发布“中移天枢”智能云模组 全面接入AliOS Things

    8月24日,在2018云栖大会·重庆峰会上,中国移动全资子公司中移物联网有限公司与阿里巴巴旗下阿里云IoT宣布达成重大合作,双方将联合发布"中移天枢"智能云模组,全面接入阿里云Io ...

  8. 中移物联ML302开发板上手体验

    开始 中移物联网的ML302开发板是支持4G Cat.1网络的开发板,对于Cat.1这里就不再赘述,详细可以去官网了解一下. 接下来介绍中移物联网的ML302开发板以及具体的上手步骤,给那些刚拿到开发 ...

  9. m5310采用芯片 中移物联_全球NB-IoT商用网络将达60张 中国移动商用比中国电信更激进...

    截至目前,全球已商用的NB-IoT与eMTC商用网络个数分别为18.5张,计划或已开启试验的网络个数分别60.21张,比例为3:1. 此前,业界曾预计,2018年NB-IoT商用网络将超过150张,但 ...

最新文章

  1. flask管理不同的路由
  2. ubuntu 下安装java6的源
  3. Python练习 | Python 可迭代对象 迭代器
  4. 【RAC】 RAC For W2K8R2 安装--总体规划 (一)
  5. asp.net 加载xml到menu
  6. Linux IO模式及 select、poll、epoll详解
  7. 【活动预告】“智能医疗技术应用”线上论坛
  8. “入圈”高端大获成功!小米10至尊版上市首月霸榜京东、天猫5000元以上档销量第一...
  9. 将xml转为txt_HZ文章转短视频工具v1.0 快速将文章转为短视频 自动配音 配字幕 配图...
  10. Linux 关于Transparent Hugepages的介绍
  11. 设置代理,多进程爬虫
  12. 质量管理体系文件分类
  13. 2020哔哩哔哩校招后端开发笔试编程题总结
  14. 死区4个状态分析,以及死区时间计算
  15. 极客日报:美团拼多多等平台下架“一分钱秒杀”;全球大量网站集体宕机,一度无法访问;Swift内置对并发的支持
  16. 第一章 基本数据类型-API的理解和使用
  17. VMR7100/VMM7100 Typ-C/DP转HDMI2.1 8K设计方案|替代VMM7100/VMR7100芯片|GSV6201可完全替代兼容 VMM7100/VMR7100
  18. Python 爬虫十六式 - 第七式:正则的艺术
  19. Dialog使用时has leaked window...that was originally added here错误
  20. 在Centos8上安装漏洞扫描软件Nessus

热门文章

  1. 网页无法复制的修复方法---Chrome上,最简单的解除“右键限制”的方法 - 书签法
  2. stm32、IO口、中断、串口、定时器讲解
  3. 网站服务器和虚拟主机之间有什么区别?
  4. 安全的随想经典病毒和著名事件
  5. Chango的数学Shader世界(八)光盘模拟-各向异性,光栅衍射
  6. 声明银行账户类,成员变量包括账号,储户姓名,开户时间,身份证号码,存储余额等账户信息...
  7. 微通道产品经理Grover采访:美国的微通道设计
  8. Android studio链接天天模拟器
  9. CAP(Cumulative Accuracy Profile)曲线/AR值释义
  10. MySQL数据库创建商品表