EDA365电子论坛网

标题: ARM处理器各个模式之间是如何切换的? [打印本页]

作者: zxcvbvbnmn    时间: 2021-5-25 14:39
标题: ARM处理器各个模式之间是如何切换的?
1、ARM处理器各个模式之间是如何切换的?

0 L; j8 S2 v/ O& @3 [+ P7 J
答:除用户模式外的其他6种模式称为特权模式,这些模式中,程序可以访问所有系统资源,也可以任意进行处理器模式的切换。处理器模式可以通过软件控制进行切换(直接设置CPSR寄存器的后五位就可以在6种特权模式之间互相切换),也可以通过外部中断或异常处理过程进行切换(例如,在USR模式下,发生中断后切换到IRQ模式)。

' O( O' U- f4 h$ S: D  ], d
2、ARM各个模式之间切换时,上下文的保存哪些是硬件在做?哪些是操作系统在做?
( q" `% H! Y1 T% v% Y& y
答:CPU做的:

! y2 S/ T2 w5 H. U+ s
(1)把返回地址保存到相应模式的lr寄存器中,例如从usr模式切换到irq模式,CPU会将usr模式下的pc值,保存到irq模式下的lr寄存器中。
' l# C; ^* S* a/ `9 n- |- S: h. g
(2)保存CPSR到相应模式的SPSR寄存器中,还是上面的例子,CPU保存usr模式下的CPSR到irq模式下的SPSR中。
0 p3 _# [9 s& B# n/ _) J
(3)将pc设置成相应模式下的某地址值继续执行。
2 a+ N8 ~. P+ O, m% T0 y
操作系统做的(以从模式A切换到模式B为例):
; V% o; V1 L& p7 G0 X2 q- f, b! W
操作系统所做内容需要根据情况而定,因为模式切换不一定伴随着进程之间的切换,有可能从A模式切换到B模式后,CPU执行的是同一个进程,这时不需要操作系统具体做什么。

- `  P# n; _! z3 S8 R) F1 j- M
当模式切换伴随着进程切换时,操作系统需要保存模式切换之前的上下文环境。也就是进程控制块,进程控制块包括标识符、用户可见寄存器、控制和状态寄存器、栈指针等等,这与普通的进程切换类似。

/ Q6 W% `- g8 b  X$ M* ]7 l
作者: qq666888qqw    时间: 2021-5-25 15:24
任意切换模式
作者: shapeofyou888    时间: 2021-5-25 16:37
不错的分享




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2