[转载] 乒乓缓冲区(Ping-Pong Buffers)
转载自 Embedded.fm 博客:当一个慢速外设(如 SPI 上的高精度 ADC)持续滴入数据、要攒够 N 个样本才能跑算法时,单缓冲会在「DMA 完成」与「下一个样本到来」之间发生冲突。乒乓缓冲区(ping-pong buffer)用两块大小为 N 的内存轮流承担「被 DMA 写入」与「被 CPU 处理」两个角色,从而在没有拷贝开销的情况下让数据采集与算法处理解耦——它本质上就是一个只有 2 个元素的循环缓冲区。
转载自 Embedded.fm 博客:当一个慢速外设(如 SPI 上的高精度 ADC)持续滴入数据、要攒够 N 个样本才能跑算法时,单缓冲会在「DMA 完成」与「下一个样本到来」之间发生冲突。乒乓缓冲区(ping-pong buffer)用两块大小为 N 的内存轮流承担「被 DMA 写入」与「被 CPU 处理」两个角色,从而在没有拷贝开销的情况下让数据采集与算法处理解耦——它本质上就是一个只有 2 个元素的循环缓冲区。