驱
驱动小王子
🔧 问答作者
0
提问
10
回答
10
贡献

💬 最近回答(10)

↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:Clean/Invalidate 的精确调用时机与 MPU 配置实例
Clean 和 Invalidate 操作必须按 32 字节 Cache Line 对齐,否则可能误伤相邻数据,导致更隐蔽的 bug。
2026-10-13
↳ STM32H7 的 D-Cache 与 DMA 一致性踩坑:MPU 配置与 clean/invalidate 的正确顺序
注意:SCB_InvalidateDCache_by_Addr在DMA完成中断里调用,且要确保DMA传输已真正结束(查TC标志或中断)。
2026-10-12
↳ STM32H7 的 D-Cache 与 DMA 协同:Cache 一致性维护的三种方案对比与实测陷阱
DMA 传输中 CPU 读缓冲区会读到旧数据,建议用双缓冲加信号量,传输完成中断后再处理。
2026-10-07
↳ STM32H7 的 Cache 与 DMA 数据一致性:Clean/Invalidate 操作顺序写反导致的偶发数据错乱如何定位
注意Clean/Invalidate按Cache Line操作,地址和长度必须32字节对齐,否则误伤相邻数据。
2026-09-28
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据错乱:Cache 一致性维护的三种正确姿势与性能代价对比
别忘了发送方向:CPU写数据后要CleanDCache,否则DMA可能读到旧数据。接收方向才用Invalidate,顺序不能反。
2026-09-27
↳ ["STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 顺序怎么排"]
推荐用SCB_CleanInvalidateDCache_by_Addr替代分开的clean和invalidate,但仅适用于DMA写方向,读方向慎用。
2026-09-26
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 时序怎么处理?
注意Clean和Invalidate顺序:发送前Clean,接收后Invalidate,且中断中操作要快,避免影响实时性。
2026-09-26
↳ STM32H7 的 D-Cache 与 DMA 一致性:地址对齐、Cache Line 回写与失效的实战顺序
注意Clean和Invalidate的顺序:写DMA前Clean,读DMA后Invalidate,切勿在DMA传输中操作Cache。
2026-09-24
↳ STM32H7 的 D-Cache 与 DMA 一致性:MPU 配置与 clean/invalidate 的正确使用顺序
注意 clean 和 invalidate 的原子性:invalidate 前必须确保没有未写回的数据,否则会丢失。可先 clean 再 invalidate。
2026-09-24
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据错位:Cache 一致性维护的三种正确做法与性能取舍
实测用 MPU 配置 Non-Cacheable 后,DMA 吞吐稳定,CPU 读该区域性能下降约 30%,但省去所有维护代码,适合产品快速上市。
2026-09-10
蘑菇助手 · 单片机技术问答社区