web-dev-qa-db-ja.com

ファームウェアとデバイスドライバーの違いと関係

  1. ファームウェアとデバイスドライバーはどのように異なり、関連していますか?両方の制御装置と思いますか?
  2. ファームウェアは常に自動起動しますか?ドライバーはOSで実行/起動する必要がありますか?
27
Tim
  1. ファームウェアはonデバイスを実行するソフトウェアです。ドライバーは、オペレーティングシステムにデバイスとの通信方法を指示するソフトウェアです。すべてのデバイスにファームウェアがあるわけではなく、ある程度の知能を備えたデバイスのみです。

  2. 私はあなたが何を意味するのか正確にはわかりません...一般的に言えば、ファームウェアは「起動」とは何の関係もありません...おそらくあなたが求めていることは、ファームウェアを備えたデバイスは常にデバイスにファームウェアがインストールされているのでしょうか、または、起動後にロードされますか。それがあなたが求めていることなら、答えはノーです...

最も一般的には、ファームウェアを備えたデバイスでは、ファームウェアがデバイスにプログラムされています(ROMチップ、またはプログラム可能なROMチップ)のいずれか)が、いくつかのデバイスがあります初期化時にファームウェアがデバイスにロードされる場所このように動作するネットワークカードやウェブカメラはいくつか考えられますが、他にもあると思います。

24
Flimzy

ファームウェア は、ハードウェアの操作に必要な低レベルの詳細を実装し、より高いレベルにAPI/ABIを提供します。デバイスドライバーは、OSとファームウェアによって公開されるAPI/ABI間のアダプターを提供します。

firmwareの現代的な定義または一般的な使用法は、特定のソフトウェア機能とは関係ありません。ファームウェアは、ハードドライブなどの大容量記憶装置ではなく、単に不揮発性半導体メモリ(PROM、EEPROM、フラッシュなど)チップに格納されるソフトウェアです。保存されたソフトウェアは、モノリシックリンクバイナリ、またはローダー、カーネル、アプリケーションモジュールで構成されます。 (OTOH初期化を完了するためにLinuxカーネルによる「ファームウェア」のロードを必要とするPC用のTVチューナーカードを見たことがあります。)

この用語の起源は、プロセッサ制御ロジックとハードワイヤードロジックとの関係にあります。ハードドライブに保存されているソフトウェアは、簡単に変更および更新できます。ハードワイヤードロジックの改訂と更新には、ボードまたはモジュールの再設計と交換が必要です。中盤は、ハードウェアを制御するソフトウェアを実行するプロセッサでした。ソフトウェアはfirm wareと呼ばれ、-soft wareとhard wired logicの中間点を反映しています。もともとファームウェアはROMに保存されていましたPROMまたはEPROMチップでボードのモジュール性を維持するため。EEPROMとフラッシュチップの進歩により、ファームウェアのインサーキットおよびオンボードの更新が可能になりました。

プロセッサー(および周辺機器)の小型化と低コスト化、および電力消費量の削減により、あらゆる種類のデバイス/アプライアンスにそれらを組み込む可能性が広がりました。これらのデバイスを堅牢で安全に操作するためのソフトウェアを作成するために、ソフトウェアはハードドライブではなくフラッシュメモリチップに保存されます。また、デバイスが小さくなり、価格も大幅に安くなります。格納されたコードの一部がハードワイヤードロジックの置き換えと関係がない場合でも、ファームウェアという用語は、組み込みプロセッサを搭載したデバイス/アプライアンスのすべてのソフトウェアを含むように拡張されました。

4
sawdust

誰かが最近この質問を投稿しました 、こう言っています:

ファームウェアは、永続メモリ、プログラムコード、およびそこに格納されているデータの組み合わせです。ファームウェアを含むデバイスの典型的な例は、信号機、家庭用電化製品、デジタル時計、コンピューター、コンピューター周辺機器、携帯電話、デジタルカメラなどの組み込みシステムです。これらのデバイスに含まれるファームウェアは、デバイスの制御プログラムを提供します。

実際、SuperUserのdriversタグが定義されています。

デバイスドライバーまたはソフトウェアドライバーとも呼ばれるドライバーは、上位レベルのコンピュータープログラムがハードウェアデバイスとやり取りできるようにするソフトウェアです。コンピュータプログラムが特定のハードウェアデバイスとの対話を要求すると、ドライバは、デバイスとドライバを呼び出すコンピュータプログラム間の命令と出力の変換を処理します。

そして、firmwareタグが定義されています:

一般に、ソフトウェアとファームウェアの違いは、ハードウェアと対話するレベルです。ファームウェアはハードウェアの非常に低いレベルで相互作用し、ソフトウェアは高レベルで相互作用します。ファームウェアは通常、ハードウェアの基本的なタイミング、制御、機能を制御します。

元々、私はfirmwareがチップまたはボードに直接インストールされてそこに住んでいると思っていました。そのため、オペレーティングシステムの上にdriverをインストールする一方で、「フラッシュ」する必要があります。 。

結論:

Firmwareを使用すると、ハードウェアで「実行」でき、driversを使用すると、ソフトウェアでハードウェアとやり取りできます。

3
bgmCoder