您的位置:首页 > 其它

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

2018-01-24 17:22 1686 查看
一、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中。
BSP_Int_Init:初始化,在用户程序中调用。

BSP_IntHandler:中断处理函数,被OS_CPU_ExceptHndlr调用.具体的调用流程见下一章。

BSP_IntVectSet:设置中断向量,调用BSP_IntTargetSet设置目标CPU,调用BSP_IntPrioSet设置中断优先级,中断向量表BSP_IntVectTbl注册回调具体的中断处理函数

BSP_IntSrcEn/BSP_IntSrcDis:禁用使能某中断

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函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zynq 7000