码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-01-24 18:03:55      阅读:972      评论:0      收藏:0      [点我收藏+]

标签:mic   向量   reset   接口   -o   lob   zynq   alt   优先级   


一、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函数


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

标签:mic   向量   reset   接口   -o   lob   zynq   alt   优先级   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!