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

    文章

    2438

    浏览量

    86125
  • MPU
    MPU
    +关注

    关注

    0

    文章

    461

    浏览量

    51552
  • RTOS
    +关注

    关注

    25

    文章

    868

    浏览量

    123204

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何对 iMX8M Plus MPU 进行“热复位”或“热启动”?

    我们想对 iMX8M Plus MPU 进行“热复位”或“热启动”。 我们的意思是,我们希望让 MPU 休息,并重新加载所有固件和作系统,但保留部分外部 DDR 内存内容。 我们已经尝试了这个任务
    发表于 04-14 06:29

    探秘MPU/MDU200系列AC - DC电源:特性、参数与应用指南

    探秘MPU/MDU200系列AC - DC电源:特性、参数与应用指南 近期在电源设计与应用领域,MPU/MDU200系列AC - DC电源产品凭借其出色的性能和广泛的适用性,吸引了众多电子工程师
    的头像 发表于 04-05 13:55 641次阅读

    RZ/N2L Group:高性能MPU的技术剖析与应用潜力

    RZ/N2L Group:高性能MPU的技术剖析与应用潜力 在当今电子科技飞速发展的时代,高性能微处理器单元(MPU)对于各种电子设备的性能提升起着至关重要的作用。RZ/N2L Group作为一款
    的头像 发表于 04-01 11:45 177次阅读

    RZ/G3S Group:一款功能强大的MPU芯片全面解析

    RZ/G3S Group:一款功能强大的MPU芯片全面解析 在如今的电子科技领域,微处理器(MPU)一直都是各类电子设备的核心部件。今天,我们就来深入探讨Renesas推出的RZ/G3S Group
    的头像 发表于 04-01 11:40 166次阅读

    RZ/T2M MPU:工业控制与自动化应用的理想之选

    RZ/T2M MPU:工业控制与自动化应用的理想之选 在当今的工业控制与自动化领域,对高性能、高可靠性微处理器单元(MPU)的需求日益增长。Renesas Electronics的RZ/T2M
    的头像 发表于 12-29 16:30 521次阅读

    盟通科技基于瑞萨RZ MPU的EtherCAT主站应用方案

    瑞萨电子携手盟通科技推出基于瑞萨RZ MPU的EtherCAT主站应用方案,为工业机器人、伺服驱动、PLC和自动化控制设备等应用场景提供完整易用的支持。
    的头像 发表于 11-21 10:31 1383次阅读
    盟通科技基于瑞萨RZ <b class='flag-5'>MPU</b>的EtherCAT主站应用方案

    CW32A系列(车规级 MCU)介绍

    加密、内存保护单元(MPU)、看门狗定时器。 典型应用:车身控制模块(BCM)、车载传感器、动力电池管理(BMS)、ADAS 辅助驾驶。
    发表于 11-17 06:30

    RTThread支持内存保护功能吗?

    以前在其他视频里看过说单片机可以实现线程崩溃不会影响系统运行, 我一直不知道怎么实现的, 最近了解到 MPU和Zephyr的内存保护, 这些在RTthread中可以
    发表于 10-14 07:14

    如何从 MCU/MPU 角度保护物联网应用?

    如何从 MCU/MPU 角度保护物联网应用?
    发表于 09-08 07:33

    边聊安全 | 功能安全开发之MPU

    上海磐时PANSHI“磐时,做汽车企业的安全智库”功能安全开发之MPU写在前面:在与从事功能安全开发行业的同事以及SASETECH社区的成员讨论时,笔者经常被问及有关芯片内存保护单元(MPU
    的头像 发表于 09-05 16:21 2718次阅读
    边聊安全 | 功能安全开发之<b class='flag-5'>MPU</b>

    M453 支持 MPU 吗?

    M453 支持 MPU 吗?如果是这样,如何启用它?
    发表于 08-28 06:37

    如何使用 SPI 全双工在两个 5LP MPU 之间连接 RAM?

    我需要将两个 5LP MPU 连接在一起以镜像两个 5LP MPU 内的 RAM。 我认为这将是 DMA 的一个功能,但我不确定如何实现该功能。 我的主 SPI 单元将向从属 MPU
    发表于 07-15 06:20

    瑞萨RZ/A3M HMI MPU介绍

    对于高质量图形显示的应用要求,用户通常采用功能强大及搭载DDR高速接口的MPU实现更多功能和更流畅的画面。但在开发过程会遇到DDR高速总线设计的难题,同时Linux系统难以实现类似MCU的快速启动性能。瑞萨新推出的RZ/A3M
    的头像 发表于 05-27 16:14 1239次阅读
    瑞萨RZ/A3M HMI <b class='flag-5'>MPU</b>介绍

    边缘AI MPU深度盘点:品牌、型号与技术特性全解析

    边缘AI MPU深度盘点:品牌、型号与技术特性全解析 随着边缘计算与人工智能的深度融合,边缘AI MPU(微处理器)已成为支撑物联网、智能制造、自动驾驶等场景的核心硬件。本文从品牌、型号、技术特性
    的头像 发表于 04-30 17:27 4527次阅读

    MPU-6000和MPU-6050产品规格书

    电子发烧友网站提供《MPU-6000和MPU-6050产品规格书.pdf》资料免费下载
    发表于 04-29 16:52 3次下载