We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 60425

14.7 EDK - xscugic_example.c does not work for Zynq CPU1


I try to run the xscugic_example.c example from ISE Design Suite 14.7 for CPU1 but it only works for the first interrupt.

If I modify the example to send multiple interrupts the second one never triggers.


There is a bug in the way the trigger is cleared.

The function XScuGic_InterruptHandler() in xscugic_intr.c calls    

XScuGic_CPUWriteReg(InstancePtr, XSCUGIC_EOI_OFFSET, IntID);

This does NOT specify the CPUID (so it is always CPUID = 0  that is CPU0).

The workaround is to add the following line to your DeviceDriverHandler() for CPU1 :
       *(u32 *)(0xf8f00110) = ( 0x400 | INTC_DEVICE_INT_ID );

This will clear the interrupt specifying CPU1.

The issue has been resolved & verified in Vivado Design Suite release 2014.1.

The fix can be found in the 2014.1 build with the scugic_v2_0 driver.

AR# 60425
Date 05/19/2014
Status Active
Type General Article
  • Zynq-7000
  • ISE Design Suite - 14.7
Page Bookmarked