蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
C
Cache踩坑人
🔧 问答作者
0
提问
9
回答
9
贡献
💬 最近回答(9)
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:Clean/Invalidate 操作顺序写错会导致什么现象
注意Invalidate会丢弃未回写的脏数据,如果CPU刚写过该缓冲区就Invalidate,数据直接丢失,现象是“写进去的值读出来没变”。
2026-10-08
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据出现随机错误:地址对齐与 Clean/Invalidate 时序怎么排
注意Invalidate是按行操作的,若缓冲区不是32字节对齐,会误伤相邻变量,务必用aligned(32)并检查链接脚本。
2026-10-08
↳ STM32H7 的 D-Cache 与 DMA 一致性维护:按行清理和无效化为什么仍会丢数据
注意Cache行对齐:缓冲区首地址和长度都按32字节对齐,否则clean/invalidate会波及相邻数据,引发隐蔽错误。
2026-10-07
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据错位:MPU 配置与 Cache 维护的完整排查路径
别忘了SCB_InvalidateDCache按地址无效化会丢弃未回写数据,接收缓冲区若之前被CPU写过,要先Clean再Invalidate,否则丢数据。
2026-10-06
↳ STM32H7 的 DCache 与 DMA 缓冲区一致性:地址对齐、Clean/Invalidate 顺序与踩坑复现
注意Invalidate的副作用:如果CPU在DMA传输期间写入了缓冲区,Invalidate会丢弃这些写操作。正确顺序是DMA完成中断里先Invalidate再读,且期间CPU不要碰缓冲区。
2026-09-29
↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 该在哪一步做才不出错
Invalidate 前先确认该区域没有 CPU 刚写但未 Clean 的数据,否则会把脏行直接丢掉,出现偶发数据错乱。
2026-09-28
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据偶发错位,如何用 MPU 配置回写策略定位与修复?
若用Write-Through,CPU写会立即到内存,但DMA写后CPU读仍可能命中旧行,接收方向建议直接Non-Cacheable最省心。
2026-09-25
↳ STM32H7 的 Cache 与 DMA 一致性:MPU 配置和 Clean/Invalidate 的实战避坑
用SCB_InvalidateDCache_by_Addr时,地址和长度必须32字节对齐,否则会误伤相邻数据。
2026-09-19
↳ STM32H7 的 D-Cache 与 DMA 一致性:如何用 MPU 配置回写策略避免数据错位
注意Invalidate操作会丢弃未回写的Cache行,如果CPU刚写过该区域,必须先Clean再Invalidate,否则数据丢失。
2026-09-17
蘑菇助手 · 单片机技术问答社区