Xilinx - yszheda/wiki GitHub Wiki
BSP
Interrupt
-
Problem understending interrupt handling example in The Zynq Book
-
How to change the interrupt trigger type to "Rising/Falling edge triggered"?
\ps7_cortexa9_0\libsrc\standalone_v5_2\src\asm_vectors.s
:
.globl _vector_table
.section .vectors
_vector_table:
B _boot
B Undefined
B SVCHandler
B PrefetchAbortHandler
B DataAbortHandler
NOP /* Placeholder for address exception vector*/
B IRQHandler
B FIQHandler
IRQHandler: /* IRQ vector handler */
stmdb sp!,{r0-r3,r12,lr} /* state save from compiled code*/
#ifdef __ARM_NEON__
vpush {d0-d7}
vpush {d16-d31}
vmrs r1, FPSCR
push {r1}
vmrs r1, FPEXC
push {r1}
#endif
#ifdef PROFILING
ldr r2, =prof_pc
subs r3, lr, #0
str r3, [r2]
#endif
bl IRQInterrupt /* IRQ vector */
#ifdef __ARM_NEON__
pop {r1}
vmsr FPEXC, r1
pop {r1}
vmsr FPSCR, r1
vpop {d16-d31}
vpop {d0-d7}
#endif
ldmia sp!,{r0-r3,r12,lr} /* state restore from compiled code */
subs pc, lr, #4 /* adjust return */
\ps7_cortexa9_0\libsrc\standalone_v5_2\src\vectors.c
:
typedef struct {
Xil_ExceptionHandler Handler;
void *Data;
} XExc_VectorTableEntry;
/*****************************************************************************/
/**
*
* This is the C level wrapper for the IRQ interrupt called from the vectors.s
* file.
*
* @param None.
*
* @return None.
*
* @note None.
*
******************************************************************************/
void IRQInterrupt(void)
{
XExc_VectorTable[XIL_EXCEPTION_ID_IRQ_INT].Handler(XExc_VectorTable[
XIL_EXCEPTION_ID_IRQ_INT].Data);
}
Device Tree
Timer
AXI
IP core
- Vivado IP集成器(IPI)基本设计流程
- Vivado IP集成器(IPI)必知必会IP核
- zc702-自定义AXI-IP核实验
- Creating a custom IP block in Vivado
- Creating a custom AXI-Streaming IP in Vivado