0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实战 | 睿擎平台 zlib: 嵌入式数据压缩方案,从移植到应用一文打通

RT-Thread官方账号 2026-05-20 18:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发中,存储空间和网络带宽一直是稀缺资源:数据库文件太大存不下、传感器数据量大传不动、固件升级包占用过多 Flash......传统方案要么忍着不上压缩,要么引入复杂的自研压缩逻辑,踩坑多、维护难。

今天分享一个基于睿擎派 RC3506 的完整 zlib 方案——从源码移植到应用实战,提供两种压缩方式,手把手带你搞定嵌入式数据压缩。

为什么选 zlib?

zlib 是全世界部署最广泛的压缩库引擎:

纯 C 实现:无操作系统依赖,无第三方库依赖,天然适合嵌入式移植

体积极小:核心源码约 200KB(可裁剪),RAM 占用可控

算法成熟:deflate 算法经过 30 年工业级优化,兼顾压缩率与速度

标准兼容:gzip 格式与 PC 端 gunzip、7-zip、WinRAR 完全兼容

授权友好:zlib License,商用免费,无需开源你的应用

Linux 内核、Git 仓库、PNG 图片到 HTTP 传输,zlib 几乎无处不在。对于 RT-Thread 嵌入式平台,它同样是数据压缩的首选方案。


架构总览

整个 zlib for RT-Thread 方案分三层,提供两种压缩方式

ca549c80-5436-11f1-ab55-92fbcf53809c.png

核心移植工作集中在源码裁剪与编译适配,应用层直接调用 zlib 原始 API,无需中间封装层。


两种压缩方式对比

cadf5be0-5436-11f1-ab55-92fbcf53809c.png

选哪个? 如果压缩后的数据只在嵌入式设备之间传递(如通过串口、网络、SPI Flash),用方式一;如果压缩后的文件需要拷贝到 PC 上解压,用方式二。


实战示例:文件压缩测试

解压缩代码

压缩文件的核心代码

#方式一:compress压缩
comp_len = compressBound(file_size);
ret = compress2((Bytef *)compressed, &comp_len,
(const Bytef *)buf, file_size, level);
write(fd_dst, &file_size, 4);#写4 字节头
write(fd_dst, compressed, comp_len);#写压缩数据

#方式二:gzip 压缩
gz_out = gzopen(dst_path, "wb");
gzsetparams(gz_out, level, Z_DEFAULT_STRATEGY);
gzwrite(gz_out, buf, file_size);
gzclose(gz_out);

解压文件的核心代码

#方式一:uncompress解压
ret = uncompress((Bytef *)decompressed, &out_len,
(const Bytef *)compressed, comp_size);

#方式二:gzip 文件解压
gz_in = gzopen(src_path, "rb");
while ((bytes_read = gzread(gz_in, buf, sizeof(buf))) > 0){
write(fd_dst, buf, bytes_read);
}
gzclose(gz_in);

Shell 命令调试

采用示例工程 12_data_parsers_sqlite,对已经实现的完整的学生成绩数据库进行压缩。

msh />create_student_tbl #建库建表
msh /data>stu add 1000 #随机插入1000条学生的信息
msh /data>stu #查询全部
test get all students
id:1 name:Student63682 score:36
id:2 name:Student63683 score:37
id:3 name:Student63685 score:39
id:4 name:Student63688 score:42
...
record(s):1000

msh /data>gz_cmd file /data/stu_info.db /data/stu_info.gz#文件压缩
Read /data/stu_info.db: 36864 bytes
CRC32 of original: 0x1127fd36
Written /data/stu_info.gz: 8921 bytes (gzip format)
Compression: 36864 -> 8921 bytes, saved 75.8%
Compress OK, level=default(6)
This file can be decompressed with: gunzip /data/stu_info.gz

msh />zlib_cmd compress /data/stu_info.db /data/stu_info.a
#文件压缩
Read /data/stu_info.db: 36864 bytes
Written /data/stu_info.a: 8909 + 4(header) = 8913 bytes
Compression: 36864 -> 8909 bytes, saved 75.8%
Adler32: 0xce833860
Compress OK, level=default(6)

msh /data>ls
Directory /data:
stu_info.a 8913
stu_info.gz 8921
stu_info.db 36864

msh /data>gz_cmd unfile /data/stu_info.gz /data/stu_info_gz.db#文件解压
CRC32 of decompressed: 0x1127fd36
Read /data/stu_info.gz (gzip format)
Written /data/stu_info_gz.db: 36864 bytes

