Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12589 Discussions

Interrupt handling problem using linux with DE1_SoC cyclone V

Altera_Forum
Honored Contributor II
2,176 Views

Hi 

 

 

We are using cyclon V on DE1_SoC board to write a interrupt handling module. We used the demo from Cornell's web site (http://people.ece.cornell.edu/land/courses/ece5760/de1_soc/hps_peripherials/index.html), where they provide a SD card image named DE1-SoC-UP-Linux.img. The demo works well but we met problems as follows: 

(1)We compiled this demo with Altera's latest linux kernel, and the resulted interrupt module can be inserted into linux kernel, but it can NOT receive any interrupt. The result is shown as: 

root@socfpga:~/interrupt# cat /proc/interrupts CPU0 CPU1 16: 0 0 GIC-0 199 Level timer 17: 5221 5137 GIC-0 29 Level twd 22: 0 0 GIC-0 136 Level ffe01000.dma 23: 0 0 GIC-0 207 Level ff706000.fpgamgr 24: 208 0 GIC-0 194 Level serial 32: 0 0 GIC-0 190 Level ffc04000.i2c 33: 0 0 GIC-0 191 Level ffc05000.i2c 36: 5777 0 GIC-0 171 Level dw-mci 37: 45 0 GIC-0 160 Level ffb40000.usb, ffb40000.usb, dwc2_hsotg:usb1 38: 11 0 GIC-0 152 Level eth0 73: 0 0 gpio-dwapb 3 Edge pb_handler IPI0: 0 0 CPU wakeup interrupts IPI1: 0 0 Timer broadcast interrupts IPI2: 572 1145 Rescheduling interrupts IPI3: 2 1 Function call interrupts IPI4: 0 0 CPU stop interrupts IPI5: 0 0 IRQ work interrupts IPI6: 0 0 completion interrupts Err: 0  

And with the demo SD card, the result is 

CPU0 CPU1 16: 0 0 GIC-0 199 Level timer 17: 53664 52132 GIC-0 29 Level twd 22: 0 0 GIC-0 136 Level ffe01000.dma 23: 0 0 GIC-0 207 Level ff706000.fpgamgr 24: 1022 0 GIC-0 194 Level serial 32: 0 0 GIC-0 190 Level ffc04000.i2c 33: 0 0 GIC-0 191 Level ffc05000.i2c 36: 25382 0 GIC-0 171 Level dw-mci 37: 45 0 GIC-0 160 Level ffb40000.usb, ffb40000.usb, dwc2_hsotg:usb1 38: 302 0 GIC-0 152 Level eth0 73: 0 0 gpio-dwapb 3 Edge pb_handler IPI0: 0 0 CPU wakeup interrupts IPI1: 0 0 Timer broadcast interrupts IPI2: 395 27078 Rescheduling interrupts IPI3: 1 3 Function call interrupts IPI4: 0 0 CPU stop interrupts IPI5: 0 0 IRQ work interrupts IPI6: 0 0 completion interrupts  

It can be found that the interrupt controller is different, and a controller named "gpio-dwapb" is used in my project.  

 

 

Is it the reason it not work? And how to fix this problem? How to assign the correct interrupt controller, for example the GIC. 

 

 

(2)I have repalced the .dtb and .rbf files in the demo SD card with mine, it still works well. 

The kernel file in this demo SD card is uImage, I transform my zImage to uImage with command  

mkimage -A arm -O Linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "Linux kernel Image by embedclub" -d zImage uImage 

After replacing with my uImage, the system can' not boot up, why? 

 

 

Thanks.
0 Kudos
1 Reply
SimoneBo
Beginner
1,128 Views

Hello,

I'm having the same issue with 4.14 kernel.

I'm using an IP block on FPGA registered on interrupt n°73 and a Userspace driver as interface. 

If I type "cat /proc/interrupts" it returns 

..             ...               ...                 .....                 ....                .....   

73:         xxx                   0                  gpio-dwapb 3 Edge "my_uio_driver "

..             ...               ...                 .....                 ....                .....

 

with xxx different from 0, but blocked.

I also try to make an IP which rise an interrupt (on 73) periodically but the number of interrupt is still blocked to initial value different from 0.

 

Have you find a solution?

 

Thanks in advance,

Simone

0 Kudos
Reply