Arduino のメモリ削減


Arduino の動作が不安定なので、調べてみたところ、メモリ不足のようです。

リファレンス に次のような記述があります。
SRAM の容量は大きくありません。
SRAM を使い切ってしまうと、あなたのスケッチは期待通りの動作をしてくれません。

どのくらい SRAM を使うのかは、次の方法で調べることできます
(1) IDE の設定を変更する。
20141012arduino_setting
(2) コンパイルする。
20141012arduino_compile
(3) 生成された elf ファイルを解析する。
data (初期化した変数) と bss (初期化しない変数) の合計が、SRAM の容量です。
20141012arduino_objdump

メモリを削減する方法として、次の2つが有効です。
(1) 長い文字列の使用を避ける。
(2) Serial#print には F マクロを使用する。

実際に適用してみました。
bss はあまり変わりませんが、data が 70% ほど削減され、全体で 35% ほど削減されました。
変更前: data 02a4 + bss 02e6
変更後: data 00b2 + bss 02ee

参考
Arduinoチュートリアル 基礎編 メモリ
Arduino Uno のメモリ
Arduino でのメモリ使用率の調べ方
Arduinoで、小っちゃいIC(ATTiny)を使う方法
avr-objdump


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です