硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2506|回复: 6
收起左侧

[有问必答] 数据量很大情况下数据打包

[复制链接]

6

主题

18

回帖

36

积分

新手上路

积分
36
发表于 2019-2-20 12:16:51 | 显示全部楼层 |阅读模式
实际中遇到:使用stm32 + LWIP,通过UDP协议和上位机通信,有几千个字节的应用数据需要打包上传给上位机,常规方式是:申请一个大的数组,将数据存储到数组中,数组大小比要上传的数据量大,通过UDP分包传输,但是申请一个大数组这样很耗费内存,还没有其他方法?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2019-2-20 12:21:50 | 显示全部楼层
动态内存管理,此贴移植下即可:

【STM32H743实验例程】实验8:STM32H743动态内存管理,同时分区管理AXI RAM,DTCM,SRAM1等五块空间
http://www.armbbs.cn/forum.php?m ... 6087&fromuid=58
(出处: 安富莱电子论坛)
回复

使用道具 举报

6

主题

18

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2019-2-20 14:11:08 | 显示全部楼层
本帖最后由 wyang 于 2019-2-20 14:23 编辑
eric2013 发表于 2019-2-20 12:21
动态内存管理,此贴移植下即可:

【STM32H743实验例程】实验8:STM32H743动态内存管理,同时分区管理AXI ...

这种方式 本质上和用数组是一样的吧?用的数组是全局变量;用动态内存,也要先申请一个较大的空间;有没有一种比较省空间的做法?
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-2-20 14:21:59 | 显示全部楼层
如果难度只是使用了大内存,那不分段传送啊?每次传几十个字节不行?
回复

使用道具 举报

6

主题

18

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2019-2-20 14:26:44 | 显示全部楼层
本帖最后由 wyang 于 2019-2-20 14:35 编辑
ghslfgkkl88 发表于 2019-2-20 14:21
如果难度只是使用了大内存,那不分段传送啊?每次传几十个字节不行?

用UDP传几千字节,假设2K,也是要分包。有没有一种比较省空间的做法?每次传几十个字节确实可以,但是这种方式应用场景有限,想看看有没有一种通用的方式
我来说说我应用方式:有大约2K~3K字节的数据需要传给上位机,上位机每隔300ms寻访一次,每次收到上位机寻访时返回数据,数据长度是动态的,每次都可能不一样

我目前的做法是:
定义了一个数组a,大约5K长度,每次将数据读取到数组a中,然后用UDP分包上传 规定UDP上传一包的包含的数据是1440字节

我用的是数组,但是我想的是这种方式不好:1:我将数据打包到数组中时 需要时刻判断有没有超过数组的容量 2:如果应用改变,由于上传的字节数是动态变化的,如果超过了定义的数组大小怎么办?我只能定义足够大的数组
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2019-2-20 14:39:35 | 显示全部楼层
wyang 发表于 2019-2-20 14:11
这种方式 本质上和用数组是一样的吧?用的数组是全局变量;用动态内存,也要先申请一个较大的空间;有没 ...

动态内存的特点是申请完不用了,还可以释放,这就是动态内存的优势。
回复

使用道具 举报

6

主题

18

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2019-2-20 15:39:21 | 显示全部楼层
eric2013 发表于 2019-2-20 14:39
动态内存的特点是申请完不用了,还可以释放,这就是动态内存的优势。

我明白你的意思了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 01:23 , Processed in 0.248030 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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