非常に強力なマイクロプロセッサと十分なメモリを搭載した組込みシステムを設計するのは比較的簡単です。しかし、リソースが制限された、ディープな組込みデバイスの世界では、これは通常現実的ではありません。
組込みの世界では、最小の部品構成表 (BOM) でもコストが精査され、デバイス 1 台あたり 1 セント未満のコストになることもよくあります。とはいえ、肥大化したファームウェアが BOM コストに与える影響は見落とされがちです。ファームウェアが過剰なメモリや処理サイクルを消費すると、知らないうちにハードウェア設計をより高価なプロセッサに押し込んでしまう可能性があります。
このハードウェアコストの増加は、デバイスごとの隠れたロイヤリティに相当します。生産量が増加すると、ハードウェアのこの隠れたロイヤリティは相当な額になる可能性があります。
より高価なハードウェアで無料ソフトウェアを使用するには、いくらかかりますか?
マイクロプロセッサの多様性とアプリケーション要件を考えると、これを計算するのはやや困難です。ただし、いくつかの一般的な半導体プロバイダーのマイクロプロセッサの広告価格を見ると、256KB FLASH (64KB RAM) から 384KB FLASH (96KB RAM) へのわずかな増加で、マイクロプロセッサ 1 個あたり最大 1 ドルのコストがかかる可能性があります。同様に、処理能力を 84MHz から 168MHz に上げると、さらに 1 ドル追加されます。したがって、マイクロプロセッサの選択だけで BOM コストを 2 ドル増やすのは簡単です。もちろん、このコストは実際に積み重なる可能性があります。特にデバイスの生産量が多い場合はそうです。
ファームウェアの肥大化によって生じる隠れたマイクロプロセッサ使用料を回避するにはどうすればよいでしょうか。まず、ファームウェアのメモリ消費とパフォーマンスに関する明確な設計目標があることを確認します。同様に重要なのは、開発チーム全体がこれらの設計目標に向けて作業していることを確認することです。そうしないと、ファームウェアが肥大化し、意図せず設計がより高価なマイクロプロセッサに押し込まれる可能性が高くなります。
次に重要な考慮事項は、組込みシステムに最適なコンパイラテクノロジを使用していることを確認することです。これは通常、商用コンパイラを意味します。GCC コンパイラは、最適化されていない適切なコードを生成しますが、最高レベルの GCC 最適化 (-O3) を信頼する人はいません。さらに悪いことに、最近、GCC -O2 最適化レベルの使用で問題が発生しました。いずれにしても、最高の商用コンパイラは、GCC よりも 20% から 30% 小さいコードイメージを生成するため、多くの場合、すぐに元が取れます。
リアルタイムOS とミドルウェアについてはどうでしょうか。これらのコンポーネントは通常、アプリケーションコードと同じファームウェアイメージに存在するため、フットプリントが小さくオーバーヘッドの少ない実行向けに設計された組込みリアルタイムOS とミドルウェアソリューションも探す必要があります。無駄なリアルタイムOS が原因で、組込みシステム設計ではるかに高価なマイクロプロセッサが使用されるケースを見たことがあります。使用されたリアルタイムOS は「無料」でしたが、それがもたらす隠れたハードウェアロイヤリティを考えると、実質的にロイヤリティが発生していました。
隠れたロイヤリティを回避するには、主に認識と計画が必要です。これには、最適なコンパイラ、最適な組込みリアルタイムOS、最適な組込みミドルウェアを選択する際のデューデリジェンス(適正評価手続き)が含まれます。初期費用だけでなく、各コンポーネントの総コストと利益を検討してください。「無料」ソフトウェアは、長期的には高価なハードウェアにつながる可能性があることを覚えておいてください。
適切な計画と組込みソフトウェアツールを使用すれば、ファームウェアを可能な限り小さなマイクロプロセッサに収めることができ、隠れたハードウェアロイヤリティを回避できます。