为方便技术交流探讨,特建一个QQ群:47954837 ,欢迎加入!
参考文章:https://blog.csdn.net/duzhi2004/article/details/103560574
很久没有更新博文了,本文接上篇关于单片机差分升级的内容。
很多开发者在读上篇文章的时候,对这个差分技术比较感兴趣,也有很多人跟我一起做交流探讨,结合开发者问到的问题,我大概说一下
在单片机上实现差分升级的前置条件。
flash区块划分需求: 如下图所示,一款flash空间为256KB的芯片,flash的划分,boot一般 4K-6K, app1是应用程序的运行空间,app2应用存储空间,patch压缩包预留空间(一般为应用的1/3 - 1/2),
当然如果你有其他的存储空间,app2 & patch可以放到相应的存储空间,不受上述规定的制约, 做差分升级对 flash的要求比普通升级要大,如果这块资源不够肯定是没办法做的。
flash区块划分(256KB)
对内存的需求: 内存主要是跟压缩算法有关系,文章中采用的lz77解压缩,对内存要求偏高,此种算法必须要求单片机提供10KB左右的空间,
有些单片机的内存资源还没办法达到,针对这一块需求,我最近正在改进压缩算法,新的解压算法预计可以做到对内存的需求控制在 1KB之内,
这样覆盖的芯片范围可以做到很广。(压缩率和解压速度也有望得到提高)
关于压缩算法放在boot还是app的优缺点比较:
| Boot | App |
程序空间 | 算法大小*1 | 算法大小*2+ |
内存空间 | 可独占,不影响应用内存空间 | 应用空间需要划分预留 |
算法维护 | 不可更新(没有二级boot前提) | 可更新 |
开发便捷 | 固化在boot,应用开发无需关心解压过程,只要做相应的下载既可 | 应用需要关心整个下载,解压合并流程,不利于核心算法的维护管理 |
|
|
|