嵌入式目标板程序的压缩(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,在上电时才解压,达到节省存储空间的目的,不过这有点复杂,暂时没有思路,留待以后研究了。
首先,还是按部就班,不急着把代码马上添加到我现在的嵌入式目标板程序的工程里,先新建一个CCS工程,毕竟编译器换了,环境变了,还是得简单测试一下。
由于目标板上只需要实现解压缩,在原来SDK的Lib里只需要LzmaDec.c一个模块,加上必要的头文件,其实代码并不多。移植到CCS时,因为我是不用动态分配的,所以简单地改了下alloc相关的函数,把动态分配改为静态数组,当然这里数组大小要注意。我偷懒,压缩参数都是固定死了,所以这些数组都设了个够用的定值。
测试的源码:(CSDN 下载)
确认功能正常无误之后,接着就可以把Types.h,LzmaDec.h和LzmaDec.c这几个文件放入工程里,修改一下原来串口升级的流程,增加一个接收压缩程序并解压到功能,便大功告成了。
试了一下成果,原来要1分多钟的升级时间,现在缩短到不到30秒,颇有成就感。
当然,还有许多可以改进的地方,例如参数改成可以变化的,就更通用了。更进一步的,是可以考虑就把压缩的程序保存在flash,在上电时才解压,达到节省存储空间的目的,不过这有点复杂,暂时没有思路,留待以后研究了。
相关文章推荐
- 实现"通过串口升级嵌入式目标板软件"功能的一些心得体会
- 嵌入式目标板程序的压缩(1)--学习使用LZMA SDK
- Delphi程序的自动升级功能的实现(AutoUpdate使用指南)
- [导入]Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- 实现: 在线签名, C#实现压缩/解压功能,线程
- 转载:Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- ASP 程序实现自动升级功能
- Asp.net 2.0 C#实现压缩/解压功能
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Python(15)python使用tkinter实现一个简单的压缩/解压程序
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- 现场升级方案:LPC1778采用U盘方式进行程序IAP升级功能的实现
- 使用libjpeg-turbo库中的TurboJPEG API实现图片解压,缩放及压缩功能
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- ASP 程序实现自动升级功能