Cortex-M3知识

Cortex-M3 处理器支持:

  • 两种操作模式,即线程模式和处理程序模式

  • 两种执行模式,即特权模式和用户模式。

重置时会进入线程模式,并且通常从异常中返回时也会进入该模式。 在线程模式下,代码可以在特权模式或用户模式下执行。

发生异常后将进入处理程序模式。 所有代码都在特权模式下执行。 发生异常时,内核会自动切换到特权模式。

特权模式具有完全访问权限。

用户模式具有有限的访问权限。 这些限制包括:

  • 指令用法的限制,如 MSR 指令中可以使用哪些字段

  • 某些协处理器寄存器用法的限制

  • 基于系统设计对内存和外围设备访问的限制

  • MPU 配置施加的对内存和外围设备访问的限制。

从异常中返回时,通过修改链接寄存器 (R14) 中 EXC_RETURN 值可以从特权线程模式更改为用户线程模式。 通过使用 MSR 指令清除 CONTROL[0],也可以从特权线程模式更改为用户线程模式。 不过,不通过异常处理(例如 SVC)无法直接从非特权模式更改为特权模式

 

7.1.2. 主堆栈和进程堆栈

Cortex-M3 处理器支持两个不同堆栈,主堆栈和进程堆栈。 它有两个堆栈指针 (SP),分别用于两个堆栈。 一次只能看见一个堆栈指针,具体取决于正在使用的堆栈。

重置以及进入异常处理程序时使用主堆栈。 要使用进程堆栈,必须选择该堆栈。 可以通过以下方法之一执行此操作:

  • 退出处理程序模式时,可通过使用 EXC_RETURN 值

  • 在线程模式中时,可通过使用 MSR 指令写入 CONTROL[1]。

Note

您的初始化代码或上下文切换代码必须对进程堆栈指针进行初始化。

 

 

Cortex-M3 中使用 NVIC 表示 Cortex-M3 的向量表与以前的 ARM 内核有很大不同。 Cortex-M3 向量表包含异常处理程序和 ISR 的地址,而多数其他 ARM 内核包含指令。 初始堆栈指针以及重置处理程序的地址必须分别位于 0x00x4。 重置时,这些地址会加载到适当的 CPU 寄存器中。

 

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0203hc/Cihdidh2.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值