関数化の回および
ヘッダファイルを使いこなす回で解説した通り、プログラムを作成する際には各小機能を実現するための関数とそれらを使用して実際にやりたいことを実行するメイン部分に分けて考える必要があります。
メインのソースに書いてある様な「
こういう事をやりたい」という部分を
アプリケーション層と呼ぶことにします。(本当は違うっぽいが)
基板上の部品など
マイコンに対する入出力を実現する部分を
ハードウェア層(物理層)と呼ぶことにします。
アプリケーション層でやりたい事をマイコンの端子に伝えるためにはハードウェアとアプリケーションのソフトをつなぐための中継用ソフトウェアが必要になります。この
中継用ソフトウェアはハードウェアとソフトウェアの中間に位置するため
ミドルウェアと呼ばれます。とりあえずミドルウェア層と呼んでおきます。
人間に例えると、
頭脳(大脳)が
アプリケーション層、指先の
筋肉が
ハードウェア層、アプリケーションとハードウェアをつなぐ
神経(と小脳)が
ミドルウェア層といった感じでしょうか。脊髄反射の様にミドルウェア層単体でも何かしらの動作を行うことができ、これは
アプリケーション層での反応速度を上回ります。
アプリケーション層を
上位層、
ミドルウェア層を
下位層という呼び方もします。
ただ、上位だから偉い、下位だからショボいという訳ではありません。
ミドルウェアを作成するには使用する各マイコンに対する知識(特に特殊機能に関して)が必要となってきます。パソコンのプログラムで言うところの
授業で習う部分が
アプリケーション層で
OSや各装置のドライバが
ミドルウェアに相当します。上位層のプログラムを組めるから下位層なんて余裕なんて事にはなりません。
では、逆の場合はどうでしょう。
OSやドライバを作成可能な方であればアプリケーション層を
ある程度作製することは可能なはずです。ただし、アプリケーション層の全てを作製できるとは限りません。OSを作成可能な人が
動力学(物理演算)を駆使したアプリケーションを作成するなんて事はほぼ無いでしょう。
どちらが偉いという事は無く高度な制御を行うためには上位層も下位層も必要となります。
この回までに説明してきた事はアプリケーション層とミドルウェア層の境目になります。
ここから
下に潜れば潜るほど割り込み処理などCPUを理解する必要があり技術の習得難易度が上がります。
逆に
上に昇れば昇るほど運動方程式など
学術的な知識が必要となるためこれまた習得難易度が上がります。
次回以降、上にも下にも知識の領域が広がるように話を進めていきます。