嵌入式系统(二):ARM芯片及体系架构(下)

4.操作模式和特权级别

Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。两种操作模式分别为:处理者模式(handler mode)和线程模式(thread mode)。两级特权操作分别为:特权级和用户级(非特权级)
在这里插入图片描述

(1)特权访问与用户访问(非特权访问)

特权执行可以访问所有资源。
非特权执行时对有些资源的访问受到限制或不允许访问。如部分指令的使用 (设置FAULTMASK和PRIMASK的CPS指令 )对系统控制空间(SCS)的大部分寄存器的访问。
在这里插入图片描述

(2)线程模式和处理者模式

Cortex-M3处理器支持两种工作模式:线程模式和处理者模式
① 线程模式–可特权可用户
在复位时处理器进入线程模式–准确来说复位之后处理器特权及访问
异常返回时处理器进入线程模式
特权和用户(非特权)代码能够在线程模式下运行
线程模式下用户级访问和特权级访问的转换
在这里插入图片描述
② 处理者模式-全特权访问-异常读物

出现异常时处理器进入处理者模式
在处理者模式中,所有代码都是特权访问的

③ Tips
(1)用户可以方便地从特权级切换到用户级,但一旦进入用户级,就不能简单地试图改写控制寄存器就回到特权级,必须先申诉:执行一条系统调用指令SVC。
(2)通过引入特权级和用户级,就能够在硬件水平上限制某些不受信任的或者还没调试好的程序,不让他们随意配置涉及要害的寄存器,因而系统的可靠性得到了提高。

(3)主堆栈和进程堆栈

Cortex-M3内核有两个堆栈指针:MSP(SP_main)和PSP(SP_process)
堆栈指针R13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的。
MSP:由操作系统内核,异常服务例程以及应用程序代码访问-处理者模式只能使用MSP,因为他永远是特权级的。
PSP:用于不处于异常服务例程中的常规的应用程序代码。

控制寄存器用于定义特权级别,还用于选择当前使用哪个堆栈指针。
在这里插入图片描述

5.存储器映射

总体来说,Cortex-M3支持4GB存储空间。
在这里插入图片描述
内存中有两种格式存储字数据,称之为大端格式和小端格式。

大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端格式:与大端存储格式相反,低地址中存放的是字数据的低字节,高地址存储存放的是字数据的高字节。
在这里插入图片描述
Cortex-M3处理器支持的数据类型有32位字、16位半字和8位字节。Cortex-M3处理器支持非对齐的传送,数据存储器的访问无须对齐。

6.流水线

Cortex-M3处理器使用一个带分支预测的3级流水线,分别是取指、解码和执行。因为带分支预测,跳转指令在译码时就被识别,取指时流水线自动加载跳转后地址的指令。
在这里插入图片描述

(1)分支预测功能

到BNE的时候,由于BNE是跳转指令,是否跳转取决于前面CMP指令的结果,由于CMP指令已经译码了,因此就可以预测到底是跳转还是顺序执行,如果跳转那么下一个指令直接就取跳转之后位置的指令,这叫作分支预测。
在这里插入图片描述

7.异常和中断

异常:指在正常的程序执行流程中发生暂时的停止并转向相应的处理。既包括系统异常,也包括一些程序中断。

中断:是对Cortex-M3核来说是来自内核的外面,来自各种片上外设或外扩的外设。
系统异常:是因为内核的活动产生的,即在执行指令或访问存储器时产生。
在这里插入图片描述

在处理异常前,当前处理器的状态必须保留,这样当异常处理完成后,当前程序继续执行。
处理器允许多个异常同时发生,他们将会按固定的优先级进行处理。

异常类型表:15个系统异常,240个中断源
在这里插入图片描述
在这里插入图片描述

(1)异常优先级

数值越小说明优先级越高,复位的优先级最高,高优先级的可以抢占低优先级的资源。
在这里插入图片描述

(2)Cortex-M3 异常有哪些特点?

自动的状态保存和恢复。处理器在进入异常之前将状态寄存器和部分寄存器自动压栈,退出后自动出栈,不需要多余的指令。
自动读取代码存储器或SRAM中包含地址的向量表入口。该操作与状态保存同时执行。
中断优先级可动态重新设置。
中断数目可配置为1~240。

8.存储器保护单元(MPU)

Cortex-M3有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。
当检测到犯规时,MPU会产生一个实现(fault)异常,可以由(fault)异常的服务例程来分析该错误。
最常见的就是由操作系统使用MPU,以使特权级代码的数据,包括操作系统本身的数据不被其他用户程序破坏。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值