0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么要使用MPU?MPU如何实现内存保护?

strongerHuang 来源:strongerHuang 作者:strongerHuang 2022-07-05 17:38 次阅读

先说明一下MPU,MPU有很多含义,我们常见的有:

MPU:Memory Protection Unit,内存保护单元(本文描述的内容);

MPU:Microprocessor Unit,微处理器

还有,可能有人会与MPU-6050这类模块联系在一起。所以,大家不要把MPU搞混了。

为什么要使用MPU?

如果你开发的嵌入式项目,因内存溢出,或者内存故障等一些原因,造成了重大经济损失,或者造成了重大事故,你就能体会为什么要使用内存保护单元(MPU)了。

嵌入式系统中使用内存保护单元(MPU)可以在开发早期及时发现因内存而导致的Bug,节省更多开发时间。 同时,在项目后期修改Bug,或者增加功能,可以减少修改文档和测试所需的时间。 poYBAGLEBzGABAnVAACn1eYQigc216.jpg

也就是说,使用MPU,会避免因为修改一个bug,而引起多个bug的情况(0生1,1生万物)。

MPU如何实现内存保护

简单来说就是保护与当前执行的代码不相关的所有数据。

RTOS任务A和B来说: 任务A和B不应相互交互数据,但是存在一个错误,任务A可能会意外地写入任务B偶尔使用的某些数据,不会影响任务A的正确操作。但是,当任务B尝试使用损坏的数据时,任务B可能会意外故障。 如果没有配置MPU来阻止任务A写入任务B的数据,则该错误可能需要很长的时间供开发人员跟踪。如果错误很小,或者如果任务B很少使用该数据,则将很难解决该bug。但是,如果使用了MPU,则该bug就会及早被发现。 在某些体系结构上,MPU甚至可以帮助你检测NULL指针引用,因为你可以设置MPU区域以防止非特权代码访问内存0x0。 应用程序中一组设计良好的MPU区域可以很好的保护重要的内存区域,以防止出现特定的问题。 一个很好的例子是通过在MPU区域的末尾放置缓冲区来防止缓冲区溢出,你还可以将任务堆栈放置在任何非特权代码都无法访问的区域。如果这样做,则每个任务必须使用自己的MPU区域之一来设置自己对自己的堆栈的访问权限。

使用MPU的好处

无论是操作系统,还是裸机系统,如果没有防止恶意访问错误内存的能力,系统将有重大安全问题,以及安全漏洞的雷区。

使用的内存保护单元(MPU)有很多优势,MPU通常允许你以特权或非特权模式运行,并使用一组“区域”来确定当前正在执行的代码是否具有访问代码和数据的权限。 每个区域都是一个连续的内存块,具有该内存的一组权限,特权和非特权访问。与非特权代码的子集相比,特权代码往往可以访问大部分(但不是全部)内存。 在整个系统运行时中,这些区域不必相同。MPU区域可以根据每个任务进行修改,每个任务可以具有自己独特的区域集,这些区域在任务移至运行状态时进行配置。 这使你可以仅对需要代码和数据的任务设置访问权限,利用MPU的嵌入式操作系统将在每次上下文切换期间管理每个任务的区域和特权级别。 比如设置RTOS两个任务不同的内存保护区域:

pYYBAGLEBxWACXZ-AAEJCMxikdA848.jpg

上面这张图,大家都能看懂吧?Flash和内存区域被分别设置保护。 两个全局保护区域:Flash开头、RAM开头; 在Flash中,一部分仅限任务1访问,这部分不能被任务访问;同时,在Flash另外区域,仅限任务2访问,不能被任务1访问。如果这两部分区域被对方访问,则会生成生成MPU故障。 在RAM区域,同一部分区域,一个只能被读,一个只能被写入,如果不按约定操作,同样也会生产MPU故障。

什么时候不使用MPU?

通常有两种情况可以不使用处理器上的MPU功能:

一个简单的项目

一个对性能至关重要的项目

第1个很简单:一个非常简单的应用程序基本上没必要使用MPU,反而增加了系统的复杂性。不设置内存保护,RAM和外围设备的MPU区域,你自己一眼就能找到bug。 第2个对性能要求高的项目,在上下文切换时,设置内存保护,堆栈那些操作,有可能影响系统的实时性,从而导致系统异常。这个需要结合项目实际情况考虑用,还是不用MPU功能。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微处理器
    +关注

    关注

    11

    文章

    2300

    浏览量

    83045
  • MPU
    MPU
    +关注

    关注

    0

    文章

    381

    浏览量

    49159
  • RTOS
    +关注

    关注

    23

    文章

    829

    浏览量

    120129

