ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux arm32中断子系统学习总结(一)--- 预备知识

2022-06-25 16:34:09  阅读:143  来源: 互联网

标签:fiq 中断 寄存器 arm32 模式 --- 处理器 linux CPSR


一、预备知识

  中断处理与cpu体系结构强相关,比如x86处理器与arm处理器对中断的处理方式是不一样的;本文对arm32的中断子系统进行分析,因此首先需要熟悉一些arm32体系结构的知识。

1.1 arm32处理器的运行模式

处理器模式

描述

用户模式(User, usr)

正常程序执行的模式

快速中断模式(FIQ, fiq)

用于高速数据传输和通道处理

外部中断模式(IRQ, irq)

用于通道的中断处理

特权模式(Supervisor, sve)

供操作系统使用的一种保护模式

数据访问中止模式(Abort, abt)

用于虚拟存储及存储保护

未定义指令中止模式(Undefined, und)

用于支持通过软件仿真硬件的协处理器

系统模式(System, sys)

用于运行特权级的操作系统任务

  

  如上表所示,ARM32处理器共有7种运行模式,除用户模式外,其他6种称为特权模式,在特权模式下,程序可以访问所有的系统资源,也可以任意进行处理器模式切换(在用户模式下,无法进行模式切换)。其中,除系统模式外,其他5种特权模式又称为异常模式。

       处理器模式可以通过软件修改状态寄存器CPSR进行切换,处理器也可以通过响应外部中断,自动修改CPSR寄存器进行工作模式切换。

1.2 arm32处理器的寄存器

  Arm32处理器每一种运行模式都有一组寄存器,这些寄存器包括15个通用寄存器(R0~R14)、一个或两个状态寄存器以及程序计数器(PC);在所有的寄存器中,有些是各模式共用的物理寄存器,有些是各模式自己拥有的独立的物理寄存器,因此,在进行模式切换的时候,需要对各模式共用的物理寄存器进行上下文保存,以便现场恢复。各模式下的寄存器如下表所示。

用户模式

系统模式

特权模式

中止模式

未定义指令模式

外部中断模式

快速中断模式

R0

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R6

R7

R7

R7

R7

R7

R7

R7

R8

R8

R8

R8

R8

R8

R8_fiq

R9

R9

R9

R9

R9

R9

R9_fiq

R10

R10

R10

R10

R10

R10

R10_fiq

R11

R11

R11

R11

R11

R11

R11_fiq

R12

R12

R12

R12

R12

R12

R12_fiq

R13

R13

R13_svc

R13_abt

R13_und

R13_irq

R13_fiq

R14

R14

R14_svc

R14_abt

R14_und

R14_irq

R14_fiq

PC

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

 

 

SPSR_svc

SPSR_abt

SPSR_und

SPSR_irq

SPSR_fiq

  一般,R13作为栈指针SP,R14作为lr,存放当前子程序的返回地址。

1.3 中断控制器GIC

       在arm体系结构中,所有的中断都是统一汇聚到中断控制器GIC,然后,由GIC统一处理分发给各个cpu;这个中断控制器GIC是ARM公司设计的,目前有V1~V4这几个版本,本文分析的是GIC-V2。

1.4 arm32处理器异常中断的处理方法

       Arm32处理异常使用异常向量表的机制。针对arm32体系中的7种异常中断(复位、未定义指令、软件中断、指令预取中止、数据访问中止、外部中断请求以及快速中断请求),在内存中需要创建一张异常向量表(异常向量表的存放地址可以通过CP15协处理器的寄存器指定),表的每一项对应一种异常中断的处理函数;那么,当cpu检测到中断发生时,就会自动将处理器的工作模式切换到该异常模式(比如IRQ中断,处理器会自动将CPSR拷贝到SPSR_IRQ,然后,修改CPSR的相应bit,进入IRQ中断模式),然后将程序计数器PC指向对应的异常向量。

 

参考资料:《ARM体系结构与编程》

 

标签:fiq,中断,寄存器,arm32,模式,---,处理器,linux,CPSR
来源: https://www.cnblogs.com/lztutumo/p/16411859.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有