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

时间:2025-09-12  作者: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中。两者根据不同中断状态寄存器中的标识进行相应的处理。

猜您喜欢


电阻器是基础且关键的元件。立隆(LELON)作为国内知名的电子元器件品牌,其生产的金属膜电阻以高精度、高稳定性,应用于各种电子设备中。本文将围绕“立隆(LELO...
2017-05-22 08:48:30

2021-06-04 09:21:30


警示灯是用于传递警告信息的信号装置,应用于交通、工业及公共安全等领域。其基本定义是,通过发光或闪烁的方式,提醒人们注意潜在的危险或特殊情况。警示灯通常采用鲜艳的...
2009-02-17 00:00:00

采样电阻作为测量电流和电压的重要元件,其性能直接影响系统的稳定性和精度。TMTEC(泰铭)作为国内知名的采样电阻品牌,高品质的产品和完善的服务赢得了众多客户的青...
2018-05-30 15:01:30

肖特基二极管因其低正向压降和快速开关特性,在电子电路中得到了应用。在实际应用中,许多工程师会考虑将多个肖特基二极管并联使用,以提高整体电流承载能力或降低反向恢复...
2025-04-06 01:31:39

微控制器(MCU)在现实世界的另一个用途是在报警系统中。从早上叫你起床的闹钟到火灾警报、防盗警报,甚至是核电站出现问题时发出的警报,微控制器帮助保护我们所有人的...
2023-08-17 10:08:00

保险丝作为电路保护的重要元件,其选型变得尤为关键。Kacon(凯昆)作为知名的保险丝品牌,高品质的产品和可靠的性能受到关注。那么,如何正确选择Kacon凯昆保险...
2022-06-11 15:33:30

电路保护元件的重要性日益凸显。驭舵自恢复保险丝作为智能保护器件,凭借其自动复位的特性,受到众多电子产品制造商的青睐。本文将围绕“驭舵自恢复保险丝体积有哪些规格品...
2025-01-01 07:07:30