原文标题:为什么RTOS系统要使用MPU?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于mpu6050问题

    我很早之前买了一个,我现在使用这个mpu6050,我在调mpu6050数据时候,数据抖动特别大,我没动这个mpu6050,它自己都有抖动,然后本来放在水平,他的机械中值是2.5,但是我水平抖动后,机械中值突然变成了-258,这是
    发表于 03-09 17:17

    常见MPU接口类型及特点

    微处理器单元(MPU)是计算机系统中的核心组件,负责执行程序指令和处理数据。MPU接口是连接MPU与其他系统组件(如内存、输入/输出设备等)的桥梁。以下是一些常见的
    的头像 发表于 01-08 09:43 337次阅读

    如何优化MPU的能耗

    优化MPU(微处理器单元)的能耗是一个综合性的任务,需要从硬件设计、软件优化以及系统集成等多个方面入手。以下是一些具体的优化策略: 一、硬件设计优化 选择低功耗MPU : 在设计之初,应根据应用需求
    的头像 发表于 01-08 09:41 263次阅读

    MPU的性能评估方法

    Testing) 基准测试是通过运行一组预定义的测试程序来评估MPU的性能。这些测试程序通常涵盖了处理器的主要功能,如计算能力、内存访问速度、浮点运算等。通过比较不同MPU在相同基准测试下的得分,可以直观地了解它们的性能差异。
    的头像 发表于 01-08 09:39 280次阅读

    MPU数据传输协议详解

    在现代电子系统中,微控制器(MPU)扮演着核心角色,负责处理各种任务和数据。为了实现这些功能,MPU需要与其他设备进行数据交换。数据传输协议就是规定这些数据交换如何进行的一套规则。 MPU
    的头像 发表于 01-08 09:37 340次阅读

    MPU的故障排除技巧

    MPU(微处理单元)的故障排除技巧涉及多个方面,包括硬件连接、软件配置、通信协议以及系统集成等。以下是一些详细的故障排除技巧: 一、硬件连接检查 接口兼容性 : 确保MPU与其他设备的接口兼容
    的头像 发表于 01-08 09:36 279次阅读

    MPU与数字信号处理的关系

    在数字化时代,微处理器单元(MPU)和数字信号处理(DSP)技术已经成为实现复杂计算和数据处理任务的关键技术。MPU作为计算机系统的大脑,负责执行程序指令和处理数据,而DSP则专注于高效地处理信号
    的头像 发表于 01-08 09:29 273次阅读

    MPU在嵌入式系统中的应用

    一、MPU的基本功能 微处理器单元(MPU)是嵌入式系统中的大脑,负责执行程序指令、处理数据和控制其他硬件设备。MPU的基本功能包括: 指令执行:MPU能够从存储器中读取指令,解码这些
    的头像 发表于 01-08 09:26 321次阅读

    MPU与MCU的区别

    和应用上存在显著差异。 MPU与MCU的定义 微处理器单元(MPU) : MPU是一种通用的中央处理单元,它主要设计用于执行复杂的计算任务。MPU通常包含一个或多个核心,能够处理广泛的
    的头像 发表于 01-08 09:25 744次阅读

    什么是MPU控制器及其应用

    MPU控制器是现代电子系统中不可或缺的组成部分,它们在各种设备中扮演着核心角色,从简单的嵌入式系统到复杂的计算机和服务器。MPU控制器的设计旨在提供高效、可靠的数据处理能力,同时保持较低的功耗和成本
    的头像 发表于 01-08 09:23 319次阅读

    MPU微处理器的工作原理

    在现代电子设备中,微处理器(MPU)扮演着至关重要的角色。从个人电脑到智能手机,再到嵌入式系统,MPU都是实现复杂计算任务的关键。 MPU的基本结构
    的头像 发表于 01-07 18:08 710次阅读

    瑞萨RZ/T系列MPU的中断重入实现

    基于Arm的RZ/T系列MPU通过工业以太网通信提供高性能和高速实时控制,为自动化市场构建高性能系统。RZ/T MPU和RZ/N MPU均基于类似的硬件架构开发而成,并共享相同的软件环境,可
    的头像 发表于 07-23 14:47 750次阅读
    瑞萨RZ/T系列<b class='flag-5'>MPU</b>的中断重入<b class='flag-5'>实现</b>

    产品简介 | RZ/A系列MPU

    产品简介 | RZ/A系列MPU
    的头像 发表于 05-24 08:06 528次阅读
    产品简介 | RZ/A系列<b class='flag-5'>MPU</b>

    STM32H750使能内存保护后DMA异常的原因?怎么解决?

    STM32H750 在使能内存保护后启用cache 导致SPI+DMA传输不准确,具体就是调用HAL_SPI_TransmitReceive_DMA 这个函数,读到的数据全是0,但是拿逻辑分析仪看上面显示的数据是正确的。
    发表于 05-24 07:53

    AUTOSAR内存分区和MPU关系简述

    MPU保护与当前执行的代码“不相关“的所有数据。
    的头像 发表于 03-18 11:15 1442次阅读
    AUTOSAR<b class='flag-5'>内存</b>分区和<b class='flag-5'>MPU</b>关系简述