[Suzaku:01590] SZ410 FPGA側で発生させた割り込み信号がlinux側で認識できない件

Miyamoto email@hidden
2009年 8月 17日 (月) 15:30:01 JST


アーツテックラボの宮本です。
お世話になります。

SZ410とスターターキットを使用し、
ボタンを押すと割り込み信号が発生するように回路を組みました。

割り込み信号が発生している事は、
FPGA側でCのプログラムを組んで動作させる事で確認しました。
(割り込み信号で呼び出される関数内でLEDをトグルさせて確認)

上記のFPGAをSPIwriterで書き込み、
xparameters_sz410.hを差し替えてカーネルをmakeしてイメージの書き換えを行いました。

FPGA側の設定で割り込み信号がIRQ3になっているので、
linux側で作成したデバイスドライバのインストール時にirq=3でrequest_irq関数を実行するようにしました。
(IRQ番号はxparameters_sz410.hで確認)

デバイスドライバは/var/tmpにftp送信し、
insmodでロードしています。

insmod後に/proc/interruptsを見ると、下記のように表示されます。
           CPU0
  0:        141  Xilinx Interrupt Controller Level     eth0
  1:        304  Xilinx Interrupt Controller Edge      uartlite
  3:          0  Xilinx Interrupt Controller Level     sync
BAD:          0

3に割り込みが入る事を期待しているのですが、ボタンを押しても変化しません。
ボタン自体は動作しています(ボタン押下と別LEDを連動)。
デバイスドライバで用意している割り込みハンドラの関数も実行されていません。

Interrupt controllerの動きを見ようと、xilinx_pic.cにデバッグメッセージを入れてみましたが、
eth0の割り込み時などには呼ばれるxilinx_pic_get_irq関数が、ボタンを押しても呼ばれませんでした。
デバイスドライバ登録時にxilinx_intc_enable関数が呼ばれるのは確認しました。

何か間違いや設定が足りない部分などありますでしょうか?
どんな事でもいいので、気が付いた事がありましたら、
アドバイスいただけるとありがたいです。

よろしくお願いします。 




suzaku メーリングリストの案内