伝統的に、ファームウェアは変更不可能なROMに常駐するCPUコードです。これは、ハードウェアデバイスがオペレーティングシステムまたは選択したバイナリ(ソフトウェア)を起動してロードするために必要です。が与えられ、ブート部分のファームウェアに接続されているものが使用されます。
すべてのCPUには古典的な問題があります。CPUがメモリから命令をフェッチするため、CPUの起動時に何らかの事前プログラムされたメモリが固定アドレスに存在し、起動時に何かを自動的に実行できる必要があります。この目的のためのファームウェアが存在します。一部のファームウェアには、後のプログラムがサービスに使用できるコードも含まれています。 BIOSファームウェアは、DOSが基本的な入出力に使用した多くの機能を公開します(そのため、BIOSが基本的な入出力システムを表す理由です)。
区別は完全に明確ではありません。一部の(ほとんどの)WLANカードは、機能を開始する前にファームウェアをロードする必要があります。ただし、通常、デバイスには小さなファームウェアがあり、デバイスがオペレーティングシステムによって起動されたときにUSBバス経由でメインの「ファームウェア」を受け入れ、読み込まれると制御を渡します。ほとんどの人はそれがすべてファームウェアであると言います。
EEPROMとフラッシュメモリがより一般的になったため、ファームウェアは通常、書き込み不可能なROMではなくフラッシュメモリに存在し、変更することができます。ファームウェアとソフトウェアの区別は、フラッシュの登場により不明確になりました。ただし、CPUはまだCPUであり、起動時に表示されるためには、コードやファームウェアが必要です。
CPUはこれまで以上に多くのデバイスに搭載されているため、バグが発生した場合にファームウェアを更新して更新できるようにすることは非常に重要であり、CPUを備えた多くのハードウェアデバイスにはファームウェア更新インターフェイスがあり、ドキュメント化されていない場合があります。
ファームウェアを使用してOSをロードできます。ブートローダーまたはブートローダーをロードするコードを含めることができます。 OSイメージをファームウェアと同じ場所に保存し、ファームウェアの起動時コードにOSをロードさせることができます(携帯電話がこれを行います)。原則として、PC BIOSにはブートローダーは含まれていません。 U-boot(PC用ではない)は、オペレーティングシステムを直接ロードする「ファイルシステム対応」ファームウェアの例です。
通常、ファームウェアは完全なオペレーティングシステムのすべての機能を備えているわけではありません。シンプルなほうが信頼性が高いという原則があるからです。最も単純なファームウェアは、最小限のハードウェアを初期化し、ストレージデバイスからセクターまたはブロックをロードして、実行をスローするだけです。これは簡単にプログラムできるため、バグがないことを簡単に確認できます。起動時ファームウェアのバグは、特にデバイスの障害を引き起こす可能性があります。
ファームウェアはソフトウェアですが、ディスクに保存される代わりに、 [〜#〜] eeprom [〜#〜]に保存されます これは通常、更新を可能にするためにフラッシュ可能です。
ファームウェアはある意味オペレーティングシステムですが、OSはそのデバイスを制御するためだけなので、はるかに制限があり、単一の目的で使用されます。一方、OSは、あらゆる種類のソフトウェアを複数のハードウェアデバイスで実行できる汎用システムです。
いいえ、ブートローダーはディスク上に存在するソフトウェアであるため、ファームウェアではありません。はい、BIOSは(フラッシュ可能な)チップ上に存在するためです。いいえ、GRUBもファームウェアではありません。これもしっかりしていない(ハードウェアコンポーネントがない)ため、ディスクに存在するソフトウェアです。ただし、インストールは可能です(可能性があります)チップ上で、その場合はファームウェアです。
違いは、基本的にはコードがどこにあるかです。一般に、ファームウェアはある種のEPROMまたは組み込みフラッシュメモリに書き込まれますが、ソフトウェアは大容量ストレージデバイスに格納されます。
デバイスのOSは、ファームウェアまたはソフトウェアに存在する場合があります。 PCでは、ファームウェア(BIOS)は、ソフトウェアOS(Windows/Linux/etc)が利用できる低レベルのサービスを提供するだけです。モバイルデバイスでは、エントリOSは通常ファームウェアに含まれています。
(1)の定義では、コンピューターのBIOSはファームウェアですが、ハードディスクに常駐するブートローダーはソフトウェアです。
境界は少しあいまいになる可能性があります。
ソフトウェアは通常、コンピュータで実行できるすべての命令またはルーチンです。
ファームウェアは通常、ハードウェアに機能を実行するためにハードウェアにロードされるハードウェアにロードされる特定の命令(ソフトウェア)です。
ほとんどすべてのハードウェアには、何らかのファームウェアが含まれていると思います。
繰り返しになりますが、どこから開始し、どこで停止するかについての明確なガイドはないと思います。ファームウェアとは、デバイス内のチップに合わせてコンパイルされたソフトウェアです。
ファームウェアとは何かについての2番目の質問については、ブートローダーはそうではないが、BIOSはそうであり、GRUBはそうではないと言うでしょう。
これは線を引くのが非常に難しいですが...私がそれを見る方法は、BIOS(現在のEFI)はマザーボードのファームウェアであり、ハードドライブはそれ自身のファームウェアを持っているということです。
したがって、ブートローダー/ GRUBは純粋なソフトウェアです。ハードドライブでタスクを実行できますが、ハードウェアを直接制御しているわけではありません。
Iphone/Ipadなどの組み込みデバイスを使用する場合、ファームウェアはどこで終わり、ソフトウェアはどこで始まりますか? IOSがファームウェアであると考えるなら、なぜWindowsや同様のものではないのですか?.
私にとって、これは境界がデバイスのメーカーまたはベンダーがあなたに制御を許可する場所であり、それが実際に固定されたもの/厳密な科学ではないことを示しています。
例えば、
さらに複雑にするために-私が要求に応じて言うとき、これは他のソフトウェア内のドライバーからのものである可能性があります
今、iPad、またはiPhone、またはその他の組み込みデバイス...
だから...まとめると...
私にとって、ファームウェア=純粋なソフトウェアがデータとして購入されたデバイスに付属するソフトウェアだと思いますが、他の人が違うと言うかもしれません!
ほんの数語で回答をお伝えしたいと思います。ファームウェアとオペレーティングシステムの両方は、デジタルシステムが正常に起動して実行するために非常に重要です。これらの両方がどのように機能するかについて説明します。スマートフォンの電源を切り、スマートフォンの電源ボタンを押した後に電源を入れると、このコマンドは、ファームウェアのプログラムが含まれている不揮発性メモリであるBIOSチップに移動します。このBIOSチップファームウェアは動作を開始し、ファームウェアはコマンドを提供しますRAMおよびROMの両方向で、Romからオペレーティングシステムコードを削除するコマンドramとROM =オペレーティングシステムのコピーをRAMに渡して、そのシステムの他のすべてのコンポーネントをアクティブにします。