社区导航

 

搜索
查看: 8476|回复: 2

[Raw-OS] 认识MPU(内存保护模块)

[复制链接]

576

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

荣誉会员勋章

发表于 2013-9-14 22:13 | 显示全部楼层 |阅读模式
为了加深对raw os 的MPU内存保护模块的理解,感觉有必要像大家解释清楚什么叫MPU。只有正确认识了MPU,才能最有效地运用到实战中去。
对于arm cpu , MPU模块目前主要使用在cortex-m3 以及cortex-m4cpu中,这两种cpu都是属于arm7m 的架构。
首先一个正确的思路是下载合适的cpu体系架构文档,然后参阅其中的章节。做到学习新事物以官方文档为主。
进入以下网站地址:
然后下载文档:
1.png

这样参考的资料就有了。
打开下载的手册翻到:
2.png

可以看到B3.5这一个章节解释了所有MPU内存保护模块的内容。下面就这些内容将解释一些关键性的内容。
系统主要运行在两种模式,第一种是特权模式,第二种是非特权模式(用户模式)。MPU所有的工作都是围绕这两个展开的。MPU保护模块主要是把内存分成region, arm v7m支持的region个数有8个。MPU最小能支持32字节的region, 这样整个4G空间可以最高被划分成8块,每块的权限特性都可以被设置。
MPU最主要的一个特性是没有虚拟地址的特性,所以cpu不需要做虚拟地址到物理地址的转换,所以在软件上省去了软件设置,交换page table等动作,使得整个系统的时间是可预测的,而且软件的执行效率大大提高。
MPU实现了什么功能呢?下图是MPU的一个内部寄存器名字叫: MPU_RASR

3.png

可以看到这个寄存器内部有AP这两位,具体的含义如下:

4.png

上面表格很清楚,通过设置AP3位,完全可以控制特权模式和非特权模式(用户模式)的读写权限。
至于其它的寄存器功能,手册上已经写得很清楚了,静下心来琢磨下,下载官网的

5.png

通过以上的模拟(需要安装keil mdk), 能够快速的掌握MPU的使用方法。

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2013-9-14 23:39 | 显示全部楼层

MPU应用

MPU应用在M3/4上,只知道有这个功能。还没看到具体的应用。也想不出在哪里可以应用到。
1.M3程序跑在flash当中,变量在ram当中,
2.ram里的变量应该都需要读、写权限,因此没必要保护。
3.flash里的程序当然是只有只读权限,应用想写flash也写不了,除非特殊解锁。
所以我以为M3不需要MPU啊??

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2013-9-15 02:41 | 显示全部楼层
看了上一遍文章,了解了一下。大概有些理解了,还得细看下。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-10 07:31 , Processed in 0.142062 second(s), 24 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表