« Home Gatewayの3.3V化 | メイン | Arduinoでのメモリ使用量の削減 »

2013年6月19日 (水)

Arduinoでのメモリ使用率の調べ方

先日,Arduinoでプログラムを作っていたら,一定のプログラムサイズを超えたあたりから突然正常動作しなくなった.一番疑わしいのはRAMが足らなくなった可能性.ただ,このRAM使用量,調べるのがなかなか容易ではない.

なぜなら,普通にArduinoでコンパイルしたときに出るのはFlash ROMの使用量だけで,RAMの使用量は出てこないからだ.

20130619_103335_pm

いま使っているArduinoのチップはRAMが2kBしかないので,ちょっとしたプログラムを作るとすぐ容量を使い切ってしまう.なので常にRAMの使用量を気にしながらプログラムを作らないといけないにもかかわらず,コンパイル時にRAM使用量が出てこないのは開発環境としてはかなり片手落ちな感じだ.

どうにかRAM使用量を調べることができないかといろいろ調べていると,コマンドラインで avr-objdump というツールを使うことでRAMの使用量を調べることができることが分かった.

まず,Arduino IDEの環境設定で,「より詳細な情報を表示する」の「コンパイル」にチェックを入れる.

20130619_101847_pm

Sketchをコンパイルする.コンパイルメッセージの最後に.elfファイルが保存されるテンポラリフォルダの位置が表示される.

20130619_102137_pm

このテンポラリフォルダをターミナルで開く.

20130619_102331_pm

ターミナルで以下のコマンドを実行するとメモリ使用率が表示される.
20130619_102458_pm

かなりめんどくさいけど,とりあえずこれでRAM使用量を調べることができそう.これを見ながらせっせとRAM使用量削減に励んでみよう.

トラックバック

このページのトラックバックURL:
http://app.blog.eonet.jp/t/trackback/354151/31652355

Arduinoでのメモリ使用率の調べ方を参照しているブログ: