天天看点

arm中断分析

中断向量表

在跑裸机程序时候在程序的开始位置放置就是中断向量表

0x0   复位

0X4  Undef

0x8  SWI

.

.

.

0X18 外部中断请求 IRQ

0x1c 快速中断请求  FIQ

这些中断的实现都是在UBOOT或者是bootloder的代码里面实现的

进入到内核操作系统之后 内核或从新再建立一个中断向量表,当然地址也可以自己配置可以是从0开始也可以不是

主要是在trap_init()函数里面实现,他是把处理中断的函数拷贝到对应位置,当中断出现的时跳转到对应位置去处理

当然中断的处理大概有如下几个步骤:

1 中断发生

2 cpu发生中断跳到异常处理函数如后

3  保存被中断的现场

     执行中断处理函数

     恢复

大致就是这样,本文重点是:中断向量表是由bootloader 和kernel各自提供,以及放置的位置。当然对中断分类有所了解,一般在写程序用到的中断是SWI或者是IQR,对应IRQ中断如何添加IRQ中断的处理函数也是常用到的。

继续阅读