• 締切済み

ファームウェアの意味がやっぱり分からないです

ファームウェアの意味を知りたくてネットで調べると、「ハードウェアを直接制御するためのソフトウェアのことである。」と出てきます。初心者の方が質問掲示板で質問されているのを見ても、どの回答者さんも「ハードウェアを制御するもの」「ROMやフラッシュメモリーに入っている」「ソフトウェアとハードウェアの間のもの」という解説で、やっぱりよく分かりません。 もっともっとやさしく教えて欲しいです。例えば料理に例えると、  ハードウェア : 鍋、フライパン、ヤカン、包丁などのこと  ソフトウェア : 料理の作業のこと(例えば、焼く、煮る、切る、炒める)  ファームウェア: ハードとソフトの間??例えば包丁を研ぐ?フライパンを買い替える? など具体的な例を出して教えてほしいです。  「ハードウェア」はなんとなく分かります。ハードディスク、マウス、液晶画面、DVDドライブ、液晶テレビ、スピーカーなどのことですよね。 このハードウェアを「制御する」とはどういう事しょうか。制御=操るという意味だとすると、ハードディスクのディスクをある回転数で回転させる→ファームウェアが1000回転と命令すれば1000回転で回り、2000回転と命令すれば2000回転で回る、などという理解は正しいでしょうか。 たとえば液晶テレビのファームウェアは、液晶テレビのどの部分をどのように操作しているのでしょう。液晶テレビのファームウェアをアップデートすると、その操作方法がどのように変わるのでしょうか。 すみません、これくら私は全然分かってないです。本当にお恥ずかしい限りですが、どうか分かりやすく教えてください。よろしくお願いいたします。

みんなの回答

回答No.18

> 具体的な例を出して教えてほしいです。 中々 うまい例が思いつきませんが、家を建てる場合で説明すると、下記のようになります(OS は説明できていませんが…)。 ユーザー:施主(せしゅ) アプリケーション:工務店、設計士 ドライバ-:現場監督 ファームウェア:職人 ハードウェア:大工道具、建設機械(下記ペ「建設機械」参照) 建設機械 https://www.google.co.jp/search?newwindow=1&hl=ja&site=imghp&tbm=isch&source=hp&biw=1024&bih=644&q=%E5%BB%BA%E8%A8%AD%E6%A9%9F%E6%A2%B0&oq=%E5%BB%BA%E8%A8%AD%E6%A9%9F%E6%A2%B0&gs_l=img.12..0l10.2415.2415.0.4068.1.1.0.0.0.0.103.103.0j1.1.0....0...1ac.2.64.img..0.1.102.uC8FXSQ9cdY

回答No.17

> アプリは「抽象度が高くハードウェアに依存しない汎用的な API(アプリケーション・プログラミング・インターフェース) 」を使って、デバイイス・ドライバーに"命令"します。 > ハードディスクのデバイス・ドライバーは「それより抽象度が低いハードウェアに依存するインターフェース(ざっくりと物理層で言うと SATA(Serial ATA) など)」を使って、ハードディスクの中のファームウェアに"命令"します。 > ハードディスクの中のファームウェアは「それより更に抽象度が低いハードウェア」を密接にコントーロールします。 アプリは「抽象度が高くハードウェアに依存しない汎用的な API(アプリケーション・プログラミング・インターフェース) 」を使って、(OS(オペレーティング・システム)にインストールされている)ハードディスク用デバイス・ドライバーに"命令"します。 (OS(オペレーティング・システム)にインストールされている)ハードディスク用デバイス・ドライバーは「それより抽象度が低いハードウェアに依存するインターフェース(ざっくりと物理層で言うと SATA(Serial ATA) など)」を使って、ハードディスクの中のファームウェアに"命令"します。 ハードディスクの中のファームウェアは「それより更に抽象度が低いハードウェア」を密接にコントーロールします。

回答No.16

