はじめに
ソフトウエア開発の経験が長くても、いきなり「組込ソフトウエアを開発しろ」と言われると面食らう方が多いのではないでしょうか。 インターネットで情報が取り放題の現在、がんばって検索するといつかは欲しい情報が揃うと思いますが、組込ソフトウエア開発の全体像を解説するまとめサイトがあったら役に立つだろうな、と考えました。 そんな思いから、ここでは初めて組込ソフトウエア開発がミッションとなったエンジニアの皆さんをターゲットに、組込ソフトウエア開発において何を考えて何を選択してどう組み上げていく必要があるのかを少しづつ解説していきます。■組込機器とソフトウエア
「IoT:Internet of Things」という言葉がよく聞かれるようになったのは2014年ころだったでしょうか。それまでインターネットと言えば人間がパソコンでWWWなどを利用するものでしたが、今ではコンピュータ(マイコン)が内蔵されている電子機器=組込機器が社内LANやインターネットを介して他の機器と通信を行う、まさにモノのためのネットワークの時代となりました。マイコンには当然ソフトウエアが必要で、今後ますます組込機器向けソフトウエア=組込ソフトウエアを開発する機会が増えて行くでしょう。 しかし、組込ソフトウエアの開発は、パソコン向けソフトウエア開発と大きく異なり、いろいろな事情や制約があります。そもそも、CPUやメモリ、各種デバイスが搭載されたハードウエアがあっても、それは「ベアメタル」と呼ばれる状態で、ソフトウエア的には空っぽです。全部自分で書くか、どこかからソフトウエア部品を入手して、組み合わせて使う必要があります。 これが、組込ソフトウエアの面倒なところだと思います。■予定内容
大きくはこんな順番で書いていきます。第1シーズン 組込ソフトウエア開発概説
第2シーズン TCP/IPネットワーク
第3シーズン ネットワークセキュリティ
第4シーズン USBドライバ
では、早速「第1シーズン 組込ソフトウエア開発概説」から始めます!
第1シーズン 組込ソフトウエア開発概説
■コンピュータ、組込機器、マイコン...
最初はここで使う言葉の定義づけから入りましょう。
・コンピュータ
一言「コンピュータ」と言っても、人によっていろいろイメージが異なると思います。
ここでは、CPUと呼ばれるICチップのことを「コンピュータ」と呼ぶことにします。
・組込機器
そして、このコンピュータ(=CPU)が内蔵されている電子機器のことを「組込機器」と呼ぶことにします。普段いろいろなところで触れている電気製品でコンピュータが入っていないものを探すのが難しいほど、今の世の中は組込機器であふれているのです。
・マイコン
当然、パソコンと組込機器ではコンピュータに要求される機能・性能が全く異なります。組込機器向けのコンピュータはサイズが小さく、消費電力が少なく、価格が安く...のようなパソコンと違う満たすべき条件があり、それを実現するため機能を限定し、クロックを落とし、メモリサイズを小さくし...のような特徴を持ちます。ここでは、こういった組込機器向けのコンピュータのことをマイクロコントローラ略して「マイコン」と呼ぶことにします。
・ファームウエア
このマイコン上で動く専用ソフトウエアが組込ソフトウエアですが、ここでは「ファームウエア」と呼びます。この場合の「ファーム」はfarm(農場)ではなくfirm(硬質な)から来ており、ハードウエア(hard)とソフトウエア(soft)の中間的な位置づけでこの名がついているようです。
■今日の閑話
筆者がこの世界に入ったのは今から20年ほど前で、これまで某国民的ISDNルータなど、数多くの組込機器にネットワーク機能を入れる仕事をしてきました。その中で経験したちょっとしたトラブルやその原因調査方法、解決方法なんかも書いていこうと思います。よろしくお願いします!