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

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

猜您喜欢

据麦姆斯咨询介绍,住友精密(Sumitomo Precision Products)是一家全球领先的高精度工业产品制造商,近期推出旗下MEMS Infinity...
2024-01-22 10:01:00

贴片电阻,这种电子元件中很重要的小小身影,其性能很大程度上取决于内部的介质材料。那么,贴片电阻究竟使用了哪些类型的介质呢?常见的贴片电阻介质主要分为厚膜和薄膜两...
2024-11-29 10:25:50


电容是电子元件中常见的器件。的内部结构复杂,影响其性能。本文将简单介绍电容的内部结构。电容的基本组成电容内部主要有三部分。分别是电极、介质和外壳。电极一般是金属...
2025-03-26 17:30:02

贴片电阻上的「18C」并非直接表示阻值大小,而是代表其尺寸规格为0603。0603表示该电阻的长为0.06英寸(约1.6毫米),宽为0.03英寸(约0.8毫米)...
2024-11-26 11:30:06

压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定的规律将压力信号转换成可用的输出的电信号的器件或装置。通常由压力敏感元件和信号...
2023-09-04 16:23:00


你是否还在为传统开关电源的复杂性和高成本而烦恼?现在,一种革命性的电源解决方案来了——全新一代无芯片开关电源!颠覆了传统开关电源的设计理念,无需复杂的芯片控制,...
2024-10-10 00:00:00

离子风机是利用静电原理来产生风力的设备,通过离子化空气中的分子,改变空气的电荷状态,从而实现空气的运动。离子风机的工作原理主要基于高压电场的作用,能够有效地产生...
2019-07-20 00:00:00

量油尺是常用的测量工具,应用于油罐、船舶及其液体储存设备的油量检测。量油尺的规格和尺寸通常因使用场景和需求而异。一般而言,量油尺的长度从1米到6米不等,常见的尺...
2010-05-03 00:00:00