割り込みできた!

ついにSUZAKU-Vでの割り込めるようになりました。
LEDチカチカ(割り込みバージョン)です。
割り込めなかった原因は、ベクタテーブルが正しく作られていなかったため・・らしいです。


ベクタテーブルが置かれる領域は、
最初のブートローダが立ち上がってからずっと弄られない領域のハズなので、ブートローダのプログラムにリンクして、FPGA内部のBRAMに読み込ませていた(はず)なのですが、上手くいってなかったようです。


ブートローダから呼ばれるプログラムのほうでベクタテーブルを
(適当な位置に)置いておいて、
絶対アドレス指定で本来の位置にコピーしたら動作しました。
何でこんな低レイヤな雰囲気のプログラムを書いてるんだろう・・。


SUZAKU-Vで標準のLinuxも割り込みを処理してるはずなんだけど、どうやってるんだろう?
気になるけど、とりあえず動いたのでよし。


適当にコピーすれば動くならDDR2メモリ上のほうに配置できるはずなので、そうしよう。
リンカスクリプト
. = ALIGN(0x00010000)
とするのは、プログラムサイズが大きくなるので避けたいところです。
(プログラムサイズが大きくなってきたらそれでもいいかな・・)


明日はステッピングモータ制御回路周りを作って、加速処理とかまでできるようになるといいな。