> OS(オペレーティング・システム) (またはアプリ)がハードディスクの中のファームウェアにハードディスクを1000回転と"命令"し もう少し正確に言うと、アプリがハードディスク用のデバイイス・ドライバーにハードディスクを1000回転と"命令"し、ハードディスク用のデバイイス・ドライバーがハードディスクの中のファームウェアにハードディスクを1000回転と"命令"し、ファームウェアがハードウェアを密接にコントーロールします。 アプリは「抽象度が高くハードウェアに依存しない汎用的な API(アプリケーション・プログラミング・インターフェース) 」を使って、デバイイス・ドライバーに"命令"します。 ハードディスクのデバイス・ドライバーは「それより抽象度が低いハードウェアに依存するインターフェース(ざっくりと物理層で言うと SATA(Serial ATA) など)」を使って、ハードディスクの中のファームウェアに"命令"します。 ハードディスクの中のファームウェアは「それより更に抽象度が低いハードウェア」を密接にコントーロールします。

回答No.15

実はネットワークHDD(NAS)のファームウェアは Windows NT だったりします。 HDD(ハード・ディスク・ドライブ)自体の説明は前述のとおりだとして、それ以外にネットワークに関連する処理を Windows NT が担当します。 Windows OS は Samba(サンバ) と呼ばれる通信規格で通信しています、セキュリティー関連(ユーザー認証システムなど)は(建前上)秘密になっていると思われるので、Windows 用のネットワークHDD(NAS)を作りたいメーカーは Samba(サンバ) のセキュリティー関連(ユーザー認証システムなど)の処理を自前で勝手に作れないので、 Microsoft から Windows NT を買っています。 Windows なので HD(ハード・ディスク)デバイス・ドライバーとも一体化してないでしょうし、当然 Windows の汎用的な API (アプリケーション・プログラミング・インターフェース)も実装しているでしょうが、「Microsoft Office」などのアプリをインストールできません。 このように汎用的な API (アプリケーション・プログラミング・インターフェース)を実装していてもアプリをインストールできないモノもファームウェアと呼ばれたりします(この論理からすると Android OS をファームウェアと言ってはイケナイ事になりますが…)。 NAS(Network Attached Storage):ネットワークHDD http://buffalo.jp/products/catalog/storage/hd_lan.html http://www.iodata.jp/product/nas/info/landisk/ Wikipedia『Samba(サンバ)』 https://ja.wikipedia.org/wiki/Samba

回答No.14

> OS(オペレーティング・システム) (またはアプリ)がハードディスクの中のファームウェアにハードディスクを1000回転と"命令"し、ファームウェアがハードディスクの回転数をチェックしながら、早すぎたら遅くし、遅すぎたら早くするとか、ハードウェアを密接にコントーロールします。 つまり、ハードディスクの回転数は正確に1000回転で回転している訳ではなく、ハードディスクの回転数は小さな誤差の範囲内で絶えず変動している事を意味しています。 ハードディスクの回転数は絶えず変動しており、ファームウェアはハードディスクの回転数を絶えずチェックしながら、早すぎたら遅くし、遅すぎたら早くするとか、ハードウェアを密接にコントーロールします。 そう言うハードウェアを密接にコントーロールするような面倒な処理をファームウェアに丸投げする事により、 OS(オペレーティング・システム) (またはアプリ)はハードディスクを密接にコントーロールする負担がなくなります。

回答No.13

>> このハードウェアを「制御する」とはどういう事しょうか。制御=操るという意味だとすると、ハードディスクのディスクをある回転数で回転させる→ファームウェアが1000回転と命令すれば1000回転で回り、2000回転と命令すれば2000回転で回る、などという理解は正しいでしょうか。 > はい、正しいです。 もう少し正確に言うと、ハードディスクの中にもファームウェアがあります。 OS(オペレーティング・システム) (またはアプリ)がハードディスクの中のファームウェアにハードディスクを1000回転と"命令"し、ファームウェアがハードディスクの回転数をチェックしながら、早すぎたら遅くし、遅すぎたら早くするとか、ハードウェアを密接にコントーロールします。 そうする事により OS(オペレーティング・システム) (またはアプリ)はハードディスクを密接にコントーロールする負担がなくなります。

回答No.12

