03-09-2017 11:52 PM
I'm currently working on a Embedded Linux project using Petalinux Tools and a MPSoC UltraScale+ on a ZCU102 Evaluation Board. Im trying to use the AXI interrupt controller because i have more than 16 interrupts. I have created a Custom IP which generate 10 interrupts, which i connect to the input of an AXI INTC via Concat. When i watch the Interrupt Status Register of the AXI INTC, the interrupts are being catched correctly. I'm trying to write a Device Driver for the Custom IP in order to handle each interrupt. Until now i have only be able to handle the first (of the 10) interrupt (first bit of the ISR). Is there any example of a device driver with more than one interrupt?? Have i to do something special in the driver as the device is connected to the axi INT instead of the GIC??. I have attached my driver to know what i am missing. Thank you in advance!!
03-14-2017 04:23 AM
Is there any reason for the single IP to produce 10 separate interrupts? Are you expecting to handle multiple interrupts at the same time (i.e. different interrupts have different priorities)? A different approach to this is for your IP to only generate a single interrupt, OR'd with the 10 different interrupt signals and then have your driver read a register from the IP to classifiy which interrupt you need to process (i.e. which ISR function that needs to be executed).
I am aware this is not a direct solution, but food for thought.
03-18-2017 08:40 AM
03-18-2017 10:10 PM
Make sure that your custom IP's 10 interrupt signal have correct intr IDs. Interrupt need to be priortize i.e. only one intr need to be registered and serviced at a time.
The AXI INTC to GIC issue should be fixed in next release of tool.
02-08-2018 02:19 AM
I have 10 AXI UART Lite and tried to connect them through an AXI Interrupt Controller (INTC) with single IRQ output to the IRQ_F2P of a Zynq. I'm using Vivado 2017.4 and Petalinux 2017.4. The generated devicetree looks fine with the UART Lite having the INTC as parent and the INTC having the GIC as parent. But it still does not work. Is there any special setting I have to make in the INTC?
08-23-2019 06:24 AM