復刻:キーワードガイダンス第3回「電源制御」 ― 2014年03月05日 21時20分32秒
初出:技術評論社「組込みプレスVol.5」(平成18(2006)年11月3日発売)
家電製品、音響機器、ビデオ機器、携帯電話などの組込み機器は機械に強い人、弱い人など何の意識もせずに電源をON にしたりOFF にしたりする操作が行えるようになっています。
通常のアプリケーションの開発とは大きく異なる、組込み開発の特徴の一つにこの電源制御を挙げることが出来ます。
(1)機器の全体制御としての電源制御
テレビの電源を切るのにシャットダウン操作を意識する人はいません。 また、電源を入れっぱなしのまま、コンセントを抜いたりすることもあります。 携帯端末などのバッテリで動作する機器では電源ボタンの長押しなどの操作により起動したり、終了したりします。
現在の組込み機器での電源スイッチはメカニカルにロックしてON/OFF の状態が確定するようなスイッチはほとんど使用されていません。押している間スイッチがONになるようなプッシュスイッチが使用されています。そのようなスイッチで電源がONなのかOFF なのかはソフトウェアの状態管理により行われます。電源がOFF の時に電源スイッチが押されたら電源をON にする。電源がON の時に電源スイッチが押された ら電源をOFF にする。簡単にはそのような状態管理です。
このような機器では電源OFF の状態でもCPU は実は動作しています。 動作しているからといって、電流を大量に流せばすぐにバッテリが上がって動作することが出来なくなります。このようなことを避けるためにCPU は休止状態という動作状態にしてCPUへの電流供給が少なくて済むようにし、周辺機器の電源もOFF にします。
バッテリで動作する機器の場合はバッテリがなくなるような状況では極力バッテリを温存するために省電力動作を行い、いよいよバッテリの残量が低下して不意にアプリケーション動作中に電源が切れてしまったとしてもバッテリを充電して次に電源をONにすると正常に動作することが要求されます。
このような電源制御は多くの場合は機器毎に最適に設計をし直す必要があります。また、単純に起動や終了時の設計だけではなく、アプリケーション動作中にいつでも電源 OFF 操作を行うことが出来るための全体に波及するような設計が必要です。
組込み機器に組込みLinux などを取り入れる場合が多くなりましたがUNIX 系の OS はシャットダウン操作が必要なことで有名なOS です。 多くの場合は電源OFF 操作をしても起動したままシャットダウンなどせずに表示だけをOFF するなどの対応がされています。
μITRON なども電源制御に対する標準システムが存在するわけではありませんが、シャットダウンなどは必要ではないため、プロセッサそのものを休止状態にして電源 ON 操作で「起こす」などの処理は割り込み処理とタスクの連携により行われます。
(2)機器に搭載された周辺機器の制御のための電源制御
機器内部に搭載されたドライバIC などのチップの電源、通信I/F によって接続された外部機器の電源などの制御も重要な電源制御機能の一部です。技術的には専用のハードウェアで制御することも可能ですが、修正が容易、コストが安いなどの理由からソフトウェアで制御することは一般的になっています。
CPU の汎用のポートと外部機器とを接続してCPU からそのポートに対応したビット単位のON/OFF を行うことにより周辺機器の制御を行います。 これらの制御は個々のチップメーカ、機器のデータシートに記述されたタイミングチャートに従って、制御を行う必要があります。
オーディオ系の機器の場合はこの電源制御と同時に音声ノイズがイヤホンやスピーカから出力されないようなMUTE制御も必要になってきます。 映像系の機器の場合はオーディオ系に加えて映像的なノイズの対策も必要です。 周辺機器には起動して動作可能になるまでのタイムラグなどがあり、メインのCPU はそれを意識してアプリケーションとのI/F を調整する必要があります。 一つのチップなどの制御対象に対して複数のポートのON/OFFをタイマと連携させた複数のタイミングで制御を行います。
タイマ処理の実装には以下の方法があります。
- タイマの時間分解能に応じてCPU をループで浪費させる
- タイマ割り込みにより基準時間を数えて制御
- タイマ制御対象が複数に及ぶ場合は一つの基準時間を数えて間接的に制御対象毎に利用する
電源制御を行うためにはタイマ処理は必須の機能となります。
最近のコメント