私の理解では、ファームウェアはハードウェアを制御するものであり、ドライバーはファームウェアと対話してハードウェアを制御します。あれは正しいですか?
Linux では、ファームウェアとやり取りする API または関数は何ですか? ファームウェア コードは、どの OS (Linux や Windows など) からも独立していますか?
私の理解では、ファームウェアはハードウェアを制御するものであり、ドライバーはファームウェアと対話してハードウェアを制御します。あれは正しいですか?
Linux では、ファームウェアとやり取りする API または関数は何ですか? ファームウェア コードは、どの OS (Linux や Windows など) からも独立していますか?
ファームウェアは、デバイス上で実行されるソフトウェアです。ドライバーは、オペレーティング システムにデバイスとの通信方法を指示するソフトウェアです。ファームウェアを持つすべてのデバイスは、通常、(ROM チップまたはプログラマブル ROM チップのいずれかを使用して) デバイスにプログラムされますが、一部のデバイスでは、初期化時にファームウェアがデバイスにロードされます。すべてのデバイスにfrimware が搭載されているわけではありません。
これは、デバイスと PC 間の接続方法によって異なります。PCI ボードには、Linux カーネル モード API のセットがあります。別のカーネル モード API のセットを使用して、USB ポート経由で接続されたデバイスと通信します。イーサネットおよび WiFi 接続の場合、ソケット API を使用できます。通信は完全にユーザー モードで行われます。シリアル ポート経由で接続されたデバイスも、ユーザー モード API で処理されます。Linux OS ではファイルとして処理されます。
通常、デバイスのファームウェアはホスト システムの OS に依存しません。ただし、デバイス自体で実行されている OS (存在する場合) に依存します。ファームウェア コードは、OS を使用せずにプレーンな C で記述したり、リアルタイム OS で実行したりできます。最新のデバイスには、組み込みの Linux や Windows などのフル機能の OS が含まれている場合があります。この場合、このデバイスに固有のプログラムを含む OS 全体がデバイス ファームウェアと見なされます。たとえば、特定のモバイル デバイス用の Android OS です。