ドライバの開発 レジスタへのアクセス

今ならどうやってデバイスドライバを開発するかな?って考えた時に

ソフトウェアでドライバを構築して、とりあえずPCからデバイスへの値の書き込みを行う

それをNiosIIで確認してコンソールへ出力

こんな感じで行うかなと思います

また、シグナルタップで監視をして、書き込まれた値に変化があったかを確認するのも手かなと思います

 

ですが、このPCI Expressを開発した時は、JTAGの事が全く分かっていませんでした。

なのでFPGAに作成したモジュールを焼き込み、オシロスコープでピンを監視して

レジスタに値が送られているかどうかを見ていました。

こうやって書いていると、我がことながら涙ぐましい努力です

FPGA開発の全体像が見えてきた今から考えると、本当にトンマな事をしていたし

よくもこんなやり方で開発できたなと思います。

無知って罪ですね。

 

今考えるとですが、SOPCビルダー(今はQsys)を使えば、 もう少し便利に開発できたのかなと思いますが、当時はそう言う事が分かっていなかったので

PCI Expressのアドレス信号やイネーブル信号を見て、該当するレジスタ

更新する様にHDLを記述していました。

メモリも使わずにただレジスタを必要個数用意して、ただただ羅列する様に書いていきました。

恐ろしいほど単純で無駄の多い開発工程だった様に思います

ですが、FPGAPCI Expressの基本的な事を勉強しながらやらなければいけなかったので

ちゃんとした開発と言うものに頭を回せる余裕はありませんでした

思えば私の開発は今に至るまでずっとそうです

山ほど案件を抱えて、それらの保守をしながら次の開発をしているので

つぎはぎをしながら毎日クリアしていくので精一杯です

本当は透き通るようなちゃんとした規格に沿って開発をしたいのですが

そうはいきませんでした。

 

ただ、今思うのは、コードを後から見直す事はほとんどない(たまにある)し

その時に読み直して必要な事がちゃんとできていれば、それで良いし

作りたいものは次々に変わっていきます

なので、とりあえず動いたら次、次と進めて行くのは

ある程度の規模まではそれはそれで一つの方法かなと思います

 

ちゃんとやろうとすればするほど準備に時間がかかってやろうとしていた事が陳腐化してしまいます