搜索
bottom↓
回复: 7

抛砖引玉,实测可用的STM32压缩算法miniLZO, keil工程

[复制链接]

出0入0汤圆

发表于 2023-12-30 10:57:10 | 显示全部楼层 |阅读模式


压缩 1024 bytes into 519 bytes, time = 363 us
解压 519 bytes back into 1024 bytes, time = 159 us

可用工程不记得是从哪里下载的了, 版权归作者所有:

疑问:大神移植,仅修改了一个宏定义, 不知何意,修改为官网代码,内存分配出错

官网代码是:
#define D_BITS          14

STM32移植代码:
#define D_BITS          11









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出1310入193汤圆

发表于 2023-12-30 14:28:15 | 显示全部楼层
minilzo编译后的库有多大?

配合使用另外一款软件
去比较一下数据是不是真的一致:
数据比较的工具“Beyond Compare”

出0入90汤圆

发表于 2023-12-30 14:38:54 | 显示全部楼层
5年前我就编译过这个,在stm32f4上面做的,有时候压缩效果很惊人,速度也挺快,内存的话肯定是越大越好。
不过这玩意压缩的东西,无法在电脑上面直接解压缩,后来就没用了。
而且,这个算法如果去和服务器通信,那些做java的,也无法使用

出615入1076汤圆

发表于 2023-12-30 15:16:02 | 显示全部楼层
本帖最后由 dukelec 于 2023-12-30 15:24 编辑

建议试试 lz4,也是实时压缩算法,我从 linux 内核里面 copy 出来的代码,解压只有 160 行代码,压缩有 500 行代码

https://github.com/dukelec/cdcam/tree/master/cam_fw/usr/lz4

这个算法验证过,和 linux 命令行的压缩命令 lz4 是一致的,可以相互压缩和解压

https://github.com/dukelec/cdcam/tree/master/cam_fw/usr/pga_fw

我是在 pga_fw 目录下,先用 lz4 命令,把一个 70K 的 bin 文件按 24K 拆分成多个文件,用 linux lz4 命令压缩后转成 c 语言数组

然后 stm32 上电的时候,用 lz4 c 程序依次把压缩后的数据解压,然后通过 spi 传输出去(写固件到 fpga 的 ram)

压缩后,70K 的固件不到 10K,大幅节省 stm32 的 flash 占用,否则还要外挂一个 flash 芯片存 fpga 固件

之所以要按照 24K 拆分,是因为不拆分的话,stm32 没那么大的 ram 存放解压后的数据,我又不想用流式解压、把简单事情复杂化

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2023-12-30 22:14:21 来自手机 | 显示全部楼层
这是好东西

出0入17汤圆

发表于 2024-1-13 13:51:39 | 显示全部楼层
dukelec 发表于 2023-12-30 15:16
建议试试 lz4,也是实时压缩算法,我从 linux 内核里面 copy 出来的代码,解压只有 160 行代码,压缩有 500 ...
(引用自4楼)

用链接里的代码(共4个文件),在winGW下编译,压缩前二进制文件大小:49296 byte,压缩后大小:41984 byte,压缩率不是很高啊,是改 lz4defs.h 文件哪个宏定义可以提高压缩率吗?

出615入1076汤圆

发表于 2024-1-13 17:36:50 来自手机 | 显示全部楼层
radar_12345 发表于 2024-1-13 13:51
用链接里的代码(共4个文件),在winGW下编译,压缩前二进制文件大小:49296 byte,压缩后大小:41984 by ...
(引用自6楼)

压缩率和文件内容有很大关系,文件里面重复的内容少,就压缩不了多少

先用 lz4 命令压缩看一下压缩比到多少

出0入0汤圆

发表于 2024-1-13 17:50:21 | 显示全部楼层
dukelec 发表于 2023-12-30 15:16
建议试试 lz4,也是实时压缩算法,我从 linux 内核里面 copy 出来的代码,解压只有 160 行代码,压缩有 500 ...
(引用自4楼)

好东西,试试
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 19:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表