プリンタ、スイッチなどの組み込みデバイスでは、ファームウェアとオペレーティングシステムの違いがわかりません。組み込みデバイスのオペレーティングシステムはPC(LinuxおよびWindows)に似ていますか?
たとえば、リモートでプリンターを管理できるWebサーバーが組み込まれたプリンターがあります。製造元のWebサイトを開くと、OSがOS 9.86であることがわかりました。これはどんなOSですか?参照: Phaser 8560サポートとドライバ
ファームウェアとは、不揮発性メモリにある小さなコードのことです。最近オフィスで一般的に見られるハードウェア周辺機器(プリンター、VoIP電話など)では、ファームウェアは通常、オペレーティングシステムの読み込み(OSコード署名の検証など)と管理(OSの回復モードでのフラッシュなど)を担当します。マシンにインストールされています。実際のタスク(印刷など)を実行するのは、オペレーティングシステムの仕事です。
ハードウェアベンダーは通常、Linuxの派生物(Cisco IOSなど)、またはリアルタイムオペレーティングシステム( VxWorks など)を使用します。
他の人が指摘したように、ファームウェアはデバイスの不揮発性メモリにあります。これには、電源オフまたはリセットからの起動時にデバイスが実行する命令が含まれています。これは、デバイス上のソフトウェア全体である場合もあれば、たとえば、PCのBIOSがプロセッサにハードディスクドライブ(またはフロッピーまたはCD -ROM)次に実行するコードを検出します。
オペレーティングシステムは、デバイス上で実行されるコードで、アプリケーションがデバイスの機能にアクセスするためのサービスを提供します。たとえば、プロセッサのタイムスライシング、アクセスするファイルシステム、入力と出力などを提供します。
組み込みデバイスは、アプリケーションにオペレーティングシステムを提供する必要はありませんが、ソフトウェアの作成に使用する製造元にとって適切なモデルである場合があります。プリンターは、OSからWebサーバーを分離する必要なしに、いくつかの割り込みハンドラーを備えた1つの実行プログラムにすべてのファームウェアを含めることができると考えられます。その特定のモデルについては知りません。
重要なのは、OSはファームウェア内に存在でき、ファームウェアはOSなしで存在できるということです。それらは独立した概念です。
最も簡単な言葉で:
[〜#〜] os [〜#〜]
カーネル、グラフィカルユーザーインターフェイス(GUI)、または少なくともファイル管理にハードウェアを利用するコマンドラインインターフェイス(CLI)が含まれています
カーネル
OSソフトウェアの一部、ドアキーパー、およびOSとハードウェア間のトランスレータ。
言い換えれば(Wikipediaから)、カーネルの主な機能は、コンピューターのリソースへのアクセスを仲介することです。
ファームウェア
コンピュータの電源を入れたとき:
ファームウェア→カーネル→フルOS
基本的に
他の人が投稿したものを蟻継ぎするには:
ファームウェアは、bootstrapまたはBIOS)だけではありませんが、ほとんどのコンシューマデバイスでこの用語が一般的に使用されています。
より洗練されたアプリケーションでは、フィールドプログラマブルゲートアレイ(FPGA)、複雑なプログラマブルロジックデバイス(CPLD)、およびその他の同様のテクノロジーが、マイクロコントローラーまたは大規模プロセッサで実行される線形実行可能なコードをはるかに超える構成可能なロジック回路を作成するためのメカニズムを提供します。多くの場合、これは特定用途向け集積回路(ASIC)の代替手段であり、ダイを配置した後に変更することはできません。
このようなアプリケーションでは、ファームウェアは単にコードをロードして物事を開始するだけではありません。アプリケーションは、アドレスルーティング、信号処理、数学コプロセッシング、タイマー、電源およびリセットシーケンス、さらにはLEDやリレーの制御など、複数の並列操作を処理するように設計できます。
カスタムデバイスを作成する可能性は無限であり、FPGAおよびCPLDの場合、再プログラムできます。
上記のタイプのファームウェアは(通常)VHDLでプログラムされており、同期または非同期の並列ロジックのいずれかを記述して、目的の機能を表します。設計は通常、メモリマップアドレス範囲または他のプロトコル(PCI/PCI-X/PCIeなど)を介してアクセス可能なソフトウェアであるようにレイアウトされています。ファームウェアデザインによって作成されたレジスタは、必要な機能の制御とステータスのセットを表します。
一方、オペレーティングシステムは、いくつかの処理環境内で機能するインターフェイスをソフトウェアに提供します(つまり、プロセッサを利用するためのコンテキストと「ルール」を提供し、ソフトウェアでアクセス可能なハードウェアまたはファームウェア)。 OSは、ファームウェアの処理ルールとして設定することも、(より一般的には)ROM、フラッシュ、またはその他のメディアからロードされるソフトウェアだけにすることもできます。
OSのマシンに依存しない部分とハードウェアとの間のインターフェースは、多くの形式で提供されます: ボードサポートパッケージ (BSP)、ドライバーなど。BSPは通常、プロセッサーとボード固有の周辺機器へのアドレスです。とりわけセットアップされています。多くのリアルタイムOS(RTOS)ベンダーは、基本的なBSPセットアップやツールを提供して物事を開始します。
一部の設計者は、物事を進めるためにBSPデザインをシンプルに保ち、RTOS BSPプロトコルとは無関係にハードウェアまたはファームウェアに到達するための多くのインターフェイスを記述します。これはカスタムファームウェアでより一般的です。
はい、組み込みデバイスのOSはPCと「似ています」。違いはスペクトルにありますが、基本的に同じように機能し、アプリケーションが特定の周辺機器のセットで動作するための実行コンテキストを提供します。プリンタに実際に搭載されているOSの種類について教えてください。より多くの情報なしに本当に知る方法はありません(彼らはバージョンが9.86であることを公開するだけです...カスタムである可能性があり、多くのRTOSまたはGPOSのいずれかである可能性があります)。また、ファームウェアと共にリストされているOSが実際にそのダウンロードに含まれているか、または互換性に関連する単なる表記であるかは明確ではありません。
お役に立てば幸いです。
すべてのデバイス(コンピューター、プリンター、スキャナー、デジタルカメラなど)が実行を開始するには、電源投入時または起動時に実行する初期プログラムが必要です。この初期プログラムはファームウェアと呼ばれます。 bootstrap programとも呼ばれ、[〜#〜] bios [〜#〜]とも呼ばれます。 [〜#〜] rom [〜#〜](内容が永続的な不揮発性メモリ)にマウントされます。
ファームウェアはオペレーティングシステムのカーネルを特定し(カーネルはオペレーティングシステムの一部であることを忘れないでください)、起動時にそれをプライマリメモリ(RAM)にロードします。ファームウェアは通常、アセンブリ言語またはC/C++などの高級言語で記述されています。
オペレーティングシステムは、コンピューターのハードウェアを管理し、アプリケーションを実行するための環境をセットアップする完全なソフトウェアスタックです。つまり、オペレーティングシステムがデバイスの指定されたタスクを実行します。 カーネルはこのソフトウェアスタックの最下部にあり、デバイスが稼働している限り実行を続けます。ハードウェアを管理するオペレーティングシステムとは、ハードウェアリソース(CPU、メモリ、入力、出力)への要求を管理するのは実際にはカーネルです。
ファームウェアは、ハードウェアリソース全体を占有するアプリケーションです。つまり、アプリケーションをシステムに動的にロードできるオペレーティングシステムはありません。アプリケーションはオペレーティングシステム自体です。アプリケーションは、ハードウェアのすべてのリソースを操作します。したがって、アプリケーションはハードウェアと非常に統合されており、クロスハードウェアにすることはほとんど不可能です。これが、アプリケーションがファームウェアと呼ばれる理由です。ソフトウェアは、指定されたハードウェアに固定されます。
たとえば、エアコンのファームウェアは、指定されたコンプレッサーと指定されたコントロールパネルを制御します。したがって、ファームウェアは他のエアコンモデルでは機能しなくなります(もちろん、ファームウェアは他のアプライアンスでは機能しません)。ファームウェアはハードウェアに大きく依存します。
当初、ファームウェアは「ファームウェアはROM、EPROM、フラッシュメモリなどの不揮発性メモリデバイスに保持される」と定義されていました。しかし、定義は古くなっています。コンピューター全体がファームウェア内にあるだけですが、そのコンピューターでソリッドステートディスク(SSD)を使用する場合、ソフトウェアはありません。
私の見解では、組み込みLinuxベースのファームウェアはありません。または、SSDを使用している間は、すべてのソフトウェアをファームウェアとして呼び出す必要があります。