Raspberry PiのGPIOピンに接続されたov7670 CMOS 要素用のカーネルv4l2ドライバーを作成しています。3 つのIRQライン ( Pixel、Href、および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
と、システムがロックされます。