Linuxの用語で「ファームウェア」とは何ですか?


14

Linuxのコンテキストでのファームウェアの使用に混乱しています。

ファームウェアとドライバーに関する私の理解は、ファームウェアは、Bluetooth IC、キーボードコントローラー、ビデオカード、または単一目的のマイクロコントローラーなどのデバイスのベアメタルで実行されるコードであるということです。ファームウェアは、OSがそのサービスを使用するためのインターフェースを公開します。

これに対して、ドライバーは、ファームウェアが提供する前述のインターフェイスと通信するためにカーネルが使用するソフトウェアです。したがって、ビデオドライバー、キーボードドライバー、Bluetooth無線ドライバーです。

それで、なぜ私はインストールしなければならないLinuxファームウェアファイルについて読み続けているのですか(例えばこちら)。これらはハードウェアにアップロードされますか?これらのファイルはカーネルによって使用されていますか?このコンテキストでのファームウェアの意味は何ですか?


1
一般的に言って、ソフトウェアはプログラムです。ハードウェアは物理デバイスです。ファームウェアは、ハードウェアに統合されたプログラムです。通常、ハードウェアの動作方法を構成する目的で使用します(したがって、ソフトウェアとハ​​ードウェアの間にあり、「ソフト」と「ハード」の間にある「鈍い」スケールのように)。通常、ファームウェアはOSに依存しません(たとえば、SCSI RAIDコントローラーのRAID構成)。
-DopeGhoti

DopeGhotiのコメントに追加するだけで、多くのデバイスは現在、ライブファームウェアのロードを許可しており、固定実装よりも柔軟/進化的です。
ジュリーペレティエ

1
@DopeGhotiは、ハードウェアを構成するだけでなく、ハードウェア上で実行します。一部のファームウェアは実際には非常に複雑で、基本的にミニOSを実行します。
スティーブンキット

「ハードウェアに統合されたソフトウェア」とは、そのソフトウェアが実行されるハードウェアであることを意味すると断言しますが、同意します。(:
DopeGhoti

回答:


21

Linuxカーネルコンテキストでは、ファームウェアは、システム内の別のプロセッサ、たとえばワイヤレスコントローラー、GPU、SCSIコントローラーで実行されるソフトウェアです。このソフトウェアは、関連コントローラーに接続されたROM(さまざまなタイプ)に格納されていました、しかしコストを削減し、アップグレードを簡単にするために、コントローラーはホストオペレーティングシステムに依存してファームウェアをロードする傾向があります。

そのため、ファームウェアファイルはカーネルでは使用されず、カーネルによって他のハードウェアにロードされます。これは、FLOSSシステムでソースコードなしのソフトウェアを使用することを漠然と受け入れられるようにする理由でもあります。メインCPUではなく別のデバイスで実行されるという議論があります。


1
あなたは「漠然と容認できる」の使用に非常に親切です。
ルイFリベイロ

2
全員がRMSになれるわけではありません。
-DopeGhoti

これはLinuxカーネルのコンテキストだけでなく、マルチプロセッサシステムのコンテキストでの「ファームウェア」のかなり一般的な定義です。
ジル「SO-悪であるのをやめる」

だから、ないの/ etc / libに/ファームウェアは、実際にファームウェアが含まれていない ドライバのブート時にカーネルによってロードされましたの?ただし、ワイヤレスコントローラーとグラフィックカードには、製造元が焼き付けたファームウェアを備えた独自のROMがあります。
defalt

3
@defalt yes /lib/firmware(singular、no /etc)には、他のデバイスで使用されるファームウェアが含まれます。多くのデバイス(ワイヤレスコントローラーおよびGPUを含む)には、ファームウェアを含む独自のROM(またはフラッシュ)がある場合でも、ホストシステムによって提供されるファームウェアが必要です。
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.