見出し画像

よくよく考えてみれば、機械が動くのって不思議。ファームウェアが制御してるらしいよ。

こんにちは🌞
最近ようやく梅雨が明けてきて嬉しいインターン生のかほです。
私の場合、雨が降ると前髪が崩れたりして気分があがらないです😭

以前、ハードウェア、ソフトウェアについて一緒に学びましたね。

まだの方はこちらから↓ご覧ください♪

今回はハードウェアに最も近いと言われるソフトウェア、ファームウェアについて一緒に学んでいきましょう!


〇ファームウェアとは

・そもそもファームウェアって何?

そもそもファームウェアとは、
電子機器に組み込まれたハードウェアの基本的な制御をするために存在する、不揮発性メモリに記録されるソフトウェアのことです。

不揮発性メモリとは、外部からの電力の供給がなくても記憶を維持できるメモリのこと。

簡単に言えば、ファームウェアとは停電状態でも記憶を保つことのできるメモリに入ったソフトウェアのことと言えます!

・ハードウェアに近い、遠い

実は、ソフトウェアにはファームウェアを含め、4つの種類があるんです!
その4種類がこちら↓

4種類のソフトウェア

なんだか聞いたことある単語も見受けられますね👂

ファームウェアは制御したいハードウェアだけを制御するソフトウェアです。

例えば、冷蔵庫に組み込まれているファームウェアはその冷蔵庫だけに使われます。テレビや掃除機など他の機器(ハードウェア)には使えません。

そのため、ファームウェアは4種類のソフトウェアの中でハードウェアに最も近いという表現を用います。

逆に多種多様なスマートフォンでも使用できるアプリケーションは、ハードウェアに最も遠いという表現をします。

ふむふむ、なんとなくハードウェアについてわかってきましたね。
ではなぜファームウェアと呼ぶのでしょうか。農業??


・ファームウェアの由来とは!

ファームウェアは製造元のメーカーがあらかじめインストールするもので、内容の変更やユーザーによる書き換えを行うことを想定されていないそうです。

このことから”堅い””固定的”といった意味を持つファームという言葉が充てられています。

納得ですね👍

せっかくなので、ソフトウェアの由来も一緒に勉強していきましょう!

〈ソフトウェアの由来〉
ハードウェアとの対比ソフトウェアと呼ばれている。
通常のソフトウェアは自ら独立して動く必要性がない。また自由に書き換えることが可能!

んん~、ちょっと待った✋
さっき、ファームウェア(ソフトウェアの一種)は書き換えを想定していないと言っていたのに、ソフトウェアは書き換えが可能ってどういうこと!!
っと思ったそこのあなた!私と同じ意見ではありませんか!!

確かに先ほど、ファームウェアは書き換えを想定していないとお伝えしましたね。
ただ、ファームウェアはソフトウェアの一種なので書き換えることは可能です。想定していないだけで、可能ではあるそうです。

うう、ややこしい~😭

ネットワークの新しい規格や機器に対応するためのバージョンアップなどが書き換えの一例なんだとか。。

ちなみに、ファームウェアの更新は新しいバージョンのプログラムファイルをダウンロードして行うそうです。
その場合、専用のハードウェアが必要となったり、時にはハードウェア自体の切り替えも必要となることがあり、手順が複雑になることが多いそうです。

書き換えを想定していないということから、複雑になりうることも腑に落ちますね。


・ファームウェアの機能とは

ファームウェアはハードウェア、つまり入出力装置とプロセッサー(演算装置)の間に位置し、入出力装置から得たデータをプロセッサーが理解できるものに変換し、プロセッサーのコマンドをハードウェアが理解できる信号に変換します。

わわわわわわわわ、難しい💦

例として、PLEN Cubeの場合で考えてみましょうか!

PLEN Cubeの場合、ファームウェアはバッテリーの容量チェックと充電の制御をしているそうです。
他にもファームウェアが回転の制御を行っていることによって、Cubeのヘッドが動くのだとか!
(下にPLEN Cubeの動いている動画があるのでぜひ見てみてください♪)


・ファームウェアを書くのはソフトウェアエンジニア?ハードウェアエンジニア?

