嵌入式目标板程序的压缩(1)--学习使用LZMA SDK

本文介绍了如何利用LZMA SDK进行嵌入式目标板程序的压缩,通过C接口实现简单命令行压缩工具,并测试了压缩性能与解压正确性,以减少串口升级的时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

之前完成了串口升级到功能之后,觉得700多K一分多钟的传输时间应该还有优化空间。波特率最大就115200bps,而且有些特殊时候还要降到19200用,所以减少程序大小是个途径。一般要显著减少代码量比较困难,除非程序里面“废话”太多;而且做编译器优化实验观察,差异还不到10%。压缩自然是个好方法,某次打rar包仔细看了下,500多K的程序压到不到200k,看来效果比较明显。于是有了以下想法:

一。找一个公开的压缩算法,最好有良好的C接口

二。测试该算法的压缩性能,压缩比大概跟Winrar差不多,不多于1倍就好

三。移植解压部分到目标板程序,实现[上位机压缩程序]->[串口传输]->[目标板解压升级程序]的串口升级流程

 

首先是找一个公开的压缩算法:

LZW

http://zh.wikipedia.org/zh/LZW

LZMA

http://zh.wikipedia.org/wiki/LZMA

.....

然后不停地搜源码下源码,下了一堆。浏览了一下”战利品“,最后发现有个LZMA SDK的C实现比较合我胃口。用vs写了个console工程,就调用LzmaLib里面的LzmaCompress和LzmaUncompress接口,参数全部默认,实现了一个简单的命令行压缩工具。

 

这里小结下Lzma SDK的使用:

最顶层的接口是LzmaCompress和LzmaUncompress,位于LzmaLib.c中,声明如下:

//--------------------------------------------//

MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen,

  const unsigned char *src, size_t srcLen,
  unsigned char *outProps, size_t *outProps

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值