こんな選び方はどうでしょうか
ソフトウェア開発を始める時、どうやってマイコンを決めたらいいのでしょうか。
- 世の中のトレンドから選ぶ
- 使用実績のあるマイコンから選ぶ
最近話題のARMコアマイコンを使ってみたい!というわけですが、いくらトレンドと言えど流行を追いかけてはいけません。マイコンには特色があって利用分野が細分化されています。ARMコアマイコンが悪いわけではなく、ARMコアにはARMコアの得意な分野があるのです。ルネサスのラインナップで言うならRZ、SH、RX、V850、RL78等々ありますが、それぞれに得意な分野があるのです。これを無視してマイコンを選定すると機能不足などのトラブルに見舞われることになります。
一見正しそうに見えますが、本当にそうでしょうか?使い勝手やクセがよく分っていて、ROMやRAMの容量も十分。文句なさそうに見えますが、そのマイコンの製品ライフサイクルはどのくらいでしょうか?メーカーの統廃合が進むにつれ、製品ラインナップもスリム化(正しいリストラ)され、マイコンもライフサイクルが大きく変りました。採用したばかりなのに、製品設計中に「ディスコン(製品製造中止)になりました」なんて連絡が舞い込むことも…。
どうやって選定する?
これ!というベストアンサーはありませんが、その時その時のベストを尽くす必要があるでしょう。
- 基本仕様から
- 構成仕様から
- 製品環境から
- ライフサイクルから
- ソフトウェアの規模から
基本中の基本ですが、そのソフトウェアもしくはソフトウェアが搭載される製品で何を実現したいのか。その上でソフトウェアで実現することとハードウェアで実現することを切り分ける必要があります。モーターをPWM制御したいのに、タイマー出力が弱いマイコンを選んではいけません。LCDに表示する機能を持たせたいのに、LCD制御を持たないマイコンを選ばないほうが無難です。この時点では機能の洗い出しで十分でしょう。マイコンが処理するのか周辺装置で処理するのか不明確だからです。
ハードウェアで実現することのうち、マイコンが担当する部分を明確にします。スイッチはいくつ必要か、LEDはいくつ直接駆動させるのか、通信仕様は何を利用するのか…etc。これらが決まってくるとマイコンの種類が絞れてきます。少なくとも大枠のランナップは決められるでしょう。
これはソフトウェアと直接関係はしませんが、製品の動作環境(駆動電圧)によっても選ぶマイコンが変わってきます。5V動作できるマイコンもあれば、1.8Vと低電圧駆動が可能なマイコンもあります。ノイズが多い環境では低電圧駆動は難しいでしょうし、低消費電力を求められる製品では5V駆動は難しいでしょう。高温や低温環境で使用できるマイコンもあれば、一般環境でしか動作しない(保障されていない)マイコンもあります。完成した製品がどんな環境で使用されるのかも選ぶ際に知っておく必要があります。
ラインナップが絞れてきたらどのシリーズがいつ販売開始になったのかをざっくり調べましょう。代理店をご存じであれば聞いてみるのがbetterです。聞く時は「このマイコンはディスコン対象になりますか?」「このマイコンはどのくらい製品期間ありますか?」等々ストレートに聞いてしまいましょう。折角選んだマイコンが販売終了対象になってしまってはソフトウェア資産が藻屑と消えてしまうリスクを抱えることになります(置き換えることを前提に作り方を工夫しておけば、もしもの時も安心です)。
ここが一番難しいところでしょうか。この分野だけで沢山の研究が行われていますし、沢山の書籍が販売されています。難しいですけど先人たちが築いた手法をもって開発規模を見積もる必要があります。「ソフトウェア 見積もり」で検索すると関連項目がでてきますので、触りくらいは知っておいた方がいいでしょう。私自信は小規模の開発が多かったため、機能数、画面数、スイッチ数、OSの有無、この辺りから類推します。正直、経験によるところが大きいです。
自社でやるには
ソフトウェア開発の新人が単独でマイコンを選定するには苦労が伴うでしょう。Try&Errorも一つのやり方ですし、その経験があった方が大きく伸びることもあります。しかし、中小企業、個人事業ではそんなリスク(工数や選定ミスによる再購入など)は背負えないのが現実ではないでしょうか。そんな時はソフトウェア開発を専門とする企業に製作を依頼するもよしですが、いわゆる丸投げではknow-howが残りません。開発を根付かせるには、支援という立場で一緒に開発&サポートをしてくれる企業を探すのが最良かと思います。
参考図書