この投稿では、情報伝達インタフェースとして関数やソフトウェアコンポーネント(以降、処理)間インタフェース変数やCPU CORE間インタフェース変数、コンピュータ間インタフェースについて説明いたします。尚、アプリケーション・プログラム・インタフェース(API)は、機能(処理)とその結果となるので、別の投稿で説明したいと思います。
処理間インタフェース変数
処理間インタフェース変数は、下図のように関数やソフトウェアコンポーネントなどの処理同士が、情報をやり取りするために使用する変数です。このような変数は、static
変数として定義されることが多いです。
この変数を使うことで、ある処理の出力結果を他の処理に渡し、処理間でデータを共有することができます。

* | 処理:関数やソフトウェアコンポーネント |
** | インタフェース変数は、必ず1か所だけで書き込むようにしてください。 複数の場所から同じ変数に書き込むと、動作が不安定になったり、バグの原因になります。 また、優先度の異なるタスクや割込み処理とデータをやり取りする場合は、変数の書き込み中に他の処理が割り込んでこないようにする必要があります。 このような場合は、セマフォ(Semaphore)やミューテックス(Mutex)などを使って、書き込み時に排他制御(アクセス制限)を行ってください。 ※補足: セマフォやミューテックスは、複数の処理が同じ変数に同時にアクセスしないようにする仕組みです。 「排他制御」は「1つの処理だけが安全に変数を扱えるようにすること」を意味します。 |
CPU CORE間インタフェース変数
CPU CORE間インタフェース変数は、下図のように複数のCPU CORE間で情報をやり取りするために使用する変数です。この変数は、共通RAM上のstatic
変数として定義されることが多いです。
この変数を使うことで、あるCPUコアで処理した結果を別のコアへ渡し、CPU CORE間でデータを共有することができます。

* | インタフェース変数は、必ず1か所だけで書き込むようにしてください。 複数の場所から同じ変数に書き込むと、動作が不安定になったり、バグの原因になります。 また、優先度の異なるタスクや割込み処理とデータをやり取りする場合は、変数の書き込み中に他の処理が割り込んでこないようにする必要があります。 このような場合は、セマフォ(Semaphore)などを使って、書き込み時に排他制御(アクセス制限)を行ってください。 ※補足: CPU CORE間インタフェース変数は、ミューテックス(Mutex)を用いても排他制御できませんので、ご注意ください。 |
コンピュータ間インタフェース
コンピュータ間インタフェースは、下図のように主に通信になります。
通信では、送信側コンピュータがアドレスやIDを付けてデータを送信し、受信側はそのアドレスやIDをもとに、自分宛かどうかを判定して受信を行います。
通信においても、「アドレス」と「データフォーマット」によって構成されており、処理間でデータを共有するstatic変数
のような役割と考えることもできます。ただし、通信はネットワーク経由で行われるため、伝送の信頼性やタイミングの考慮が必要です。
