1

AVR32 マイクロコントローラー (UC3C0512C) で C プログラムを実行しています。コマンドを発行avr32-size -A PROGRAM.elfすると、次の出力が生成されます。

PROGRAM.elf  :
section               size         addr
.reset                8200   2147483648
.rela.got                0   2147491848
.text                99512   2147491848
.exception             512   2147591680
.rodata               5072   2147592192
.dalign                  4            4
.data                 7036            8
.balign                  4         7044
.bss                  5856         7048
.heap                48536        12904
.comment                48            0
.debug_aranges        8672            0
.debug_pubnames      14476            0
.debug_info         311236            0
.debug_abbrev        49205            0
.debug_line         208324            0
.debug_frame         23380            0
.debug_str           43961            0
.debug_loc           63619            0
.debug_macinfo    94469328            0
.stack                4096        61440
.data_hram0            512   2684354560
.debug_ranges         8368            0
Total             95379957

誰かがこれらの値を解釈する方法を説明できますか? このリストに基づいてフラッシュと RAM の使用量を計算するにはどうすればよいですか?

更新 1:

フラグがないと-A、次のようになります。

   text    data     bss     dec     hex filename
 113296    7548   58496  179340   2bc8c PROGRAM.elf

更新 2:

私は動的メモリ割り当てを使用していないので、avr-libc user-manualstackpointerによると、空き RAM スペースは単純にマイナスになるはずです__heap_start

この場合:61440 - 12904 = 48536バイトの空き RAM スペース。

誰かがそれを確認できますか?

4

5 に答える 5

0

あなたが試すことができます

avr-nm --print-size --radix d --demangle x.elf

サイズを 10 進表記で取得します。

次に、コピーしてスプレッドシートに貼り付け、フィルター処理し、セクションごとに並べ替えて、合計することができます。

于 2013-05-28T12:26:07.290 に答える
0

これらの値は、コンパイルされた C コードのアセンブリ言語セクションです。詳細については、ドキュメントを参照してください。こちらの記事も参考になります。

タイトル.textの付いたセクションは、命令セクション、つまり組み立て説明書を表しています。.dataセクションは、変数 (int、配列など) のサイズを表します。列には重要な情報があり、size各セクションのサイズがバイト単位で示されています。.stackとは.heap、仮想メモリを設定するプログラムの実行に備えて割り当てられたメモリを表します。

于 2013-05-28T11:59:12.890 に答える