2 - ZYNQ中断系统

1 中断系统架构

Zynq中断系统由三部分组成,即中断源、中断控制器和处理器核心,如下图所示。

在这里插入图片描述

1.1 中断源

中断源有三种:

  1. SGI
    (1)Software Generated Interrupts,即软件生成中断;
    (2)由软件写入通用中断控制器(GIC)的寄存器而触发;
    (3)在多核处理器系统中用于实现各种通信和同步机制,如任务调度、锁机制、屏障同步等;
    (4)数量16个;
  2. PPI
    (1)Private Perpheral Interrupts,即私有外设中断;
    (2)是CPU的私有外设中断,每个CPU都有一组独立的PPI中断,用于处理来自特定外设的中断请求;
    (3)包括全局计时器、专用看门狗计时器、专用计时器以及从PL端输入的FIQ/IRQ等中断源;
    (4)数量每个CPU核心各5个;
  3. SPI
    (1)Shared Peripheral Interrupts,即共享外设中断;
    (2)是由PS和PL端的共享外设产生的中断;
    (3)用于处理来自多个外设的中断请求,如DMA、UART、Timer、IIC、SDIO等,确保这些外设能够及时向CPU报告状态变化或请求服务;
    (4)数量60个(PS端44个+PL端16个)。

1.2 中断控制器

中断控制器GIC(Generic Interrupt Controller)位于中断源和处理器核心之间,是用于管理中断的核心组件。中断控制器GIC通过集中管理中断请求,确保CPU能够高效地处理来自各个外设和内部组件的中断信号,其功能主要包括:

  1. 中断接收:GIC接收来自PS(Processing System)和PL(Programmable Logic)端的多个外设和内部组件的中断请求,这些中断请求包括软件生成的中断(SGI)、CPU私有外设中断(PPI)和共享外设中断(SPI);
  2. 中断仲裁:当多个中断请求同时发生时,GIC会根据中断的优先级进行仲裁,确保高优先级的中断能够优先得到处理,优先级可以通过软件编程进行配置;
  3. 中断分发:仲裁完成后,GIC会将中断请求分发到指定的CPU进行处理;对于SPI中断,GIC可以将其分发到一个或两个CPU中的任何一个,而对于SGI和PPI中断,它们通常被分发到特定的CPU进行处理;
  4. 中断管理:GIC提供了丰富的中断管理功能,包括中断的使能、禁用、屏蔽、优先级配置等,这些功能允许开发者根据系统的实际需求对中断进行灵活的配置和管理。

中断控制器GIC结构如下图所示,ICC(Interrupt Controller CPU)连接SGI和PPI,ICD(Interrupt Controller CPU))连接SPI。

在这里插入图片描述

2 中断ID

每个中断源在中断控制器GIC中都被分配了一个唯一的ID号,即中断ID。这个ID号用于在中断处理过程中唯一地标识和区分不同的中断源。

2.1 软件生成中断SGI的ID

在这里插入图片描述

2.2 私有外设中断PPI的ID

在这里插入图片描述

2.3 共享外设中断的ID

在这里插入图片描述
在这里插入图片描述

3 中断初始化

中断的程序流程如下图所示,其中前四步为固定流程,因为这四步主要是用来初始化通用中断控制器。因为无论是SGI、PPI还是SPI,这三个中断类型都连接着GIC,因此前四步初始化的便可以固定下来。

在这里插入图片描述

初始化代码如下所示:

	//
	int Status;
	XScuGic_Config *IntcConfig; /* Instance of the interrupt controller */

	/*
	 * step1. 初始化中断控制器
	 */
	IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID);
	if (NULL == IntcConfig) {
		return XST_FAILURE;
	}

	Status = XScuGic_CfgInitialize(GicInstancePtr, IntcConfig, IntcConfig->CpuBaseAddress);
	if (Status != XST_SUCCESS) {
		return XST_FAILURE;
	}

	/*
	 * step2. 初始化异常处理
	 */
	Xil_ExceptionInit();

	/*
	 * step3. 注册异常处理回调函数
	 */
	Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler, GicInstancePtr);

	/*
	 * step4. 使能异常处理
	 */
	Xil_ExceptionEnable();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UG585-Zynq-7000-TRM是一份关于Xilinx Zynq-7000 SoC处理器的技术参考手册。Zynq-7000 SoC处理器是一款配备ARM Cortex-A9双核处理器和Xilinx可编程逻辑部分(PL)的可扩展平台,旨在为嵌入式系统开发者提供卓越的灵活性和可编程性。 TRM代表Technical Reference Manual(技术参考手册),其中包含了该处理器的体系结构和功能特性的详细描述,包括处理器内部的各种模块、外设、总线结构等等。该手册的主要目的是为开发者提供全面的指导和支持,从而加速其系统设计和开发应用,减少错误和风险。 UG585-Zynq-7000-TRM手册的内容包括Zynq-7000的基本特征、处理器硬件和软件架构、可编程逻辑PL和PS之间的通信、外设接口和寄存器映射、中断控制等内容。开发者可以根据手册中的详细说明,了解Zynq-7000的构成和功能,从而基于此设计和实现自己的应用。 总之,UG585-Zynq-7000-TRM手册是一份非常重要的技术参考资料,为开发者提供全面的指导和支持,促进了Zynq-7000处理器的应用和拓展,也为未来的嵌入式系统设计提供了参考和借鉴。 ### 回答2: UG585是Xilinx公司发布的Zynq-7000系列技术手册,全称为“Zynq-7000 All Programmable SoC Technical Reference Manual”。Zynq-7000系列是Xilinx公司推出的一款功能强大的FPGA芯片,集成了双核ARM Cortex-A9处理器和可编程逻辑资源,支持高性能中间件、操作系统和外围设备的支持。该手册详细介绍了Zynq-7000系列SoC的架构、功能、性能、测试和验证、软件和硬件开发等方面的知识。他对于学习、使用和开发Zynq-7000 SoC具有非常重要的意义,使得开发人员能够深入了解这个芯片的细节,掌握它的特性和功能,以便更加高效地使用它进行开发。如果你想要学习和使用Zynq-7000 SoC,UG585是一个非常重要的参考文献,值得认真阅读和研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值