发布时间:2026/8/21 11:41:29
【嵌入式】STM32H743, D-cache, DMA注意事项 1. 问题STM32H743开启D-cache以后如果使用DMA会导致数据错乱。2. 原因DMA访问的是RAM, 实际的数据可能还在D-cache中没有与RAM同步。3. 解决方法3.1 使用前同步DMA发送前将cache中的数据写会RAMSCB_CleanDCache_by_Addr()DMA接收数据后cache获取RMA的数据SCB_InvalidateDCache_by_Addr()详情//用于将 D-Cache 数据回写到 SRAM 里面SCB_CleanDCache_by_Addr((uint32_t*)buf,len);//用于重新从 SRAM 获取数据, 丢弃 D-Cache 当前数据SCB_InvalidateDCache_by_Addr((uint32_t*)buf,len);//写回数据到 SRAM, 并重新获取 D-Cache数据SCB_CleanInvalidateDCache_by_Addr((uint32_t*)buf,len);3.2 MPU方式推荐通过MPU关闭一块SRAM的Cache功能例如以0x30000000为首地址的128KSRAM1为什么不用0x24000000(AXI SRAM)这一块因为这块ram的速度快关闭Cache太浪费。DMA使用到的内存需要定义到关闭Cache的内存范围内步骤1. 开启MPU并设置voidMPU_Config(void){MPU_Region_InitTypeDef MPU_InitStruct{0};/* Disables the MPU */HAL_MPU_Disable();/** Initializes and configures the Region and the memory to be protected */MPU_InitStruct.EnableMPU_REGION_ENABLE;MPU_InitStruct.NumberMPU_REGION_NUMBER0;MPU_InitStruct.BaseAddress0x30000000;MPU_InitStruct.SizeMPU_REGION_SIZE_128KB;MPU_InitStruct.SubRegionDisable0x0;MPU_InitStruct.TypeExtFieldMPU_TEX_LEVEL0;MPU_InitStruct.AccessPermissionMPU_REGION_FULL_ACCESS;MPU_InitStruct.DisableExecMPU_INSTRUCTION_ACCESS_ENABLE;MPU_InitStruct.IsShareableMPU_ACCESS_SHAREABLE;MPU_InitStruct.IsCacheableMPU_ACCESS_NOT_CACHEABLE;MPU_InitStruct.IsBufferableMPU_ACCESS_NOT_BUFFERABLE;HAL_MPU_ConfigRegion(MPU_InitStruct);/* Enables the MPU */HAL_MPU_Enable(MPU_HFNMI_PRIVDEF);}2. Keil工程设置Linker3 STM32H743_DMA.sct;STM32H743IITx;Flash2MB;AXISRAM(D1)512KB;SRAM1SRAM2SRAM3(D2)288KB LR_IROM10x080000000x00200000{ER_IROM10x080000000x00200000{*.o(RESET,First)*(InRoot$$Sections).ANY(RO)};普通RW/ZI变量 RW_RAM_D10x240000000x00080000{.ANY(RWZI)};DMA专用区域 RW_DMA0x300000000x00048000{*(.dma_buffer)}}4. 使用#define__DMA_RAM\__attribute__((section(.dma_buffer)))\__attribute__((aligned(32)))//注意这里buf需要是全局变量或static变量__DMA_RAMuint8_tbuf[512]{0};//buf在0x30000000 sram段//备注这里赋初值可能没作用。例如下面两行代码赋的初值不起效果__DMA_RAMuint8_tbuf[512]{123};static__DMA_RAMuint8_tbuf[512]{1,2,3};3.3 D-Cache 的透写模式缺点 会损失一些性能因为每次都要从从Cache写会数据。/** * brief 使能 STM32H7 的 L1-Cache, 同时开启 D cache 的强制透写 * param 无 * retval 无 */voidsys_cache_enable(void){SCB_EnableICache();/* 使能 I-Cache,函数在 core_cm7.h 里面定义 */SCB_EnableDCache();/* 使能 D-Cache,函数在 core_cm7.h 里面定义 */SCB-CACR|12;/* 强制 D-Cache 透写,如不开启透写,实际使用中可能遇到各种问题 */}

相关新闻

2026/8/21 11:41:29

基于Claude API与GitHub Actions构建AI自动化内容发布系统

1. 这篇文章真正要解决的问题 你是否想过,一个每天更新的、内容丰富的在线报纸,其背后可能没有编辑团队,甚至不需要人工干预?这听起来像是未来新闻业的幻想,但今天,一个名为“Dissecting the automation of…

2026/8/21 11:41:29

Havenlon | 杂谈:AI 时代,谁拥有让事情发生的权力?

过去二十年,软件安全最习惯问的问题是:谁有权限?谁能登录,谁能审批,谁能调用接口,谁能修改配置,谁能拿到管理员账号。整个权限体系因此越来越复杂,RBAC、ABAC、多因素认证、多签、审…

2026/8/21 11:36:24

Spring Boot+Vue在线考试系统全栈开发实战:从架构设计到部署上线

在线考试系统是高校、培训机构和企业内部考核的常见需求,一个功能完整、流程清晰、技术栈主流的系统是计算机相关专业毕业设计的优秀选题。它要求开发者不仅要掌握前后端分离的开发模式,还要处理复杂的业务逻辑,如用户角色管理、试卷生成、实…

2026/8/21 12:57:15

数学建模竞赛:卡车与无人机协同配送的优化模型与算法实践

1. 项目概述:当数学建模遇上无人机物流最近几年,但凡关注数学建模竞赛的朋友,应该都注意到了“无人机物流配送”这个题目的热度。从国赛、美赛到各种地区性赛事,它几乎成了出题老师的“心头好”。这不,2024年的五一数学…

2026/8/21 12:57:15

AMA Protocol副本集群(Replica)部署:REPLICAS与PSK配置完整指南

AMA Protocol副本集群(Replica)部署:REPLICAS与PSK配置完整指南 【免费下载链接】node 项目地址: https://gitcode.com/GitHub_Trending/node95/node AMA Protocol 副本集群(Replica)部署是保障验证节点高可用的关键技能,…

2026/8/21 12:57:15

RAG系统幻觉问题根源剖析与微调优化实战方案

为什么你的RAG系统总在“胡说八道”?答案可能不在Prompt,也不在向量模型,而在于你从一开始就忽略了最核心的一环。 很多开发者搭建RAG(检索增强生成)系统时,会陷入一个误区:认为只要把文档切块…

2026/8/21 12:57:15

Python集成Perplexity SDK:为智能体赋予实时AI搜索能力

在实际开发中,将AI搜索能力集成到自己的应用或智能体(Agent)中,通常需要处理复杂的API调用、上下文管理、流式响应和错误处理。Perplexity作为一款结合了传统搜索引擎和大型语言模型能力的AI搜索工具,其官方SDK的发布&…

2026/8/20 10:17:13

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/20 20:11:18

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/21 0:03:13

Linux命令-uucico(UUCP传输程序)

Linux命令-uucico(UUCP传输程序) 🔰简介UUCP 体系简介 📖语法⚙️选项配置文件 💡示例示例 1:基本传输操作示例 2:主模式与从模式示例 3:调试与故障排查示例 4:UUCP 配置…

2026/8/21 0:03:13

Linux命令-uupick(UUCP文件接收工具)

Linux命令-uupick(UUCP文件接收工具)🔰简介uupick 在 UUCP 传输链中的位置📖语法⚙️选项交互命令💡示例示例 1:基本接收操作示例 2:仅处理来自特定系统的文件示例 3:完整 UUCP 文件…

2026/8/20 8:35:23

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/20 9:15:29

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/21 0:31:27

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…