07-23-2017 02:37 PM
I have been working toward a minimal working project for the ZedBoard (Zynq7) in which I generate PL->PS interrupts and handle them in a kernel module in Linux. So far I've had no luck in seeing my interrupts, so I'd like to ask for help in case I'm doing something wrong.
I've tried several variations of hardware (including something like this with pushbuttons: https://www.xilinx.com/support/answers/58942.html), but my simplest hardware is just a Zynq block with the ZedBoard preset, PL-PS interrupts enabled, and a slow FCLK connected to each of the 16 IRQ lines via the concat IP.
I generate and export my hardware with Vivado, then load it into PetaLinux. I use PetaLinux build and package everything, then boot. My driver happily loads, but it never notifies me of any interrupts, and when I check /proc/interrupts, the interrupt count always stays at 0 for my IRQ. I've tried offsetting the IRQ by 32 in my module code to no effect.
Less importantly since I'm not using the Xilinx SDK directly (since I'm using a PetaLinux workflow), I've tried opening my project in the SDK and looking for the xparameters.h file I've seen mentioned, but I'm not seeing it anywhere. Am I perhaps missing a step, or should the header file be generated when I export my hardware from Vivado?
Thanks in advance for any assistance.
07-23-2017 03:41 PM
@natew Perhaps you should try a standalone application first and go from there.
Could you try this example?
07-23-2017 09:10 PM
08-10-2017 07:42 AM
First I would suggest you to drive the interrupt in standalone application to check if there is hardware problem.
Then you can try to create a module template according to the section of "Steps to Add Custom Modules" in UG1144.
It can generate an simple driver template which has interrupt registration inside.
I have done similar test before on an old version of PetaLinux to register a custom interrupt to Linux. Not sure if the template is the same.