赞
踩
ZYNQ和STM32等嵌入式的操作系统非常相似,但由于PL端的硬件可以自己编程,所以在中断信号的触发方面会有些区别。这篇文件将介绍一个最简单但完整的中断相应过程。
PL-PS Interrupt Ports是指从Zynq的可编程逻辑(PL)发出并被处理系统(PS)接收的中断信号。这些中断使得PL可以通知PS某些事件已经发生或者需要注意的情况。
在Vivado设计工具中,开发者可以连接不同的硬件模块产生的中断到这些port上,并且配置信号到PS端的映射。
PS-PL Interrupt Ports是由处理系统(PS)发出并由可编程逻辑(PL)部分接收的中断信号。这些中断可以用于PS通知PL执行特定操作或触发某些事件。
FIQ
是 "Fast Interrupt Request" 的缩写,是一种用于高优先级中断的信号。在Vivado中配置PS到PL的中断意味着你在PS端生成中断信号,并设置合适的逻辑路径以便迅速地导向PL端需要处理中断的逻辑单元。
配置这些Ports时,开发者需要确保PL和PS的中断系统逻辑正确连接,并在系统中耦合相关的软件和硬件部分。例如,在PS端写对应的驱动程序和中断服务例程来响应PL发出的中断,以及在PL端对PS发出的中断信号编写适当的硬件逻辑。
首先需要在ZYNQ的IP核配置中断,比如这里选择了PL-PS的IRQ_P2F。
这里一个重要的信息是ID号,之后在PS端编程的时候要用。 我这里用两个信号线连接上了其中的两个端口[1:0],对应的ID号也就是62和61。
然后我们看看PS端是怎么操作和这个联系起来的。
下面是一个具体配置中断的代码,调用的都是自动生成的函数,这里不懂的可以去看看ZYNQ从入门到不放弃。
- int IntcInitFunction(u16 DeviceId)
- {
- XScuGic_Config *IntcConfig;
- int status;
-
- // 这一步是对中断的初始化,首先通过设备ID去看看我们生成的硬件里面有没有中断
- IntcConfig = XScuGic_LookupConfig(DeviceId);
- status = XScuGic_CfgInitialize(&INTCInst, IntcConfig, IntcConfig->CpuBaseAddress);
- if(status != XST_SUCCESS) return XST_FAILURE;
-
-
- // 这一步是注册特定异常的处理程序,前两个输入的参数是自动生成的,最后一个是我们使用的中断实例的地址
- Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,
- (Xil_ExceptionHandler)XScuGic_InterruptHandler,
- &INTCInst);
- Xil_ExceptionEnable();
-
- //这一步把中断号和中断函数连接起来,这里的中断号SW1_INT_ID设置为61,SW2_INT_ID为62,连接的函数为SW_intr_Handler。
- status = XScuGic_Connect(&INTCInst,
- SW1_INT_ID,
- (Xil_ExceptionHandler)SW_intr_Handler,
- (void *)1);
- if(status != XST_SUCCESS) return XST_FAILURE;
-
- status = XScuGic_Connect(&INTCInst,
- SW2_INT_ID,
- (Xil_ExceptionHandler)SW_intr_Handler,
- (void *)2);
- if(status != XST_SUCCESS) return XST_FAILURE;
-
-
- // 这里对中断的响应类型进行设置,上升沿触发信号
- IntcTypeSetup(&INTCInst, SW1_INT_ID, INT_TYPE_RISING_EDGE);
- IntcTypeSetup(&INTCInst, SW2_INT_ID, INT_TYPE_RISING_EDGE);
-
- // 对中断进行使能
- XScuGic_Enable(&INTCInst, SW1_INT_ID);
- XScuGic_Enable(&INTCInst, SW2_INT_ID);
-
- return XST_SUCCESS;
- }
当时学的时候,只知道一会配置这个函数一会配置那个函数,非常的迷惑,特别是PL端的信号线怎么和最后的响应函数联系起来的。所以写这篇文章梳理一下,希望帮助到和我有一样问题的小伙伴。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。