組み込みデバイスドライバとは?
組み込み機器システムは以下のような構成になります。
アプリケーション
ユーザーシステムの機能を実現するためのソフトウェアです。例えば液晶に何かを表示したり、TCP/IPからデータを受信したり送信したりする、などになります。
ミドルウェア
TCP/IPやFileSystemなど規格(プロトコル)に沿ったソフトウェアです。ユーザーがプロトコルソフトウェアを開発するのは大変なので、一般的には市販のミドルウェアを購入したりしてシステムに組み込みます。
OS
アプリケーション、ミドルウェア、デバイスドライバなどを動かすための組み込み用のOSです。ITRON、LINUX、WindowsCEなどがあります。
デバイスドライバ
ハードウェアを制御するためのソフトウェアです。Ether、USB、CANなどのコントローラや特殊用途のFPGA、ASICをアクセスするために、上位側ソフトウェアに扱いやすい手順を提供します。
ハードウェア
ソフトウェアが動くためのハードウェアです。CPU、各種コントローラ、FPGA、周辺ロジック回路があります。
イーサネットドライバ
TCP/IPを使用して通信を行う場合には、TCP/IPのプロトコルスタックとイーサネットドライバが必要になります。割り込み、DMAを使用してイーサネットコントローラを制御します。
●LANコントローラ…LAN91C111、AX88796、ルネサス内蔵、等
SDドライバ
携帯、カメラなどに使用されるSDは規格に基づいて動作します。SDにコマンドを出して、応答を見ながらシーケンスを進めます。
それらのシーケンスを行うことと、SDコントローラの制御を行うドライバです。
●SDコントローラ…MN5774、TDS701、i.MX内蔵、等
USBドライバ
USBはホスト側とdevice側の規格に基づいた動作が必要になります。
この規格はS/W上の動作のことで、それを送受信するUSBコントローラ制御を行うドライバが必要になります。
●USBコントローラ…R8A66597、uPD720150、S1R72V05、等
カメラドライバ
CCDカメラやCMOSセンサカメラなどは、一般的に規格化されていません。
コマンドは各製品独自が多く、I/Fもさまざまです。性能から考えてカメラを選択し、それを使用するためのドライバを実装する必要があります。
GPIBドライバ
最近はずいぶん減りましたが、計測機器などではGP-IBで接続して制御することがあります。
GP-IBも専用のコントローラがあり、それを制御するドライバが必要になります。
●BP-IBコントローラ…uPD7210、TMS9914、等
SCSIドライバ
最近はずいぶん減りましたが、高速でアクセスできるI/Fとして、SCSIを使用することがあります。
SCSIそのものは規格化されていますが、コントローラについての規格化はされていないので、専用のドライバが必要になります。
●FileSystemプロトコルスタック…必要に応じて
ATAドライバ
HDDやメモリカードなどにアクセスするためのI/Fです。PCではシリアルATAなどが主になってきていますが、組み込みではパラレルATAも使用されています。
コントローラごとにドライバが必要になります。
PCIドライバ
PCでも使用されているPCIバスで他デバイスとアクセスするための規格です。PCでは 64bitが主流ですが、組み込みでは32bitのPCIが主です。
PCIアクセスするためのドライバが必要になります。
PCIはPCでも使われている一般的なI/Fなので、上図のUSBの他、画像・Etherなどいろいろな種類があります。いずれも最下層にはPCIドライバが必要になります。
●PCIコントローラ…PCI9054、SH内蔵、等
モータドライバ/ キーマトリクスドライバ
ACモータ、DCモータ、ステッピングモータなどがあります。ACモータ、DCモータでは位置検出のロジックが、
ステッピングモータではパルス(位相)を出すためのロジックがドライバになります。制御方法によって異なるドライバが必要になります。