当前位置: 首页 > news >正文

ARMv7的MPU

0. 简介

‌       ARMv7的MPU(Memory Protection Unit,内存保护单元)主要作用是保护内存安全,防止非法访问和操作,提高系统的稳定性和安全性。

可以说,MPU是MMU(内存管理单元:支持虚拟内存和地址转换)的轻量级替代方案,与MMU不同,MPU是基于物理地址实现的,更适用于资源受限的实时嵌入式系统。

       简单来说,MPU的核心作用可以概括为以下三点:

  1. 隔离与保护:划分不同内存区域(如代码、数据、外设),设置读写/执行权限,防止非法访问(如用户程序误改内核数据)。
  2. 特权级隔离:区分内核(特权模式)与用户程序(非特权模式),限制低权限代码访问关键资源。
  3. 实时系统支持:在RTOS中为不同任务分配独立内存区域,避免任务间相互干扰,增强稳定性。

        如上所述,MPU更多的是应用于RTOS(实时操作系统)中,用于内核与用户程序的区分。

1. 运行模式与特权模式

        ARMV7-M的两种运行模式:

  1. 线程模式:系统复位(进入复位中断)后处于该模式。
  2. 管理者模式:进入除了“复位中断”的其它中断后,处于该模式。

        ARMV7-M 的两种特权等级,“有特权级”和“无特权级

  1. 有特权级:只要进入中断,将处于该等级。此时可以执行所有指令,访问所有寄存器。
  2. 无特权级:线程模式下,CONTROL.nPRIV为1,将处于该等级。此时执行指令和访问寄存器,都会受限。该等级下 CONTROL.nPRIV 为只读(写操作会被忽略),即无法通过将 CONTROL.nPRIV 写0来恢复“有特权级”。要想从“无特权级”切换到 “有特权级”模式,需要在 “无特权级”线程里产生一个中断,在中断处理过程中,把 nPRIV 值设为 0. 这是因为 CONTROL 寄存器在 “有特权级”可写,在中断处理时会自动切换到 “有特权级”模式。在实际情况中,一般是操作系统来编辑 nPRIV, 以此来控制 “无特权级” 和“有特权级”.

        在管理者模式下,内核特权等级与CONTROL.nPRIV无关,将永远处于“有特权级”。

2. MPU的寄存器

2.1 MPU 类型寄存器 TYPE

       MPU类型寄存器主要表示这个MCU有几个region

bit

名称

类型

描述

0

SEPARATE

R

处理器对指令(Instruction)和数据(

相关文章:

  • 《非暴力沟通》第十二章 “重获生活的热情” 总结
  • Linux--基础IO
  • HTTP事务描述
  • 超级创新思路:基于元学习MTGCN-Attention-Transformer的时间序列预测模型(Python\matlab实现)
  • 树莓派5从零开发至脱机脚本运行教程——4.opencv库安装篇
  • C语言中的结构体,枚举,联合体的学习
  • 知识就是力量——HELLO GAME WORD!
  • [vue]更新数组
  • SSE服务器主动推送至浏览器客户端,让你不再需要websocket
  • React.memo、useMemo、useCallback性能优化总结
  • 嵌入式软件设计规范框架(MISRA-C 2012增强版)
  • VS Code C/C++项目设置launch.json中的environment参数解决支持库路径问题
  • Linux——线程互斥和同步
  • Dify+ollama+vanna 实现text2sql 智能数据分析 -01
  • 【第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组】C语言代码
  • Windows 系统下多功能免费 PDF 编辑工具详解
  • 二分类与多分类
  • # 基于 OpenCV 的运动目标检测与跟踪
  • C++ 多态:面向对象编程的核心概念(二)
  • RISC-V AIA学习3---APLIC第三部分
  • 网站制作 p/黑帽seo寄生虫
  • 效果图哪个网站好/百度云app
  • 电子商务网站建设参考文献/网络营销软件
  • 云南省建设工程信息服务平台/标题优化seo
  • 无锡哪里做网站/宁德市人民医院
  • 网站域名个人备案跟企业备案/深圳华强北新闻最新消息今天