为什么要使用MPU(MPU如何实现内存保护)
先解释一下MPU。MPU有很多含义。一些常见的例子有:
MPU:内存保护单元,内存保护单元(本文有描述);
MPU:微处理器单元,微处理器;
此外,有人可能与MPU-6050等模块相关联。所以,我们不要混淆MPU。
为什么要用MPU?
如果你开发的嵌入式项目因为内存溢出或内存故障造成了重大经济损失或重大事故,你就能理解为什么要使用内存保护单元(MPU)了。
在嵌入式系统中使用内存保护单元(MPU)可以在开发初期发现内存引起的bug,节省更多的开发时间。同时,在项目后期修改bug或者增加功能,可以减少修改文档和测试所需的时间。也就是说,通过使用MPU,可以避免修改一个bug导致多个bug的情况(0生成1,1生成一切)。
如何利用微处理器实现内存保护
简单来说,就是保护所有与当前执行的代码无关的数据。
以RTOS任务A和B为例:任务A和B不应该相互交互,但是有一个错误。任务A可能会不小心写入一些任务B偶尔使用的数据,不会影响任务A的正确操作,但是当任务B试图使用损坏的数据时,任务B可能会意外失败。如果MPU没有配置阻止任务A写任务B的数据,这个错误可能需要开发者很长时间才能跟进。如果误差很小,或者任务B很少使用数据,就很难解决bug。但是如果用MPU的话,bug会发现的比较早。在某些架构上,MPU甚至可以帮助你检测空指针引用,因为你可以设置MPU区域来防止非特权代码访问内存0x0。应用程序中一组设计良好的MPU区域可以保护重要的内存区域,以防止特定的问题。一个很好的例子是通过在MPU区域的末端放置一个缓冲区来防止缓冲区溢出。您还可以将任务堆栈放在非特权代码无法访问的区域。如果这样做,每个任务必须使用它自己的MPU区域之一来设置它自己对自己的堆栈的访问权限。
使用微处理器的优势
无论是操作系统还是裸机系统,如果没有防止恶意访问错误内存的能力,系统都会存在重大的安全问题和安全漏洞雷区。
使用的内存保护单元(MPU)有许多优点。MPU通常允许你在特权或非特权模式下运行,并使用一组“区域”来确定当前执行的代码是否可以访问代码和数据。每个区域是一个连续的内存块,具有一组权限,对内存的特权和非特权访问。与非特权代码的子集相比,特权代码通常可以访问大部分(但不是全部)内存。在整个系统运行期间,这些区域不必相同。MPU区可以根据每个任务进行修改,每个任务可以有自己唯一的区集,可以在任务转入运行状态时进行配置。这允许您仅为需要代码和数据的任务设置访问权限。MPU的嵌入式操作系统将在每次上下文切换期间管理每个任务的区域和权限级别。例如,设置两个RTOS任务不同的内存保护区:
大家能看懂上图吗?闪存区和存储区分别受到保护。两个全局保护区:Flash启动和RAM启动;在Flash中,它的一部分只能被Task 1访问,而这部分不能被Task访问;同时,在Flash的其他区域,只有任务2可以访问,而任务1不能。如果这两个区域互相访问,就会产生MPU故障。在RAM区,在同一部分区域,一个只能读,一个只能写。如果不按约定操作,MPU也会失效。
什么时候不用MPU?
通常有两种情况不能使用处理器上的MPU功能:
一个简单的项目
对绩效至关重要的项目。
第一个很简单:一个很简单的应用基本上不需要使用MPU,但是增加了系统的复杂度。不用设置外围设备的内存保护、RAM、MPU区,一眼就能发现bug。性能要求高的第二个项目,上下文切换时设置内存保护,堆栈那些操作,可能会影响系统的实时性能,从而导致系统异常。这个要结合项目实际情况考虑,还是要用MPU功能?审计刘清
推荐阅读
- alfa romeo车标含义?(阿尔法罗密欧车标)
- 华为鸿蒙os如何操作 华为鸿蒙os2.0系统官网报名入口
- 14款沃尔沃s60l二手车能买吗?(沃尔沃s60为什么贬值厉害)
- power mp3 wma converter(mp3格式转换器)软件介绍(power mp3 wma converter(mp3格式转换器))
- 42岁李贞贤宣布平安生女,网友:歌声击退山贼的那个
- 热火朝天的高铁WiFi迟迟未到(5G能否破局)
- 华为手机性价比最高是哪几款2022? 华为哪款手机性价比高最值得入手
- 进口捷豹全部车型报价?(捷豹报价大全价格表)
- 韩庚江铠同疑相恋,两人同游马尔代夫遭曝光
- 八卦格字帖软件介绍(八卦格字帖)
- 虚拟机 操作系统(操作系统整合:虚拟机管理程序的下一步)
- 比亚迪f6参数配置?(比亚迪f6)
- 奥沙利文获世锦冠军,奥沙利文得了几次世锦赛冠军
- Evel Knievel手游游戏介绍(Evel Knievel手游)
- 索尼wi1000x拆解(SONYNZW-X1000系列高清拆解图集)
- 4座硬顶敞篷跑车都有哪几款?(4门4座硬顶敞篷车推荐)
- 艺术体操团体全能决赛,艺术体操团体全能决赛中国
- 工人物语6通用修改器游戏介绍(工人物语6通用修改器)
- 简述电机换向器的工作原理图(简述电机换向器的工作原理)
- Atheros-AR5007EG无线网卡驱动软件介绍(Atheros-AR5007EG无线网卡驱动)