打印
[其他ST产品]

rtt的环形缓冲区读完就丢弃了?

[复制链接]
231|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2023-4-24 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大家,有这样的需求:

1、mcu ram缓冲区大小固定,每隔一段时间采集一个数据放到缓冲区,缓冲区满了覆盖写入,每个数据会对应一个编号;
2、可以通过编号判断是否在缓冲区有数据,并可以快速定位读出来;

rtt的环形缓冲区读完就丢弃了,而且是不能读取任意的位置,现在想到的方法就是: 搞一个数组当缓冲区,不断增加数据,记住缓冲区头和尾部对应的序号,满了就全部往前移动,但这种方法在缓冲区很大, 满了就得全部移动,这样的效率会不会太低?是否有其他思路实现?

使用特权

评论回复
沙发
未说出口的像你| | 2023-5-21 22:29 | 只看该作者
一般采用循环缓存的方式来解决

使用特权

评论回复
板凳
她已醉| | 2023-5-22 03:13 | 只看该作者
你提到的环形缓冲区,因此如果要增加缓存的大小,只能通过扩大缓存的数据存储空间

使用特权

评论回复
地板
将爱藏于深海| | 2023-5-22 05:27 | 只看该作者
使用双缓冲区更有效

使用特权

评论回复
5
风凉| | 2023-5-22 07:13 | 只看该作者
如果要处理的数据量非常大单纯增加缓存大小并不是最好使的办法

使用特权

评论回复
6
西洲| | 2023-5-22 09:22 | 只看该作者
循环缓冲区就行,效率高

使用特权

评论回复
7
故意相遇| | 2023-5-22 11:23 | 只看该作者
while循环来不断读取数据

使用特权

评论回复
8
白马过平川| | 2023-5-22 13:12 | 只看该作者
写数据可以用一个else语句来判断是否需要扩展缓冲区

使用特权

评论回复
9
捧一束彼岸花| | 2023-5-22 16:21 | 只看该作者
可以考虑使用动态内存分配和循环缓冲区两种技术

使用特权

评论回复
10
温室雏菊| | 2023-5-22 18:19 | 只看该作者
需要注意根据具体的应用场景进行调整和优化操作

使用特权

评论回复
11
春日负喧| | 2023-5-22 21:17 | 只看该作者
需要考虑数据的编号方式和读写的顺序,以保证数据的正确性和一致性

使用特权

评论回复
12
Jacquetry| | 2023-5-25 23:24 | 只看该作者
试一下内存管理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

970

主题

2982

帖子

7

粉丝