嵌入式目标板程序的压缩(3)--实现目标板解压升级程序功能

 

了解了LZMA SDK的基本用法,接下来就是要 "移植解压部分到目标板程序,实现[上位机压缩程序]->[串口传输]->[目标板解压升级程序]的串口升级流程"

 

首先,还是按部就班,不急着把代码马上添加到我现在的嵌入式目标板程序的工程里,先新建一个CCS工程,毕竟编译器换了,环境变了,还是得简单测试一下。

由于目标板上只需要实现解压缩,在原来SDK的Lib里只需要LzmaDec.c一个模块,加上必要的头文件,其实代码并不多。移植到CCS时,因为我是不用动态分配的,所以简单地改了下alloc相关的函数,把动态分配改为静态数组,当然这里数组大小要注意。我偷懒,压缩参数都是固定死了,所以这些数组都设了个够用的定值。

 

测试的源码:(CSDN 下载)

 

确认功能正常无误之后,接着就可以把Types.h,LzmaDec.h和LzmaDec.c这几个文件放入工程里,修改一下原来串口升级的流程,增加一个接收压缩程序并解压到功能,便大功告成了。

 

试了一下成果,原来要1分多钟的升级时间,现在缩短到不到30秒,颇有成就感。

当然,还有许多可以改进的地方,例如参数改成可以变化的,就更通用了。更进一步的,是可以考虑就把压缩的程序保存在flash,在上电时才解压,达到节省存储空间的目的,不过这有点复杂,暂时没有思路,留待以后研究了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值