なんか色々 説明すると余計に訳が分からなくなって来るような感じでなので、ざっくりと簡単に言うと、ファームウェアとは あるマシン用に作られた(ハードウェアを直接的にコントロールする)専用 OS(オペレーティング・システム) 的なモノですが、通常 ファームウェアには API(アプリケーション・プログラミング・インターフェース)自体が実装されていないので、実際はOS(オペレーティング・システム)とは呼べません。 > このハードウェアを「制御する」とはどういう事しょうか。制御=操るという意味だとすると、ハードディスクのディスクをある回転数で回転させる→ファームウェアが1000回転と命令すれば1000回転で回り、2000回転と命令すれば2000回転で回る、などという理解は正しいでしょうか。 はい、正しいです。 > たとえば液晶テレビのファームウェアは、液晶テレビのどの部分をどのように操作しているのでしょう。 例えばリモコンから発せられたデータを解析してチャンネルを変えるとか、ボリュームを変えるとか、そんな感じのモノです。 > 液晶テレビのファームウェアをアップデートすると、その操作方法がどのように変わるのでしょうか。 大抵はバグの修正なので、操作方法は変わらないのが普通です。

回答No.11

> Android の場合は汎用的な API(アプリケーション・プログラミング・インターフェース)が実装されているので OS(オペレーティング・システム)と呼んで良い訳ですが Android に使われている Linux(リナックス)系 OS(オペレーティング・システム) では OS(オペレーティング・システム) とデバイス・ドライバーを一体化するベキと言う理念があり、この場合 OS(オペレーティング・システム) とデバイス・ドライバーが一体化しているので、Linux(リナックス)系 OS(オペレーティング・システム) では、 OS(オペレーティング・システム) がハードウェアを直接的にコントロールすると言えるので、 Linux(リナックス)系 OS(オペレーティング・システム) はファームウェアと言えます。 実際に Android OS(オペレーティング・システム) (Linux(リナックス)系 OS(オペレーティング・システム))をファームウェアとも言ったりします。 ただし、 Android OS の場合 開発の都合で、(組み込みアプリと言うかたちで)デバイス・ドライバーが Android OS(オペレーティング・システム) と一体化してない場合もあります。

回答No.10

> 通常 BIOS(バイオス) が使われるのは OS(オペレーティング・システム) の起動時だけで、 OS(オペレーティング・システム) の起動後はデバイス・ドライバーがハードウェアを直接的にコントロールします。 つまり、通常 OS(オペレーティング・システム)自体はハードウェアを直接的にコントロールしません(通常 ファームウェアはハードウェアを直接的にコントロールします)。

回答No.9

分かりやすく言うとファームウェアとは あるマシン用に作られた専用 OS(オペレーティング・システム) 的なモノです。 ではファームウェアと OS(オペレーティング・システム) では何が違うのかと言うと、ファームウェアはハードウェアを直接的にコントロールしますが、通常 OS(オペレーティング・システム)はマザーボードに実装されている BIOS(バイオス) と呼ばれるファームウェアを使って起動します(BIOS(バイオス)に関しては下記 BIOS 【 Basic Input/Output System を参照して下さい)。 通常 BIOS(バイオス) が使われるのは OS(オペレーティング・システム) の起動時だけで、 OS(オペレーティング・システム) の起動後はデバイス・ドライバーがハードウェアを直接的にコントロールします。 実際にファームウェアが使われている製品を挙げると「デジタル時計、炊飯器、エアコン」など今どきの家電などにはファームウェア(専用 OS(オペレーティング・システム)的なモノ)が使われています。 Android の場合は汎用的な API(アプリケーション・プログラミング・インターフェース)が実装されているので OS(オペレーティング・システム)と呼んで良い訳ですが、家電などのファームウェアには API(アプリケーション・プログラミング・インターフェース)自体が実装されていないので、実際はOS(オペレーティング・システム)とは呼べません。 BIOS 【 Basic Input/Output System 】 http://e-words.jp/w/BIOS.html ↑ざっくりと簡単に言うとハードウェアを動かすための仕組みです。 API 【 Application Programming Interface 】 http://e-words.jp/w/API.html ↑ざっくりと簡単に言うとアプリケーションが OS(オペレーティング・システム) を使うための仕組みです。 「メモ帳、ブラウザ、Microsoft Office」などのアプリケーションは OS(オペレーティング・システム) の API(アプリケーション・プログラミング・インターフェース)を使って動いて動いています。