質問: C言語でデバイスドライバを自作したいのですが、どのようにすれば良いのでしょうか? Linux か Windowsでやりたいです。 確か、カーネルモードでプログラミングをしないといけないと聞いたのですが、LinuxなどのOSはどのようにして、USBなどのデバイスの制御を行っているのでしょうか? 内部の仕組みとプログラミングのやり方を知りたいです。 システムコールを使うのではなく、アセンブラレベルでやり方をプログラムしてみたいです。
回答: 面倒な話になるので、 検索ワード Windows ddk サイト で、検索できるサイトのコンテンツの、内容と意味が理解出来るなら、 市販のユーティリティを使わなくても、出来るでしょう。 ⇒Windows 系では、直ぐにMSDN Pro 以上のライセンスが欲しくなるのは、 やっていくうちに、理解できるはずです。 ’ 比較的に、物が安く手に入り、作り易いと思われるのは、 Windows Sensor API 用のドライバかもしれません。 3端子の温度センサ、1Wireの湿度センサなどは 安く手に入れられます。 もっとも、デスクトップ、ノートにまんま繋げられるわけも無く それなりのハードウェアの知識は必要です。 ⇒もっとも安直なのは、USB接続可能なマイコンボードを使って、 マイコンボードのリモコンドライバを書く方法ですが、 誰も実装していないか?というと、実装があったりします。 安直に入手可能で、OSが動いてであれば、 Raspberry PI3 で、Linux系が 御勧めかもしれません。 対応するI/O関係の部品は、Amazonでも入手出来るようになってきましたので、 Alliexpress / Gearbest / Mouser / RS online / DigiKey 他で入手しなくても 済むかもしれません。 ⇒マイコン系は安くなったとはいえ(古くは数100万~かかった)、 少なくとも、数万~は投資の必要があります。 何も道具を持っていない場合は、十数万は直ぐにかかりますので、注意してください。 ’ 初心者向けでは、Lチカ他色々あるでしょうが、 作って面白いのは、Aitendo のDSPラジオキット+マイコンボードでの自動チューニングとか 電子ブロックmini用マイコン⇒PCインターフェースとか かも。 ’ USB、Bluetooth、SDなどの様に関連テクノロジーを使って 商行為をすると、ライセンス料が発生する可能性があります。