2017-04-18 13 views
-1

グローバル(ROM & RAM)変数を定義していますが、どこでも自分のコードで使用したことはありません。 現在、私は緑の丘コンパイラで作業しています。未使用のグローバル変数を見つける機会はありますか?組み込みシステムで使用されていないグローバル変数

+1

定数として宣言されている場合を除き、それらは.textまたは.rodataになります。バイナリを調べましたか? –

+1

リンカによって生成された.mapファイルは、グローバル変数のアドレスを特定する必要があります。ただし、使用されていない変数や関数はリンカーによって実行可能ファイルから削除されることがあります。 – kkrambo

答えて

0

通常、これは生成されたリンカマップファイルで確認できます。
私は見つけることができるa manualから引用したよう:(ページ207)

マップファイルの生成
は、マップファイルの生成を制御します。
デフォルトマップファイル(-map)の生成 - [デフォルト]
オブジェクトファイル名に.map拡張子を加えたマップファイルを作成します。
ユーザー指定のマップファイルを生成する(-map = filename) -
指定されたファイル名でマップファイルを作成します。
•抑止マップ(-nomap)

あなたは、あなたのプロジェクトに追加の引数を使用してこれらのオプションを養うことができ、そしてそれはあなたのファームウェアの位置や大きさについて知っているがあり、すべてを報告したファイルを作成します。

ファイルは出力ディレクトリの "読み取り可能な"テキストで、.mapの拡張子が付きます。 削除シンボルまたは未使用シンボルを検索できます。

マップファイルを作成するのがデフォルト動作であることに注意してください。

多くの場合、リンカーで利用できる便利な機能の1つは、callgraphの作成です。どの機能が互いに依存しているかを簡単に見ることができます。さらに重要なのは、最悪のケースである予測可能なのスタック使用状況を関数ごとにレポートします。
通常、割り込みによるスタックの使用は予測しません。

関連する問題