2010年6月26日土曜日

マウスに使うマイコン

 ずいぶんと更新が開いてしまいましたが、今回はマウスに使うマイコンについてです。今回書くことは、実はもう半年くらい前に考えたり調べたりしたことだったりします……。

 前回のマウスでは、SH-2コアのSH7146マイコンを使っていたのですが、今回はARMのCortex-M3アーキテクチャコアを持つSTM32に変更しようかと考えています。理由は、小型な物でも比較的大容量なRAMを有する点が大きいです。特にハーフマウスに使う場合に、外部RAMをつけるのはスペース的に厳しいものがありますからね。あと、今使っている7146は結構消費電力が大きいってのが難点。

 ただ、SHに比べてSTM32は内蔵Flashの速度があまりよくないようです。SH7146のときは、コアクロックを最大の80MHzにしても、ノーウェイトでアクセスできたのに対し、STM32では72MHzでコアを動作させると、2ウェイトステートアクセスになってしまいます。しかし、効率を上げるために2x64ビットのプリフェッチバッファをフラッシュと命令バスとのアクセスインタフェースに置いてあるらしいので、分岐とかジャンプとかでミスヒットしない限りはノーウェイトと変わらなさそう。ただ、分岐が多い場合とかはミスヒットして結構スループット落ちそうだけどどうなのだろう?対策とかされてるのだろうか、その辺はまだあまり調べてません。あとは、SH-Cのすばらしい最適化の恩恵が受けられないのが結構痛いですが、ある程度計算の仕方を考えて書けば、マウスのプログラムならば充分な性能かなと考えてます。実際、最近のマウス界ではこのマイコンが流行っているようですし、たまにはルネサス以外のマイコンも使ってみようかというのが本当の使う理由だったりもします。

 ちょっと立て込んでるのと金銭的な事情でいつ製作に入れるかは分かりませんが……。 効率的なコーディングを行うための注意点とかは、また今度調べます。