割り込みできた!
ついにSUZAKU-Vでの割り込めるようになりました。
LEDチカチカ(割り込みバージョン)です。
割り込めなかった原因は、ベクタテーブルが正しく作られていなかったため・・らしいです。
ベクタテーブルが置かれる領域は、
最初のブートローダが立ち上がってからずっと弄られない領域のハズなので、ブートローダのプログラムにリンクして、FPGA内部のBRAMに読み込ませていた(はず)なのですが、上手くいってなかったようです。
ブートローダから呼ばれるプログラムのほうでベクタテーブルを
(適当な位置に)置いておいて、
絶対アドレス指定で本来の位置にコピーしたら動作しました。
何でこんな低レイヤな雰囲気のプログラムを書いてるんだろう・・。
SUZAKU-Vで標準のLinuxも割り込みを処理してるはずなんだけど、どうやってるんだろう?
気になるけど、とりあえず動いたのでよし。
適当にコピーすれば動くならDDR2メモリ上のほうに配置できるはずなので、そうしよう。
リンカスクリプトで
. = ALIGN(0x00010000)
とするのは、プログラムサイズが大きくなるので避けたいところです。
(プログラムサイズが大きくなってきたらそれでもいいかな・・)
明日はステッピングモータ制御回路周りを作って、加速処理とかまでできるようになるといいな。