zynq7000 中断系统及在UCOSIII中的中断处理接口

一、zynq7000中断处理概述

详见zynq7000的用户指导手册UG585相关章节。

zynq7000的中断系统整体架构如下图所示:

中断源有三种类型的中断:

  • 私有外设中断PPI:每个CPU有5个PPI,使用中断ID 27~31.
  • 共享外设中断SPI:共60个
  • 软件产生中断SGI:每个CPU都可以使用SGI中断自身、其他CPU,或两个CPU,各自16个SGI,使用中断ID 0-15.

GIC集中管理来自PS和PL的中断,包括使能、禁用、掩码、优先级、发送到不同的CPU.zynq的GIC基于ARP GIC架构V1.0

中断控制器架构如下图所示:

二、ucosIII对zynq7000的中断处理接口

见micrum官方提供工程的BSP,主要接口函数在bsp_int.c中。

  1. BSP_Int_Init:初始化,在用户程序中调用。
  2. BSP_IntHandler:中断处理函数,被OS_CPU_ExceptHndlr调用.具体的调用流程见下一章。
  3. BSP_IntVectSet:设置中断向量,调用BSP_IntTargetSet设置目标CPU,调用BSP_IntPrioSet设置中断优先级,中断向量表BSP_IntVectTbl注册回调具体的中断处理函数
  4. BSP_IntSrcEn/BSP_IntSrcDis:禁用使能某中断
  5. BSP_SGITrig:触发软件中断

三、中断处理整体流程

BSP中启动代码(asm_vector.s)里定义了异常向量表

.globl Reset_Handler

.globl Vectors

.globl OS_CPU_ARM_ExceptUndefInstrHndlr

.globl OS_CPU_ARM_ExceptSwiHndlr

.globl OS_CPU_ARM_ExceptPrefetchAbortHndlr

.globl OS_CPU_ARM_ExceptDataAbortHndlr

.globl OS_CPU_ARM_ExceptIrqHndlr

.globl OS_CPU_ARM_ExceptFiqHndlr

当有异常发生时,将进入相应的异常处理函数。整个调用流程如下:

OS_CPU_ARM_ExceptIrqHndlr-》OS_CPU_ARM_ExceptHndlr-》OS_CPU_ARM_ExceptHndlr_BreakNothing->OS_CPU_ExceptHndlr-》BSP_IntHandler-》注册的isr函数

原文地址:http://blog.51cto.com/236360/2064717

时间: 2024-08-03 08:35:31

zynq7000 中断系统及在UCOSIII中的中断处理接口的相关文章

Linux中断(interrupt)子系统之一:中断系统基本原理

这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层.内核版本基于3.3.虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变. /*****************************************************************************************************/ 声明:本博内容

单片机的中断系统

中断概念 正常的工作过程被外部的事件打断了,EX 你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书. 中断源 引起中断的事件称之为中断源,51中一共有5五个:两个外部中断,两个计数/定时器中断,一个串行口中断. 中断优先级与嵌套 当两个中断同时产生时,就要考虑优先级. 当一个中断已发生,又一个中断产生了,又要考虑另一种嵌套优先级. 中断的响应过程 保护断点:保存下面将要执行的指令地址送人堆栈,以便中断处理完之后回到原来地方继续执行 寻找中断入

Linux中断(interrupt)子系统之一:中断系统基本原理【转】

转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层.内核版本基于3.3.虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变. /***************************************************

51单片机中断系统

51中断系统 1.什么是中断 中断是CPU在执行程序是不需要管中断源的状态,当中断源满足中断触发条件时CPU再去进行终端处理 2.中断源 80C51共五个中断源分别是两个外部中断源:INT0.INT1,两个定时中断源T0.T1,一个串行口中断源 每个中断源对应着一个中断入口地址 中断源 入口地址 外部中断源INT0 0003H 定时器T0 000BH 外部中断源INT1 0013H 定时器T1 001BH 串行口中断 0023H 3.中断控制 3.1.     定时控制寄存器TCON 控制对象

【CC2530入门教程-03】CC2530的中断系统及外部中断应用

第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件:中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行. 这种程序在执行过程中由于外界的原因而被中间打断的

TMS320F28335项目开发记录9_28335之中断系统

28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统.C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI.定时器1和定时器2分别使用中断13和14.这样还有12个中断都直接连接到外设中断扩展模块PIE上.说的简单一点就是PIE通过12根线与28335核的12个中断线相连.而PIE的另外一侧有12*8根线分别连接到外设,如AD.SPI.EXINT等等. 这样PIE共管理12*8=96个外部中断.这12组大中断由28335核的中断寄存器IER来控制,即IER确

嵌入式系统在工业控制中的应用

摘 要:工业控制是嵌入式系统的应用的重要领域,Linux 系统是嵌入式系统开发的有力工具,本文主要利用Linux系统来具体实现一个嵌入式工业控制系统.同时,所讨论的实时系统的研究,为在一个系统中同时支持多种实时调度方法提供了可能性. 正文:嵌入式技术是21世纪最有生命力的新技术之一,目前已经广泛应用于社会生活的各个方面.嵌入式系统的应用与开发则是当今计算机行业发展的一个热点.现今嵌入式软件的应用与开发的领域主要有:国防.移动通信.电子.办公自动化.机/车顶盒.掌上电脑.手机软件.工业控制.信息家

uCOS-iii 中定义的一些常量

uCOS-iii 中定义的一些常量 uCOS-iii 中有许多宏定义的量,这些量不需要全部记住是什么意思,因为在阅读代码的时候可以选中变量或宏定义然后右键查看定义,就可以知道它代表的什么意思.但是如果知道什么样的变量是大概是什么含义,这样会在阅读代码的时候很流畅.这是我第一天阅读代码的时候遇到的一些宏定义: 第一种是yes和no类型的:常用的TRUE,YES,ENABLE,ACTIVE,VALID,ON,SET,OK都是1的意思,反之则是0: #define DEF_FALSE 0u #defi

Nios II 系统从EPCS器件中启动的设置过程

先Reset Vector EPCS Exception Vector Ram工程Program memory ,Read-only data memory...均为RAM.Hardware Image选择 EPCS编译.编译:先把POF文件下载到EPCS中.放到最底层后通过FLASH PROGRAMER 将工程和.SOF文件下载到EPCS中复位启动即可. Nios II 系统从EPCS器件中启动的设置过程,布布扣,bubuko.com