基于STM32单片机的差分升级(增量升级)算法
DiffIAP – STM32单片机可用的差分升级(增量升级),适用于物联网车联网IAP升级OTA升级
应用背景
随着目前物联网,车联网,智能设备的增多,需要远程升级设备程序的场景增多,以往的IAP升级和OTA升级都是整包升级,bin文件过大导致升级过程依赖通信的带宽和延迟,差分升级(增量升级)恰好可以解决这个问题,两者各有优缺点,可以相辅相成.
差分升级介绍
差分升级又叫增量升级,
是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,再经过压缩算法生成特别小的补丁包,接着不管通过什么方式(网络传输,串口,232,485,CAN总线,USB总线等)把补丁包下载至设备的Flash存储中,然后在设备通过打补丁还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。
差分升级方案不仅可以节省MCU内部的资源空间、还可以节省下载流程及下载和升级过程中的功耗。从另一个角度说,通过将差分部分下发到设备保证了版本的安全性。
STM32单片机移植差分升级(增量升级)算法
本应用的底层采用开源的差分算法BsDiff和无损压缩算法LZ77,全部使用C语言编写,支持跨平台移植,接口简洁方便移植,已验证成功移植到PC端的QT平台下和嵌入式端的STM32平台下.
PC端QT平台下测试
制作差分文件
旧文件和新文件大小为174k字节,只更改了LED灯的闪烁频率,经过差分算法后生成的补丁文件只有93个字节,补丁文件大小取决于新旧文件的差异大小(文章末尾有上位机下载连接,用户可自行测试)
打补丁还原新文件
打补丁还原算法运行所需RAM大小1k多,可完美在STM32等单片机中运行.
如下图打补丁生成的新文件和目标文件完全一致.
移植接口介绍
STM32平台下:
新旧文件和补丁文件的存放位置为MCU内部Flash中(通过下载接口写入flash内),所以存放地址为Flash空间的地址
- 程序目录架构:
移植时只需在flash.c和flash.h内实现4个接口
动态内存申请和释放的接口以及flash读写的接口
3. 根据新旧文件通过上位机软件生成补丁包后,不管通过什么方式下载至单片机的flash存储内.- 使用时只需调用 一个函数就可实现打补丁还原算法
QT平台下
新旧文件和补丁文件的存放位置为RAM中(通过文件系统的读写函数读到内存中),所以存放地址为内存的首地址
使用时只需调用 一个函数就可实现打补丁还原算法
- 使用时只需调用 一个函数就可实现打补丁还原算法
整包升级和差分升级的优缺点
需要源码的请添加微信deiois咨询
测试上位机软件
https://download.csdn.net/download/zhou74281/19550982
参考
https://blog.csdn.net/zDavid_2018/article/details/109490846
http://www.abupdate.com/index.php?catid=13
基于STM32单片机的差分升级(增量升级)算法相关推荐
- 基于STM32单片机的差分升级(增量升级)算法移植手册V.3 STM32+BSDiff+LZ77
基于STM32单片机的差分升级算法移植手册V.3 STM32+BSDiff+LZ77 更新时间:2022-03-10 版本V1.3 同步更新如下: 基于STM32单片机的差分升级(增量升级)算法V1. ...
- 单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码,纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 现有:69500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码
单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- 单片机 stm32 差分升级 增量升级算法源码
单片机 stm32 差分升级 增量升级算法源码,提供移植 纯c编写跨平因为是程序源码 IAP升级 OTA升级 物联网 车联网 适用 YID:83500653978935134Deflag
- 差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用
差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用 介绍博客 https://blog.csdn.net/zhou74281/article/details/1177776 ...
- 基于stm32单片机的电子称设计
基于stm32单片机的电子称设计 **==完整论文和程序关注我获取==** 摘要 关键字 1 绪论 2 系统硬件方案设计 2.1系统总体设计方案比较与论证 2.2系统元器件选型及器件参数介绍 2.2. ...
- 基于STM32单片机的温度报警器Proteus仿真
1.基于STM32单片机的温度报警器(液晶1602) 功能描述: 由STM32F103单片机最小系统+DS18B20温度传感器+1602液晶显示模块+声光报警模块+独立按键组成. 视频演示链接: 1. ...
- delphi 数字识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
最新文章
- 对话框属性页(VC_MFC)
- debian下安装LNMP(三)
- 我用过的,我正在用的,比较高效、好用的命令
- 游戏框架设计的一些心得
- 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- html 权限模块设置,角色权限设置.html
- Mybatis和Hibernate区别
- 为了不把黑人兄弟认作大猩猩,谷歌的算法连真的大猩猩都不认识了
- 分治法求最大和最小值
- 我们来做做公募基金数量的“人口”大普查
- dubbo内核简介(附部分源码解读)
- linux系统安装文网卫士,360主机卫士 linux版的安装/使用/卸载 方法
- STM32学习笔记(11)电容触摸按键
- 光纤熔接机日常使用说明
- linux查看cpu核数命令,centos查看CPU以及核数命令
- .resource文件如何打开
- 音频降噪算法 附完整C代码
- 二维码如何制作?快速制作二维码的教程在这里
- 字符串最长对称 java_求字符串最长对称字符串的长度(转何海涛博客)
- 易语言对接第三方验证码短信接口demo
热门文章
- 我的世界服务器控制台发消息,我的世界控制台指令大全 使用起来超方便
- 助力创业者成就未来,亚马逊云科技优势何在?
- Trustonic,Rubean和CCV宣布合作开发mPOS(移动销售终端)解决方案以实现商用设备上的密码安全输入
- 知识图谱neo4j入门之魔兽世界人物可视化
- http://jingyan.baidu.com/album/03b2f78c4cc0ad5ea337ae7d.html
- python编程锦囊pdf百度云_python编程锦囊 相关实例(示例源码)下载 - 好例子网
- C语言安卓FTP服务器,FTP服务器客户端源代码C语言
- 2022保密教育线上培训考试 05
- Python【每日一问】23
- jQuery仿微博手机聊天样式代码