您的位置:首页 > 其它

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

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

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

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

测试的源码:(CSDN 下载)

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

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

当然,还有许多可以改进的地方,例如参数改成可以变化的,就更通用了。更进一步的,是可以考虑就把压缩的程序保存在flash,在上电时才解压,达到节省存储空间的目的,不过这有点复杂,暂时没有思路,留待以后研究了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: