【STM32】MPU内存保护单元
- 注:仅在F7和M7系列上使用
- 介绍
- 功能:
- 设置不同存储区域的存储器访问权限(管理员、用户)
- 设置存储器(内存和外设)属性(可缓冲、可缓存、可共享)
- 优点:提高嵌入式系统的健壮性,使系统更加安全
- 阻止用户破坏操作系统的数据
- 阻止一个任务访问其他任务的数据区,从而隔离任务
- 把关键数据区域设置为只读,从根本上解决被破坏的可能
- 检测意外的存储访问,如堆栈溢出、数组越界
- 将SRAM或者RAM空间定义为不可执行,防止代码注释
- 功能:
- 内核地址映射
- MPU可配置保护8(针对F7)/16(针对H7)个内存区域,每个区域最小要求256字节,且每个区域还可配置为8个子区域

- MPU可配置保护8(针对F7)/16(针对H7)个内存区域,每个区域最小要求256字节,且每个区域还可配置为8个子区域
- MPU设置内存区域的访问权限
- MPU_REGION_NO_ACCESS---------无访问(管理员+用户级都不能访问)
- MPU_REGION_PRIV_RW ---------仅支持特权级读写访问
- MPU_REGION_PRIV_RW_URO-----禁止用户写访问(管理员可读写访问)
- MPU_REGION_FULL_ACCESS------全访问(管理员、用户都可以访问)
- MPU_REGION_PRIV_RO --------仅支持管理员访问
- MPU_REGION_PRIV_RO_URO------只读(管理员&用户都不可以写)
- MPU配置内存区域的访问属性
- 三种内存类型
- Normal memory(性能最强)
- -> “ROM” “FLASH” “SRAM”
- CPU以最高效的方式加载和存储字节,半字和字,CPU对于这种内存区的加载或存储不一定要按照程序代码的顺序执行
- Device memory(性能中)
- ->外设
- 加载和存储要严格按照次序进行,确保寄存器按照正确顺序执行
- Strongly ordered memory(性能最差)
- 程序完全按照代码顺序执行,CPU会等待当前加载存储执行完毕后才执行下一条指令,所以导致性能下降
- Normal memory(性能最强)
- 三种内存类型
- Cache
- F4、M4当中有MPU却不用是因为:没有Cache
- 分类
- 数据缓存D-Cache
- 指令缓存I-Cache
- 4种基本操作
- 使能
- 禁止清空
- 清空
- 无效化
- 读写操作

- 写操作
- CPU要写的SRAM区域数据在Cache中已经开辟了对应的区域----------“写命中”(Cache Hit)
- 若Cache里面没有开辟对应的区域----------(Cache Miss)
- 写操作
- CPU要读取的SRAM区域数据在Cache中已经加载好----------“读命中”(Cache Hit)
- 若Cache里面没有----------(Cache Miss)
- Core读Cache
- Cache hit :直接从cache当中读出数据即可
- Cache miss:两个处理方式
- read through 直接从内存中读出,不用cache
- read allocate 把数据从内存加载到cache,再从cache传给core
- Core写Cache
- Cache hit
- write through 直接写到内存中并同时放在cache里面 内存和cache同步更新
- write back 数据更新时只写入cache,只在数据被替换出cache时,被修改的cache数据才会写入内存
- Cache miss
- write allocate 先要把写的数据载入到cache,对cache写后,更新到内存里面
- no write allocate 直接写入内存,不用cache
-
- 数据不一致的解决问题
- 设置共享属性
- Cache相当于没有开启
- 软件进行cache维护
- clean 清空:cache已经变化,SRAM数据未更新,DMA搬运数据前,将cache相对应数据更新到SRAMSCB_CleanDCache/SCB_CleanInvalidateDCache
- invalidate无效化:SRAM数据已变化,Cache未更新DMA后
- 设置共享属性
- 写操作
- TEX用来设置Cache策略
- 只要开启Cache,read allocate 是开启

- Non-cacheable 正常读写操作,无cache
- Write throught 写操作命中 no write allocate 不命中 read allocated 读操作没有命中
- Write back 写操作命中 no write allocate 不命中 read allocated 读操作没有命中
- write back 写操作命中 write allocate 不命中 read allocated 读操作没有命中
- 只要开启Cache,read allocate 是开启
- HAL库驱动
- 结构体 MPU_Region_InitTypeDef

- 参数

