消費電力低減策を検討中

さて、ボードが出来上がり、自分が移植したOS上でソフトが走り出すと、いろいろ脇においていたことがまた気になり始めます。
現在ubuntu上でビルドした400MHz版のsample1を延々と走らせていますが、結構BF532が暖かくなります。熱いというほどでもありませんが、原因は分かっていて、IDLE中もクロックを下げていないのが問題です。BlackfinはIDLE時の電力制御を細かくできるのですが、コアクロックを止めてしまうとL1メモリへのDMAが効かなくなり、小規模システムでは二進も三進もいかなくなります。また、コア電圧を変更することもできますが、PLLをいったん停止するためにタイマーのきざみが狂ってしまいます*1
オーディオ割り込みのようなレスポンスをそれなりに要求するシステムでは、コアクロックのみアイドル時にディバイダで小さくしてしまうのが合理的だと思われます。この場合コアクロックをシステムクロックより低くすることはできませんから、現在の私のボードだと、アイドル時のコアクロックを1/4程度にするのがよいと思われます。sample1やtalkthroughのような負荷の低いアプリの場合、これで消費電力を半分程度にできそうです。
やるかどうかは今週末に決めます。コードは簡単なのですが、ディバイダの設定値の指定方法を考える必要があるので。

*1:27MHzを外部タイマー端子にいれときゃよかった