ARM的MMU存储访问权限控制详解

来源:互联网 发布:第二批网络禁书目录 编辑:程序博客网 时间:2024/05/18 00:09

MMU对段和页面进行保护,对段和页面进行保护是由几个因素造成的。它由域的访问控制字段和一级描述符或二级描述符中的AP字段,以及C1寄存器的S(表示system),R(表示rom)控制位来共同决定的。

MMU中的域是指的一些段,大页或者小页的集合。ARM支持最多16个域,每个域的访问控制特性由CP15中的寄存器C3中的两位来控制。CP15中的寄存器C3的格式如下:

 

 其中每两位控制一个域的访问控制特性,其编码及对应的含义如下:

 

当控制位为00时,此域是没有访问权限的;

当控制位为01时,此时域的属性为“用户”域;

当控制位为11时,此时域的属性为“系统”域。 

 

当其域为“系统”域时,APSR的值将会忽略,CPU(无论cpu运行在用户级还是在特权级)可以直接访问存储内容,将不进行存储权限检查。

当其域为“用户”域时,存储访问权限控制由APSR来决定。

 

当域为“用户”域时,APSR控制访问权限的具体规则如下:

 

对上图的应该这样理解:

当域为“用户”域时,当CPU运行在“特权级”或“用户级”时,APSR控制段或页的存储访问权限;

 

比如:

当域为“用户”域时,当CPU运行在“用户级”时,AP=00S=1R=0,查表可知,这时CPU没有访问权限;

当域为“用户”域时,当CPU运行在“特权级”时,AP=00S=1,R=0,这里CPU只能读存储内容,但不能写,如果写的话将产生错误;

注意:APSR的决定访问权限的作用只用是在其域为“用户”域的状态。

 

 

                                                    

原创粉丝点击