cortex-a8 S5PC100中断机制

来源:互联网 发布:python窗口程序 编辑:程序博客网 时间:2024/05/16 05:07

作者:赵孝强,华清远见嵌入式培训中心讲师。

1.向量中断概述

S5PC100集成了3个向量中断控制器(后文用VIC来表示),采用的是ARM基于PrimeCell技术下的PL192核心,另外还包括了3个TZIC,即针对于TrustZone技术所涉及的中断控制器(后文都用TZIC表示),其核心为SP890。

S5PC100下支持94个中断源,其中TZIC为TrustZone单独设计以了一个安全软件中断接口,它提供了基于安全控制技术的nFIQ中断以及屏蔽来自非安全系统下的所有中断源。以下是S5PC100中断控制器的特点:

●支持94个向量IRQ中断

●灵活的硬件中断优先级

●可编程的中断优先级设置

●支持硬件上的优先级屏蔽

●支持编程上的优先级屏蔽

●内置IRQ/FIQ/软件中断产生器

●内置用于调试方案的寄存器

●原始中断状态寄存器/中断源请求状态寄存器

●支持特权模式下的限制性存取数据

当S5PC100收到来自片内外设和外部中断请求引脚的多个中断请求时,S5PC100的中断控制器在中断仲裁过程后向S5PC100,内核请求FIQ或IRQ中断。中断仲裁过程依靠处理器的硬件优先级逻辑,在处理器这边会跳转到中断异常处理例程中,执行异常处理程序,这个时候VICADDRESS寄存器的值就是仲裁后中断源对应的(ISR)中断处理程序的入口地址。

S5PC100的中断控制器的任务是在有多个中断发生时,选择其中一个中断通过IRQ或FIQ向CPU内核发出中断请求。实际上,最初CPU内核只有FIQ(快速中断请求)和IRQ(通用中断请求)两种中断,其他中断都是各个芯片厂家在设计芯片时,通过加入一个中断控制器来扩展定义的,这些中断根据中断的优先级高低来进行处理,更符合实际应用系统中要求提供多个中断源的要求,除此之外,向量中断控制器比以前的中断方式更加灵活,方便,把判断的任务留给了硬件,使得中断编程更为简洁。

在整个S5PC100的中断向量控制器中,可以看到所有中断源会先进入TZIC仲裁单元,该单元需要配置为是否可通过该中断源到VIC单元,默认下是可以通过的,即默认为非安全模式,这样所有中断直接到VIC下仲裁以及处理。

2.S5PC100中断控制

(1)程序状态寄存器的F位和I位。

如果CPSR程序状态寄存器的F位被设置为1,那么CPU将不接受来自中断控制器的FIQ(快速中断请求),如果CPSR程序状态寄存器的I位被设置为1,那么CPU将不接受来自中断控制器的IRQ(中断请求)。因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清零,并且中断屏蔽寄存器INTMSK中相应的位也要清零。

(2)中断模式(IntSelect)。

Cortex-A8提供了2种中断模式,即FIQ模式和IRQ模式。所有的中断源在中断请求时都要确定使用哪一种中断模式。

3.S5PC100中断源简介

在该芯片中,有三个VIC单元,其中VIC0涵盖了系统,DMA,定时器的中断源,VIC1包含了ARM核心,电源管理,内存管理,存储管理的中断源,VIC2则包含了多媒体,安全扩展等中断源,限于篇幅,这里只是简要的介绍,详细请读者自行查看用户手册。

嵌入式及3G相关资源及学习请点击:嵌入式开发视频 android开发视频 android培训 3G培训 QT培训 QT开发视频 物联网培训 物联网技术视频 嵌入式学习