会社案内 (近況 2009/05)
先月 翌月昨年末に都内近郊のとある会社から、当社の PCI Express IP コア GPCIe を 採用した基板開発の仕事を頂いた。開発はスムースに進み、予定通りの納期で 納品した。軽微な修正のすえ、先方での動作テストも無事に済んだ。
が、その後しばらくして、一部の PC では正常動作しないとの連絡を頂いた。 動作しない PC をお借りして原因を追求、修正、という作業を 3 回繰り返し、 ようやく当社、先方、および先方の顧客、の所有するすべての PC で動作するようになった。
3 つの不具合の原因はそれぞれ
なんだ、ながながと書いておいて結局宣伝かよ。
Windows 向けのデバイスドライバを作ったので、制御ライブラリ (HIB ライブラリ) も Windows に対応させた。まさか当社のコードに
#if defined(_WIN32)などという directive が挿入される日が来ようとは。
model1800 の箱です。写真は1台ですが、2台入ります。 ホストへはExternal PCI Express Cable(16レーン)で接続します。
一昨日に「kernel space を user space に map するのは WDF が許してくれなくて面倒かも」とか大変ぽいようなことを 書いたばかりだが、ちょっと調べたらふつうにできた。つまり、
ということができるようになった。特にインチキとか tricky な抜け道は必要 なかった。これで PIO も DMA もいちいち ioctl 経由で kernel に依頼する ことなく、全部 userland で出来るようになった。転送性能もざっと測定した ところでは Linux 版と同程度出ているようだが、より正確な検証は後日。 「Linux 版ドライバと同等のことができるようになっただけ」と言ってしまう と大したことないように感じるので、そういう表現はやめよう > 心優しい 読者の皆様
やり方の説明は面倒なのでパス。だいたいこの辺の関数を使う:
それから、デバッグ中に気づいたのだが、DMA の範囲がバッファの外にはみ出 ても OS はハングせずに、はみ出し者の process だけが終了する。どういう 仕組みか知らないがすごい。感動した。