Zynq uart软件中断hook的操作过程

时间:2025-06-17  作者:Diven  阅读:0

早期运用的arm芯片规模较小,在芯片上直接有uart的中断服务函数地址寄存器,直接将中断服务函数的地址写入寄存器就搞定了。然后zynq似乎比较复杂,中断也比较复杂。在zynq中有个Scu(snoop control unit窥探控制单元,也是arm所有的)专门控制中断处理。Vivado SDK中提供了scugIC驱动来处理相关的操作。下面具体说一下,中断hook的过程。

Zynq uart软件中断hook的操作过程

XScuGIC_LookupConfig // 找到scugic的定义实体;

XScuGic_CfgInitialize // 初始化scugic实体;

Xil_ExceptionInit() //异常处理初始化

Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_IRQ_INT,

(Xil_ExceptionHandler)XScuGic_InterruptHandler,

pScuGic);

这一步基本是固定的,中断触发之后统一由XScuGic_InterruptHandler先处理,然后在HandlerTable中查找相应的处理函数。这个HandlerTable数组的长度为95个,包含了所有的中断ID。

Xil_ExceptionEnable(); //异常处理使能

XScuGic_Connect( pScuGic,

XPAR_PS7_UART_1_INTR, (Xil_InterruptHandler)ZUartPs_InterruptHandler , (void*)pUart1Inst);

这才是将我们定义的中断服务函数地址映射到HandlerTable中。也可以使用UartPs驱动中包含的中断处理函数。

XScuGic_Enable( pScuGic, XPAR_PS7_UART_1_INTR);

//使能uart对应的中断ID。

XUartPs_SetInterruptMask( pUart1Inst, XUARTPS_IXR_RXOVR | XUARTPS_IXR_TXEMPTY );

这应用程序中开启接收缓冲fifo中断与发送为空中断。

这时uart接收到数据,则会自动跳入中断处理函数ZUartPs_InterruptHandler中。向发送硬fifo中写入数据,在数据发空后,也会跳入中断处理函数ZUartPs_Interrupt Handler中。两者根据不同中断状态寄存器中的标识进行相应的处理。

猜您喜欢

纸杯是常见的饮品容器,按照不同的用途和材料,可以分为多种分类。按用途来看,纸杯可分为热饮杯和冷饮杯。热饮杯通常采用双层设计,能够有效保温,适合盛装咖啡、热茶等;...
2008-02-28 00:00:00

保护电路安全尤为重要。自恢复保险丝凭借其自动断电保护和自动恢复功能,成为电路保护领域的热门选择。作为专业的照明品牌,LIANG MENG 亮盟照明在自恢复保险丝...
2020-09-08 04:52:30


贴片电阻作为基础且关键的电子元件,是不可少的配件。紫泰荆作为一家专业生产贴片电阻的品牌,其产品因稳定的性能和多样的规格受到关注。本文将围绕紫泰荆贴片电阻的大小规...
2015-01-09 18:42:24

现代电子设备中,连接器是非常重要的配件。CONN_9.5X9.5MM_TM是应用于各类电子产品中的连接器,因其独特的设计和性能而受到青睐。本文将深入探讨CONN...
2025-04-22 13:00:37


电子设备中,电容器是重要的元器件。法拉电容和普通电容是两种常见类型。虽然都可以储存电能,但有很多不同。本文将详细介绍的区别。容量大小法拉电容的容量非常大。普通电...
2025-03-26 12:00:03

分流器电阻作为测量电流的重要元件,起着关键作用。SEI(世达柏科技)作为知名的电子元件供应商,其分流器电阻产品因性能稳定、品质优良而受到关注。市场上分流器电阻品...
2012-06-22 02:54:30

电子元器件中,压敏电阻(Varistor)是一种重要的保护元件,能够有效地吸收过电压,保护电路不受损坏。压敏电阻的功能和性能通常用一系列字母符号来表示,这些符号...
2025-03-18 21:30:34

伞袋规格尺寸是多少?这是很多人在购买伞袋时常常会问的问题。伞袋的尺寸通常取决于伞的类型和长度。一般而言,标准的雨伞袋长度在80厘米到100厘米之间,宽度则在15...
2016-06-15 00:00:00