ARM模式:用户和系统

Man*_*hB 8 arm

您能否解释一下系统调用处理时如何更改ARM模式?我听说ARM模式更改只能在特权模式下发生,但是在ARM处于用户模式(非特权模式)的情况下进行系统调用处理时,ARM模式如何变化?

任何人都可以解释用户模式案例的整个行动流程,还有更一般的系统调用处理(特别是ARM模式如何变化)?

提前致谢.

Car*_*rum 11

对于ARM上的系统调用,通常系统调用会导致SWI执行指令.每当处理器执行SWI(软件中断)指令时,它进入SVC特权模式,并跳转到SWI异常处理程序.然后SWI处理程序查看中断的原因(嵌入在指令中),然后执行操作系统程序员决定应该执行的任何操作.其他例外 - 复位,未定义指令,预取中止,数据中止,中断和快速中断 - 都会导致处理器进入特权模式.

文件处理的工作原理完全取决于编写操作系统的人 - 根本没有ARM特定的内容.


old*_*mer 5

您需要获取ARM ARM(架构参考手册)的副本.

http://infocenter.arm.com - > ARM体系结构 - >参考手册 - > ARMv5体系结构参考手册然后下载pdf.

它曾经是ARM世界的单个ARM ARM,但是内核太多并且开始出现分歧,因此它们将旧的ARM拆分为ARMv5 ARM,并为每个主要的ARM处理器系列制作了新的架构参考手册.

在程序员模型章节中,它讨论了模式,它表示您可以在除用户之外的模式之间自由更改.ARM启动代码通常会经历一系列模式更改,以便可以配置堆栈指针等.然后根据需要返回系统模式或用户模式.

在同一章中,请查看"异常"部分,其中介绍了异常以及处理器为每个异常切换到的模式.

执行SWI指令时发生的软件中断异常是实现系统调用的一种方法.处理器处于管理员模式,如果处于拇指模式,则切换到手臂模式.

当然,需要有代码来支持异常处理程序.您需要验证您正在运行的操作系统(如果有),支持的内容以及调用约定等.

并非所有ARM处理器都以这种方式工作 Cortex-M(ARMv7-M)没有相同的模式和相同的异常表等.与您使用ARM(在此级别)的任何时候一样,您需要为您正在使用的系列获取ARM ARM.您需要获得正在使用的核心的TRM(Techincal参考手册),理想情况下是精确的修订,即使ARM将TRM标记为已被芯片制造商购买并使用特定转速的较新版本替换核心和转换之间可能有足够的差异,你会想要正确的手册.