19

私はアーキテクチャを構築するのが初めてで、組み込みソフトウェアに取り組んでおり、プロジェクト バイナリのデバッグ フォルダにある .axf ファイルについて学習しようとしていました。

これは、ビルド プロセス中にリンカーによって生成されたアーム実行形式ファイルであり、クラッシュのデバッグに使用されることがわかりました。したがって、デバッグ情報が含まれていることは明らかですが、それがどのような情報であるかは明確ではありませんか? また、デバッグ フォルダーには .map ファイルが 1 つ存在しますが、これら 2 つのファイルの違いは何でしょうか?

4

1 に答える 1

29

AXF ファイルは、 ARM の RealView コンパイラ (これも Keil の ARM-MDK の一部) によって生成されるオブジェクト ファイル形式で、オブジェクト コードとデバッグ情報の両方が含まれています。デバッガーでは、オブジェクト コードだけがターゲット自体に読み込まれますが、コードとデバッグ情報の両方が開発ホストのメモリに読み込まれます。

JTAG、SWD、またはその他の接続を介して (クラッシュだけでなく、あらゆる種類の) デバッグを行う場合、そのコードを元のソース コードに関連付けるデバッグ情報と共に、ホスト上でコードを利用できる必要があります。デバッグ接続では、レジスタ値などの最小限のデータのみが転送されます。たとえば、デバッガーはプログラム カウンター値を取得し、AXF のデバッグ データを使用して、ホストで使用可能なアセンブラーとソース コードを表示できます。

MAP ファイルには同じ情報の一部が含まれていますが、マシンで使用するのではなく、人間が読みやすく消費することを目的としており、ソース レベル デバッガーが必要とするオブジェクト コードの関連付けデータに対するソース コード行は含まれていません。

ほとんどの場合、無視できます。コンパイラが生成し、デバッガがロードします。ツールチェーンはおそらく、プロダクション プログラミングに使用する .hex ファイルも生成し、マシン コードと定数データと初期化子のみを含みます。

于 2013-07-20T16:13:37.567 に答える