查看: 1776|回复: 0

[原创] 【经验分享】mcu数据压缩

[复制链接]

该用户从未签到

655

主题

6311

帖子

0

超级版主

Rank: 8Rank: 8

积分
19924
最后登录
2024-4-19
发表于 2021-11-2 10:45:33 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-11-2 10:50 编辑

                                                                                     mcu数据压缩
数据压缩可以减少数据体积,如果应用在低速的通信系统,那么其实变相的提高了传输数据速度。SEGGER官网上有一个用于mcu的解压缩库emCompress-ToGo,今天我们来移植这个库到frdm-k64。这个库,据官网所说,对于ram没有要求。相比于其他的压缩库比如说minilzo,它对于ram有较高的要求,minilzo需要大概60k的ram。如果再运行minilzo,同时运行一些其他的协议栈,ram根本不够用
compress.PNG
1 首先我们用mcuxpresso导出一个frdm-k64的hello_world工程。然后到这个链接下载emCompress
https://www.segger.com/downloads ... s-ToGo_Trial_ES.zip
2 我们要开始移植,我图方便就都放在了source文件夹下,在mcuxpresso下添加新文件夹,再添加各种路径还是相当繁琐的
file.PNG
3 那两个.a的库文件提供了我们解压缩的函数接口,我们要做一些配置把库加入到工程里,下面是库的路径,上面是库的名字,库的名字,是我们库文件名字去掉开头三个字母lib,然后去掉扩展名,剩下的字符就是名字
lib.PNG
4 我们下载的emCompress-ToGo_Trial_ES\Application文件夹里,有一些例程,我们可以使用他做基本测试。当我们完成后编译,可能会出现
一个错误VFP register arguments
erroe.PNG
5 这是由于压缩库和我们代码使用的浮点类型不一致导致的,解决方法如下,修改浮点类型为--软浮点
vfpx.png
6 这样就应该能正常编译了,我做了这样测试,把这个工程的bin文件,生成为数组,然后将这数据压缩。
bin文件生成数组,可以用segger提供的bin2C程序,可以在segger官网下载
bin2c.PNG
7 然后写个测试代码,一方面压缩后显示压缩大小和压缩率,然后解压看数据是否和原来的匹配。
code.PNG
8 结果,我们可以看到,13k的代码,压缩到8k左右,压缩率有60%,还是很不错的,附件是代码
res.PNG

frdmk64f_hello_world_segger_compress.zip

584.57 KB, 下载次数: 4, 下载积分: 威望 1

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-19 11:14 , Processed in 0.117920 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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