1

Raspberry PiのGPIOピンに接続されたov7670 CMOS 要素用のカーネルv4l2ドライバーを作成しています。3 つのIRQライン ( PixelHref、およびVsync )をセットアップしました。

これが私がそれらを要求する方法です:

ret = request_irq(  PX_IRQ, 
                    ov7670rpi_pixel_interrupt,
                    irq_flags,
                     "ov7670rpi_px",
                     ov7670rpi_pixel_interrupt);

ret = request_irq(  HREF_IRQ, 
                    ov7670rpi_href_interrupt,
                    irq_flags,
                     "ov7670rpi_href",
                     ov7670rpi_href_interrupt);

ret = request_irq(  VSYNC_IRQ,
                    ov7670rpi_vsync_interrupt,
                    irq_flags,
                     "ov7670rpi_vsync",
                     ov7670rpi_vsync_interrupt);

これでうまくいきます:

#cat /proc/interrupts
           CPU0       
3:       4168   ARMCTRL  BCM2708 Timer Tick
9:          0   ARMCTRL  ov7670rpipx
10:          0   ARMCTRL  ov7670rpihref
11:          0   ARMCTRL  ov7670rpivsync
32:      68523   ARMCTRL  dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
52:          0   ARMCTRL  BCM2708 GPIO catchall handler
65:        543   ARMCTRL  ARM Mailbox IRQ
66:          2   ARMCTRL  VCHIQ doorbell
75:          1   ARMCTRL
77:       3439   ARMCTRL  bcm2708_sdhci (dma)
79:          0   ARMCTRL  bcm2708_i2c.0, bcm2708_i2c.1
80:          0   ARMCTRL  bcm2708_spi.0
83:         21   ARMCTRL  uart-pl011
84:       7436   ARMCTRL  mmc0
FIQ:              usb_fiq
Err:          0

いいね。

これは、IRQ を無効にする方法です。

/* Disable Interrupts */
free_irq(PX_IRQ, ov7670rpi_pixel_interrupt);
free_irq(HREF_IRQ, ov7670rpi_href_interrupt);
free_irq(VSYNC_IRQ, ov7670rpi_vsync_interrupt);

私も試しました:

/* Disable Interrupts */
free_irq(PX_IRQ, NULL);
free_irq(HREF_IRQ, NULL);
free_irq(VSYNC_IRQ, NULL);

どちらの方法でも、モジュールがアンロードされると、 /proc/interruptsにアクセスできなくなります。しようとするcat /proc/interruptsと、システムがロックされます。

4

1 に答える 1