周辺機器があって、それぞれに対するリアルタイム性が重要なときには、ファームウェアがなおさら大事だ。
注意
この文章は、ファームウェアを実装したことのない人物が書いています。
ファームウェア「ファームウェアとは、電子機器に組み込まれたコンピュータシステムを制御するためのソフトウェアで、ソフトウェアをROM等の集積回路にあらかじめ書き込まれた状態で、機器に組み込んだもの。」
ファームウェアが必要な理由
- 多数の周辺機器があってリアルタイムのモニタリングや制御を必要とする場合、CPUボード上で全ての面倒をみることはできない。
- それぞれのデバイスの信号はマイコンを経てそれぞれのコネクタ・通信のプロトールで、CPUボードと接続している。
- UART / SPI / I2Cといった通信規格
- CPUボードに用意されているインタフェースは、カスタムボードでも限られる。
そのため、マイコンを経て各種デバイスのモニタリング・制御が必要になる。 - 生じた変化に対して高い応答性で対応するには、少ない時定数の中で処理をしなくてはならない。
- 例:熱いものに触った時に手を引っ込めるのは反射です。脳に信号が伝わってから判断して行動しているわけではありません。周辺機器の制御の場合にも、応答性が必要な場合、CPUを介さずに処理する必要があります。ロボットの実装においてもそのようなアプローチがとられることがあります。
UART は、調歩同期方式によるシリアル信号をパラレル信号に変換したり、その逆方向の変換を行うための集積回路である。本機能のみがパッケージングされたICで供給されるものと、マイクロプロセッサのペリフェラルの一部として内蔵されるものとがある。wiki
シリアル・ペリフェラル・インタフェースは、コンピュータ内部で使われるデバイス同士を接続するバスである。パラレルバスに比べて接続端子数が少なくて済むシリアルバス規格の一種で、比較的低速なデータ転送を行うデバイスに利用される。wiki
I²Cはフィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム、携帯電話などで使われている。 Inter-Integrated Circuit の略で、I-squared-Cが正式な読みとされている。wiki
RaspberryPiのPythonによるPWM出力について
この文章の結論:
- 各種周辺機器があって、モニタリング・制御がある場合、マイコンとファームウェアを含めた設計が不可欠。
- ファームウェアの存在を無視してOSを議論しても不十分だ。
- ファームウェアのレイヤーで何が必要なのかを考えた設計と実装が、各種周辺機器を使いこなす。