組み込みシステムのフットプリントの少ない成果物を設計またはコーディングする際に留意すべき点を投稿してください。
一般的な情報が必要なため、コンパイラやプラットフォームの詳細は提供していません。ただし、LinuxベースのOSに関する特定の情報も歓迎します。
組み込みシステムのフットプリントの少ない成果物を設計またはコーディングする際に留意すべき点を投稿してください。
一般的な情報が必要なため、コンパイラやプラットフォームの詳細は提供していません。ただし、LinuxベースのOSに関する特定の情報も歓迎します。
どの程度まで下げたいかによります。私は現在会計プリンターのコーディングを行っていますが、OS はなく、主なルールは動的メモリ割り当てではありません。面白いことに、私は乗組員に完全に最新の C++ をコーディングするよう説得しました ;)。
実際には、私たちが決定したいくつかのルールがあります。
一般的な答えはありません。言語/プラットフォームに固有のものだけです...しかし
小さなメモリフットプリント...
もっとあるでしょう。
実際にフットプリントを低くするには、Assembly を直接行うことを検討してください。
C または C++ の Hello World が 20kb 以上であることは誰もが知っています (すべてのデフォルト ライブラリがリンクされるため)。アセンブリでは、このオーバーヘッドはなくなりました。コメントで指摘されているように、標準ライブラリをかなり減らすことができます。ただし、アセンブリをコーディングするときに得られるコード密度は、コンパイラがより高度な言語から生成するよりもはるかに高いという事実は変わりません。したがって、すべてのバイトが重要なコードの場合は、アセンブリを使用してください。
また、プロセッサの能力が低いデバイスでプログラミングする場合、(たとえば) マシンを制御するのに十分なほどリアルタイムでプログラムを高速化するには、アセンブリ言語でのプログラミングが唯一の方法かもしれません。
このような制約に直面した場合は、システムが負荷の下で動作することを保証するために、メモリを事前に割り当てることをお勧めします。「オブジェクト プーリング」などの設計パターンを使用して、システム内でリソースを共有できます。
C言語は、厳密なリソース (つまり、メモリと計算サイクル) の制御を可能にします。それは強く考慮されるべきです。
再帰は悪用されやすく、スタック オーバーフロー状態になる可能性があるため、避けてください。