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函数
详见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函数
相关文章推荐
- 嵌入式系统学习——STM32之UCOS-III中断和时间管理及软件定时器
- 在ucos系统上使用USART1串口中断函数处理串口数据
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- ARMv8-中断处理接口
- UCOS 中的中断处理
- Cortex-M3的PendSV中断以及uCOS系统一点思考
- SYD8801代码解析二【复位等特殊系统行为要等待硬件响应】【协议栈上报事件处理】【时钟源准确度的优化】【修改蓝牙名称】【设置中断优先级】
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- uCOS2中的中断处理过程
- UCOSIII 系统内部任务
- 17. OP-TEE中的中断处理(三)------系统IRQ事件的处理
- 系统休眠(System Suspend)和设备中断处理
- STM32之系统中断处理
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- linux中断子系统(一) - 注册系统中断处理函数
- 异常和中断处理 ARM系统开发者指南 Chapter9-1
- 秒杀系统:并发队列 接口设计 并发请求数据安全处理
- ARM Linux对中断的处理--中断管理系统的初始化
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- ucos-iii学习之关中断