ELF ファイルのコンテンツの検査
ELF ファイルには有用な情報が含まれています。IAR Embedded Workbench には ELF ファイルのコンテンツを分析するコマンドラインツール ielfdumparm (IAR ELF Dumper) が付属しています。この情報の多くは、一部のツールセットによって意図的に削除されるか、生成されない場合がありますが、デフォルト設定で IAR ツールチェーンを使用すると、次のような情報を得ることができます。
ターゲットハードウェア要件(バイト順序やハードウェア / ソフトウェアの浮動小数点など)。
ファイル内およびターゲット ハードウェアで実行中のアプリケーション サイズ。セグメント、セクション サイズ、およびシンボルで表示されます。
生成されるアセンブラコード — 実行される正確な命令。
ielfdumparmはシンボルを使用してコードとデータを区別し、利用可能な逆アセンブリを提供できます。デバッグシンボル - 使用可能な正確な情報は、ファイルを生成したツールチェーンによって異なりますが、 IAR ビルドツールでは、C/C++ ソースコードファイルと関数の名前を使用できます。
情報は、プレーンテキストまたは機械読み取り可能な JSON 形式のリストや表として取得できます。JSON 形式にはすべてのフィールドの説明が含まれており、出力の説明が必要な場合に推奨されます。ielfdumparmの使用方法については、IAR ELF Dumper—ielfdumparmを参照してください。
注記
出力サイズを削減するため、ielfdumparmはNULL値を出力せず、代わりにそのような値は省略されます。
アプリケーションメモリ使用量の推定
ielfdumparm を使用して、アプリケーションが使用するメモリの量を推定できますが、注意すべきいくつかの点があります。メモリ使用量を推定し、ターゲットハードウェアで利用可能なメモリと比較する場合、残りのメモリが 400 バイトで、命令が 4 バイトの場合、チップに 100 個の命令を正確に追加できると仮定することはできません。一般的にそうならない主な理由としては、以下のことが挙げられます。
フラグメンテーション。アライメントの制限と特定のアドレス領域に存在する機能の必要性により、メモリが利用可能であっても断片化され、使用できない状況があります。32バイトのチャンクで1 kByteが利用可能な場合、100バイト連続した領域をどこにも配置できない可能性があります。
コンプレッション。ILINK は、スペースを節約するために、イニシャライザなどのデータを圧縮する場合があります。これを実行するかどうか、およびその方法は、最良の結果をもたらす圧縮の種類によって異なります。このため、ELF ファイルの一部のセクションのサイズは、実際にはソースデータよりも小さい場合があります。これにより、サイズの増加も予測しにくくなります。
現在のメモリ使用量に関する正しい情報があっても、変更が将来のメモリ使用量に与える正確な影響を予測することは困難です。