msh />zlib_cmd decompress /data/stu_info.a /data/stu_info_z.db#文件解压
Read /data/stu_info.a: 8913 bytes (raw_size: 36864)
Written /data/stu_info_z.db: 36864 bytes
Adler32: 0xce833860
Decompress OK

msh /data>ls#查询文件是否存在
Directory /data:
stu_info_z.db 36864
stu_info_gz.db 36864
stu_info.a 8913
stu_info.gz 8921
stu_info.db 36864

压缩率实测

以 SQLite 学生数据库文件(36864bytes)为例:

caf76f0a-5436-11f1-ab55-92fbcf53809c.png


总结

zlib 为嵌入式设备提供了工业级的数据压缩能力,纯 C 实现、零依赖、许可证友好。本方案提供两种方式,覆盖嵌入式开发中的常见压缩需求。

关键要点回顾

纯算法库,移植零门槛:不需要任何操作系统适配

两种方式,按需选择:设备内部传输用compress压缩,PC 互传采用gz压缩

直接调用 zlib 原始 API:无需中间封装层,且均原生线程安全

压缩率实测:SQLite 数据库文件压缩后节省约75%

如果 zlib 移植还不够过瘾,我们将在直播中完整演示从源码获取到编译运行的全过程,并结合 SQLite 做落地实战。


直播预告|睿擎派实战:zlib 压缩库移植与嵌入式应用

本期是「开源软件包移植适配专题」第2期,聚焦 zlib 压缩库,手把手带你在睿擎派 RC3506 上完成移植,并与 SQLite 数据库结合,实现数据压缩落地。

直播核心内容:

zlib 原理与源码架构解析

源码获取、配置编译、完整移植流程

压缩/解压功能验证

结合 SQLite 数据库文件实测压缩率

直播时间:2026年5月27日(周三)20:00

参与方式:

点击预约,获取直播提醒

睿擎平台持续迭代,更多开源软件包移植适配,敬请期待。


配套资料包

想在自己的项目里复现 zlib 移植?我们整理了完整资料包,助你快速上手:

zlib 移植源码包(含编译脚本、交叉编译配置)

示例工程(RuiChing Studio 可直接导入)

扫码下方二维码,填写简单表单(1分钟),资料包将发送至邮箱。


想了解更多,欢迎联系我们