- 参数
- MPU基本配置步骤(可查芯片手册)
- 禁止MPU void HAL_MPU_Disable();
- 配置某个区域的MPU保护参数 通过调用HAL_ConfigRegion()函数去设置
- 使能MPU void HAL_MPU_ Enable();
- 编写MemManage中断服务函数 void MemManage_Handler(void);
- 结构体 MPU_Region_InitTypeDef
相关文章:
【STM32】MPU内存保护单元
注:仅在F7和M7系列上使用介绍 功能: 设置不同存储区域的存储器访问权限(管理员、用户) 设置存储器(内存和外设)属性(可缓冲、可缓存、可共享) 优点:提高嵌入式系统的健壮…...
用Python爬虫能实现什么?
Python 是进行网络爬虫开发的一个非常流行和强大的语言,这主要得益于其丰富的库和框架,比如 requests、BeautifulSoup、Scrapy 等。下面我将简要介绍 Python 爬虫的基础知识和几个关键步骤。 1. 爬虫的基本原理 网络爬虫(Web Crawler&#…...
【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)
目录 0.简介 1.详细代码及解释 1)原label显示在界面上 2)水平翻转 3)垂直翻转 4)顺时针旋转45度 5)逆时针旋转 0.简介 环境:windows11 QtCreator 背景:demo,父类为QWidget&a…...
CSP-J模拟赛day1
yjq的吉祥数 文件读写 输入文件 a v o i d . i n avoid.in avoid.in 输出文件 a v o i d . o u t avoid.out avoid.out 限制 1000ms 512MB 题目描述 众所周知, 这个数字在有些时候不是很吉利,因为它谐音为 “散” 所以yjq认为只要是 的整数次幂的数…...
Docker构建LNMP环境并运行Wordpress平台
1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…...
《峡谷小狐仙-多模态角色扮演游戏助手》复现流程
YongXie66/Honor-of-Kings_RolePlay: The Role Playing Project of Honor-of-Kings Based on LnternLM2。峡谷小狐仙--王者荣耀领域的角色扮演聊天机器人,结合多模态技术将英雄妲己的形象带入大模型中。 (github.com) https://github.com/chg0901/Honor_of_Kings…...
Qt 使用Installer Framework制作安装包
Qt 使用Installer Framework制作安装包 引言一、下载安装 Qt Installer Framework二、简单使用2.1 创建目录结构 (文件夹结构)2.2 制作程序压缩包2.3 制作程序安装包 引言 Qt Installer Framework (安装程序框架)是一个强大的工具集,用于创建自定义的在线和离线安装…...
Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)
文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器,它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能: 实时预览:Typora支持实时预览功能࿰…...
linux代填密码切换用户
一、背景 linux用户账户密码复杂,在不考虑安全的情况下,想要使用命令自动切换用户 二、操作 通过 expect 工具来实现自动输入密码的效果 yum install expect创建switchRoot.exp文件,内容参考下面的 #!/usr/bin/expect set username root…...
防火墙的经典体系结构及其具体结构
防火墙的经典体系结构及其具体结构 防火墙是保护计算机网络安全的重要设备或软件,主要用于监控和控制进出网络流量,防止未经授权的访问。防火墙的经典体系结构主要包括包过滤防火墙、状态检测防火墙、代理防火墙和下一代防火墙(NGFW…...
【BUG】已解决:note: This is an issue with the package mentioned above,not pip.
已解决:note: This is an issue with the package mentioned above,not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷…...
【ARM】SMMU系统虚拟化整理
目录 1.MMU的基本介绍 1.1 特点梳理 2.功能 DVM interface PTW interface 2.1 操作流程 2.1.1 StreamID 2.1.2 安全状态: 2.1.3 HUM 2.1.4 可配置的操作特性 Outstanding transactions per TBU QoS 仲裁 2.2 Cache结构 2.2.1 Micro TLB 2.2.2 Macro…...
PYQT按键长按机制
长按按键不松开也会触发 keyReleaseEvent 事件,是由于操作系统的键盘事件处理机制。大多数操作系统在检测到键盘按键被长按时,会重复生成按键按下 (keyPressEvent) 和按键释放 (keyReleaseEvent) 事件。这种行为通常被称为“键盘自动重复”。 通过检测 …...
SAPUI5基础知识15 - 理解控件的本质
1. 背景 经过一系列的练习,通过不同的SAPUI5控件,我们完成了对应用程序界面的初步设计,在本篇博客中,让我们一起总结下SAPUI5控件的相关知识点,更深入地理解SAPUI5控件的本质。 通常而言,一个典型UI5应用…...
十七、【机器学习】【非监督学习】- K-均值 (K-Means)
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
算法力扣刷题记录 五十六【501.二叉搜索树中的众数】
前言 二叉搜索树操作,继续。 记录 五十六【501.二叉搜索树中的众数】 一、题目阅读 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)…...
分布式搜索引擎ES-Elasticsearch进阶
1.head与postman基于索引的操作 引入概念: 集群健康: green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…...
低代码与传统编程:快速高质量构建系统的比较与方法
在信息技术飞速发展的今天,企业对软件系统的需求不断增加。然而,如何在保证高质量的前提下快速构建系统成为了一个关键问题。本文将深入探讨低代码(Low-Code)开发与传统代码编程的区别,并探讨如何利用这两种方法快速高…...
WebRTC音视频-环境搭建
目录 期望效果 1:虚拟机和系统安装 2:WebRTC客户端环境搭建 2.1:VScode安装 2.2:MobaXterm安装 3:WebRTC服务器环境搭建 3.1:安装openssh服务器 3.2:安装Node.js 3.3:coturn穿透和转发服务器 3.3.1&a…...
Memcached开发(八):使用PHP进行操作
目录 1. 安装与配置 1.1 安装Memcached服务器 1.2 安装PHP的Memcached扩展 2. 基本操作 2.1 连接Memcached服务器 2.2 设置与获取数据 2.3 删除数据 2.4 检查数据是否存在 2.5 添加和替换数据 3. 高级操作 3.1 批量操作 3.2 数据计数器 3.3 CAS(Check …...
CI/CD 流水线性能优化:从构建到部署
CI/CD 流水线性能优化:从构建到部署 前言 哥们,别整那些花里胡哨的理论。今天直接上硬菜——我在大厂一线优化 CI/CD 流水线性能的真实经验总结。作为一个白天写前端、晚上打鼓的硬核工程师,我对效率的追求就像对鼓点节奏的把控一样严格。 背…...
【基于Tube的非线性系统模型预测控制MPC】基于鲁棒控制不变集的管式模型预测控制方案及其在利普希茨非线性系统中的应用附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
比亚迪多款新车激光雷达性能超越华为:千线级感知开启智驾新纪元
2026年,中国智能驾驶行业正式进入“千线级激光雷达”时代。继华为发布896线双光路激光雷达后,比亚迪携速腾聚创EM4数字化激光雷达强势反击,以1080线物理扫描、600米最远探测的硬核参数,在核心感知硬件上实现对华为的全面超越。这一突破不仅标志着比亚迪补齐了智能化短板,更…...
一文搞懂训练大模型的数据怎么准备!
谈到大模型,很多人第一反应都是模型参数大、算力强,但其实数据才是大模型真正的底座。没有足够大、足够干净的数据,再先进的模型也发挥不出威力。今天就从数据层面,把大模型训练的几个关键环节梳理清楚。 数据采集与清洗 大模型训…...
双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断
双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断 1. 为什么需要双模型灾备 去年冬天的一个深夜,我正在用OpenClaw自动处理一批技术文档的翻译任务。突然收到一连串报警通知——原本稳定运行的Qwen模型服务因为网络波动彻底失联。…...
51单片机定时器初值计算与Proteus仿真
51单片机定时器初值计算方法详解1. 定时器基础原理1.1 单片机定时器工作模式51系列单片机内置的定时器/计数器模块是嵌入式系统中实现精确时间控制的核心部件。定时器本质上是一个特殊功能的寄存器,通过累加时钟脉冲实现计时功能。根据位数不同,51单片机…...
为什么操作 UI 必须加 `lcd_mutex` 互斥锁?不用会怎样?
1. 先给结论(你必须记住) LVGL 所有界面操作(创建文字、按钮、刷新屏幕)都不是线程安全的。 意思是: 绝对不能有两个线程同时操作 LVGL 界面! 线程A:LVGL 主线程(一直在刷新屏幕&…...
手把手教你解决Unity视频播放问题:H264编码设置与RawImage的正确用法
Unity视频播放全攻略:H264编码优化与RawImage实战解析 在Unity项目开发中,视频播放功能看似简单,却暗藏诸多技术细节。许多开发者都曾遇到过视频不同步、颜色失真或性能低下的困扰。本文将深入剖析视频播放的核心技术要点,从编码格…...
终极实战指南:在Docker容器中运行Windows系统的完整解决方案
终极实战指南:在Docker容器中运行Windows系统的完整解决方案 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 还在为Windows虚拟机占用大量系统资源而烦恼吗?想体验在容…...
MMC级联H桥仿真图解析:电压电流双闭环控制策略研究
MMC,级联H桥仿真图,电压电流双闭环。最近在搞MMC(模块化多电平换流器)的仿真,发现这玩意儿真是电力电子界的乐高——全靠子模块堆叠。特别是级联H桥的结构,玩电压合成比搭积木刺激多了。今天咱们就着电压电…...

