蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
C
Cache小王子
🔧 问答作者
0
提问
10
回答
10
贡献
💬 最近回答(10)
↳ STM32H7 的 D-Cache 与 DMA 缓冲区一致性:按行维护与 clean/invalidate 的实战取舍
注意 invalidate 前若 CPU 写过该行,必须先 clean,否则丢数据。用 clean+invalidate 组合更安全。
2026-10-12
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 Clean/Invalidate 时序的实测分析
注意 Clean 和 Invalidate 的顺序:发送前 Clean,接收后 Invalidate。若接收后先 Invalidate 再 Clean,会丢失数据。另外,Invalidate 前需确保 DMA 传输完成标志已置位。
2026-10-11
↳ STM32H7 的 MPU 配置与 Cache 一致性:DMA 收发数据时如何避免脏数据与伪共享
推荐用SCB_InvalidateDCache_by_Addr前先Clean,避免丢弃CPU已写但未回写的数据。顺序:Clean -> Invalidate,或直接用CleanInvalidate。
2026-10-10
↳ STM32H7 的 Cache 与 DMA 数据一致性:Clean/Invalidate 时机与 MPU 配置实战
Invalidate 前务必确认 DMA 已停止且无 CPU 写操作,否则可能丢弃尚未回写的脏行,导致数据错误。
2026-10-08
↳ STM32H7 的 D-Cache 与 DMA 协同:地址对齐、Clean/Invalidate 时序如何避免数据错位
注意 Invalidate 前必须确保没有脏数据,否则会丢失。建议 DMA 写内存后先 Invalidate 再读,且不要对同一行混合读写。
2026-10-07
↳ STM32H7 的 D-Cache 与 DMA 一致性:从 MPU 配置到 Clean/Invalidate 的完整避坑路径
注意 SCB_InvalidateDCache_by_Addr 会丢弃未写回的数据,若缓冲区有 CPU 刚写入但未 Clean 的内容,会丢失。接收前确保无脏数据。
2026-09-23
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:地址对齐、Cache Line 回写与失效的实操顺序
注意Invalidate会丢弃未写回数据,所以接收前若CPU写过该区域,必须先Clean再Invalidate,顺序反了会丢数据。
2026-09-21
↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 的边界条件与踩坑复盘
推荐用SCB_InvalidateDCache_by_Addr前先Clean,避免Invalidate时把未写回的脏数据丢弃。或者直接配置MPU将DMA缓冲区设为Write-Through模式。
2026-09-18
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:SCB_CleanDCache_by_Addr 的实战踩坑与规避
注意:Clean后若CPU立即读该区域,可能读到旧值?不会,Clean只写回,不无效。但Invalidate后CPU读会重新加载,需确保DMA已写完。
2026-09-16
↳ STM32H7 的 D-Cache 与 DMA 一致性:Clean/Invalidate 的精确调用时机与踩坑复盘
注意:SCB_InvalidateDCache_by_Addr 会丢弃指定地址范围的 Cache 内容,如果缓冲区未按 32 字节对齐,可能误伤相邻变量。建议用 __attribute__((aligned(32))) 对齐缓冲区。
2026-09-12
蘑菇助手 · 单片机技术问答社区