これまで、ファームウェアはハードウェアに最も近いソフトウェアであるというお話をしました。

では、ファームウェアを書くのはソフトウェアエンジニアなのか、それともハードウェアエンジニアなのか、流れで行くとソフトウェアエンジニアですが。。。

聞いてきました!!


弊社の場合、ソフトウェアエンジニア、ハードウェアエンジニア、共にファームウェアを書くそうです!

ハードウェアエンジニアの日高さん

日高さんにインタビュー

かほ「日高さんもファームウェアを書くのですね。勝手にハードウェアエンジニアの日高さんはソフトウェアは書かないと思っていました。」

日高さん「そうですね。私はファームウェアや組み込みソフトを書きます。」

かほ「そうなんですね。ありがとうございます!」

ん、あれれれれれ、組み込みソフト?なんだそれ!!



〇組み込みソフトとは

またまた難しい言葉が出てきました。”組み込みソフト”

組み込みソフトとは、パソコンやスマートフォンを除く家電や産業機器など電気で動作する機器を制御するための特定用途のソフトウェアだそうです!

例えば、洗濯機を始め、エアコンやカーナビ・自動販売機など数多くの機器の中にはコンピューターが入っています。
そのコンピューターを動かすためのソフトウェアが組み込みソフトだそうです。


・ファームウェアと組み込みソフト

では、ファームウェアと組み込みソフトはどのように異なっているのでしょうか。
ハードウェアやコンピューターを制御するといった点では同じのようにも感じますね。


実は、ハードウェアと一体として提供されるという意味ではファームウェアと組み込みソフトは同じであるそうです。

しかし、ファームウェアがハードウェアと近いところに位置するのに対し、組み込みソフトはアプリケーションまでの機能を担当している点が異なる点となっています↓

組み込みソフトの立ち位置

図からわかるように組み込みソフト>ファームウェアとなっています。
組み込みソフトは、ファームウェアよりも広い概念を意味しているということがわかりますね。

では、組み込みソフトはソフトウェアと何が違うのでしょうか。

通常のソフトウェアがサーバー、ある意味スペックが無限なコンピューターの上で動くのに対して、組み込みソフトは限定されたリソースのコンピューターの上で動くという違いがあるそうです。

(リソースとはコンピューターを動かすために必要なもの)

今の話をちょっとまとめてみると、組み込みソフト>ファームウェアという構造になっていて、動く場所に違いがあるということですね。


・通常のソフトウェア開発と組み込みソフト開発の違い

まず、一般的なソフトウェア開発では主にPythonなどが使われますが、組み込みソフトの場合は主にC言語が使われるといった違いがあるようです。

C言語はコードが軽いため、リソースの少ない家電の中にある小型の基盤でリアルタイムに機器を操作するのにとても便利なんだとか!

また、通常のソフトウェアに比べて、組み込みソフトは処理が早いのも大きな特徴の一つです!

ただ、実際の開発において、一般のソフトウェアはWindowsやLinux等のOS上で作成と検証を行うので一台のPCがあればできるのに対し、
組み込み機器の場合、プログラミングをする機器と実際に動く機器は別々となるそうです。

そこで組み込みソフトのプログラムを1行ずつ書いては組み込み機器側で実行させ、その結果をハードウェア側に表示させるといった通信、制御の作業が必要となり、とても大変な作業になるんだとか。


〇まとめ

今回はソフトウェアの中からファームウェアと組み込みソフトについてみていきました!

私が感じたのは適材適所ということですね。
それぞれの長所短所を理解して、その時々に使うべきソフトウェアを選択していけばよいと思います。

これはソフトウェアに限った話ではなく、生活していく上でも役立つ話だなあと感じたのでぜひ私生活でも応用していきたいです。

実際に感じたことがあれば、また記事の頭で報告しますね笑笑]

先ほどご紹介したPLEN Cube、動画の2:13~位に動いている映像があるのでぜひご覧ください!ファームウェア頑張ってるなあという目線で笑笑


弊社PLEN Roboticsのnoteではインターン生や社員へのインタビュー、技術解説、マーケティング理論解説など多岐にわたってお届けしています!

丹精込めて書いているので、ぜひまた来週もご覧ください!!

この記事が参加している募集