当前位置:首页 > 公众号精选 > strongerHuang
[导读]先说明一下MPU,MPU有很多含义,我们常见的有: MPU:Memory Protection Unit,内存保护单元(本文描述的内容); MPU:Microprocessor Unit,微处理器;


作者 | strongerHuang

微信公众号 | strongerHuang

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

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

MPU:Microprocessor Unit,微处理器;

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


嵌入式专栏

1

为什么要使用MPU? 如果你开发的嵌入式项目,因内存溢出,或者内存故障等一些原因,造成了重大经济损失,或者造成了重大事故,你就能体会为什么要使用内存保护单元(MPU了。
在嵌入式系统中使用内存保护单元(MPU可以在开发早期及时发现因内存而导致的Bug,节省更多开发时间。
同时,在项目后期修改Bug,或者增加功能,可以减少修改文档和测试所需的时间。

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


嵌入式专栏

2

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区域之一来设置自己对自己的堆栈的访问权限。


嵌入式专栏

3

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


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

嵌入式专栏

4

什么时候不使用MPU? 通常有两种情况可以不使用处理器上的MPU功能:
  • 一个简单的项目

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


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

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