cb1eaa84-5436-11f1-ab55-92fbcf53809c.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2578

    文章

    55792

    浏览量

    795148
  • 嵌入式
    +关注

    关注

    5212

    文章

    20756

    浏览量

    338497
  • 存储
    +关注

    关注

    13

    文章

    4934

    浏览量

    90378
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实战 | 平台SQLite:嵌入式设备上的数据持久化方案移植应用打通

    嵌入式开发中,数据存储直是个刚需:设备参数配置、传感器历史数据、运行日志记录……传统方案要么用文件系统裸奔,解析麻烦;要么上SQLite
    的头像 发表于 04-29 19:22 8055次阅读
    <b class='flag-5'>实战</b> | <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b>SQLite:<b class='flag-5'>嵌入式</b>设备上的<b class='flag-5'>数据</b>持久化<b class='flag-5'>方案</b>,<b class='flag-5'>从</b><b class='flag-5'>移植</b><b class='flag-5'>到</b>应用<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>打通</b>

    直播预告 | 开源软件包移植适配专题(第1期):SQLite 入门精通

    嵌入式数据库在资源受限设备上跑不动?交叉编译SQLite总是缺依赖、配置难?想在AMP双系统下统一数据存储方案
    的头像 发表于 04-24 18:05 533次阅读
    直播预告 | 开源软件包<b class='flag-5'>移植</b>适配专题(第1期):SQLite <b class='flag-5'>从</b>入门<b class='flag-5'>到</b>精通

    直播预告 | 派 3562 NullClaw 系统开发实战:把 AI 助手塞进工业开发板

    想在嵌入式Linux上跑个本地AI助手,却不知道哪下手?NullClaw——678KB的二进制,~1MB内存,启动时间不到2ms,专为资源受限设备打造。4月1日(周三)晚8点,我们带你从零开始
    的头像 发表于 03-30 18:23 368次阅读
    直播预告 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b>派 3562 NullClaw 系统开发<b class='flag-5'>实战</b>:把 AI 助手塞进工业开发板

    派3562快速上手体验

    1引言随着物联网和工业自动化的快速发展,嵌入式开发板的需求日益增长。派3562作为款基于瑞芯微RK3562处理器的高性能开发板,凭借其强大的处理能力和丰富的外设接口,成为了
    的头像 发表于 03-04 21:19 7674次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>派3562快速上手体验

    明晚:物联网实战传感器采集MQTT上云全流程解析|问学直播

    传感器采集云端通信,次直播打通物联网全链路开发!在物联网应用开发中,传感器数据采集不稳定、外设配置复杂、云端通信不可靠等问题常常困扰着
    的头像 发表于 11-25 18:31 618次阅读
    明晚:<b class='flag-5'>睿</b><b class='flag-5'>擎</b>物联网<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>传感器采集<b class='flag-5'>到</b>MQTT上云全流程解析|问学直播

    【直播预告】下周三晚8点|物联网实战传感器采集MQTT上云全流程解析

    传感器采集云端通信,次直播打通物联网全链路开发!在物联网应用开发中,传感器数据采集不稳定、外设配置复杂、云端通信不可靠等问题常常困扰着
    的头像 发表于 11-21 17:07 2260次阅读
    【直播预告】下周三晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b>物联网<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>传感器采集<b class='flag-5'>到</b>MQTT上云全流程解析

    明晚8点|文件系统实战开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、系统发布困难
    的头像 发表于 11-11 11:53 866次阅读
    明晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b>文件系统<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>开发到发布全流程解析

    【直播预告】下周三晚8点|文件系统实战开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、系统发布困难
    的头像 发表于 11-06 18:05 2103次阅读
    【直播预告】下周三晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b>文件系统<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>开发到发布全流程解析

    派文件系统指南:开发到发布全流程实践 | 技术解析

    嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。平台提供了
    的头像 发表于 11-05 18:13 8392次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>派文件系统指南:<b class='flag-5'>从</b>开发到发布全流程实践 | 技术解析

    【直播预告】10月29日 周三 晚8点 |网络开发实战配置应用,掌握工业级网络开发精髓!| 直播预告

    ,我们特别推出本期深度实战直播,由平台核心研发工程师手把手带你攻克网络开发难关!直播预告▎直播主题
    的头像 发表于 10-28 17:19 1347次阅读
    【直播预告】10月29日 周三 晚8点 |<b class='flag-5'>睿</b><b class='flag-5'>擎</b>网络开发<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>配置<b class='flag-5'>到</b>应用,掌握工业级网络开发精髓!| 直播预告

    【直播预告】周三晚8点|网络开发实战配置应用,掌握工业级网络开发精髓!| 直播预告

    ,我们特别推出本期深度实战直播,由平台核心研发工程师手把手带你攻克网络开发难关!直播预告▎直播主题
    的头像 发表于 10-25 10:05 1046次阅读
    【直播预告】周三晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b>网络开发<b class='flag-5'>实战</b>:<b class='flag-5'>从</b>配置<b class='flag-5'>到</b>应用,掌握工业级网络开发精髓!| 直播预告

    平台网络开发指南:IP配置远程控制 | 技术解析

    在工业物联网和嵌入式系统开发中,网络功能是连接设备、实现远程控制和数据传输的核心基础。工业开发平台提供了全面的网络开发支持,包括灵活的I
    的头像 发表于 10-22 17:13 6676次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b>网络开发指南:<b class='flag-5'>从</b>IP配置<b class='flag-5'>到</b>远程控制 | 技术解析

    【直播预告】10月14日 本周二晚8点|平台首场实战直播:从快速上手到实现远程监控网关

    研发工程师郭占鑫将用场纯实战直播,带你从零开始,步步完成个工业级远程监控网关的开发!▎直播主题
    的头像 发表于 10-13 16:29 1110次阅读
    【直播预告】10月14日 本周二晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b>首场<b class='flag-5'>实战</b>直播:从快速上手到实现远程监控网关

    【直播预告】10月14日晚8点|平台首场实战直播:从快速上手到实现远程监控网关

    研发工程师郭占鑫将用场纯实战直播,带你从零开始,步步完成个工业级远程监控网关的开发!▎直播主题
    的头像 发表于 10-09 14:46 775次阅读
    【直播预告】10月14日晚8点|<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b>首场<b class='flag-5'>实战</b>直播:从快速上手到实现远程监控网关

    【深圳站圆满收官】开发者线下实战工业平台Workshop精彩回顾!|新闻速递

    9月18日,工业平台深度实战Workshop深圳站圆满收官!本次Workshop延续了上海站的技术深度与实战精神,吸引了华南地区数十家企
    的头像 发表于 09-23 20:19 955次阅读
    【深圳站圆满收官】开发者线下<b class='flag-5'>实战</b>,<b class='flag-5'>睿</b><b class='flag-5'>擎</b>工业<b class='flag-5'>平台</b>Workshop精彩回顾!|新闻速递