Optibootを書き込んでみる(Arduinoで気温/湿度/気圧計を作る その4) | かっぱのひとりごと

かっぱのひとりごと

日々の思いをつぶやいています。

フラッシュメモリが少しだけあまっていたので、ちょっと余計なことをしようかと。

センサーからデータを読むとき以外はスリープして2秒間は休ませる間欠動作をさせよう。
かなり省電力化できるんじゃない?

と思って調べてたら、ブートローダーにウォッチドッグタイマーのバグがあるらしく、Optiboot にするとバグはないらしい。

めんどくさそうだから後回しにしていた Optiboot。
ブートローダーのサイズが小さくなるだけなら特に魅力はなかったんやけど、バグがなくなるなら乗り移らない理由はない。

ということでちょっと調べてみた。
一回やったら忘れそうなので書き留めておく。

----- Arduino IDE 1.02以上 -----

https://code.google.com/p/optiboot/

↑ここからダウンロード


\bootloaders\optibootフォルダを

\arduino-1.0.5\hardware\arduino\bootloaders

にコピー(俺は上書き)


boards.txtの必要なものを

\arduino-1.0.5\hardware\arduino\boards.txt

に追記


----- Arduino IDE 0023以前 -----

https://code.google.com/p/optiboot/source/browse/optiboot/boards.txt?r=b91e3ce9d61bcdeb0ac5e471f25eecfce385835a

↑ここからダウンロード


\bootloaders\optibootフォルダを

\arduino-0023\hardware\arduino\bootloaders

にコピー(俺は足りないものだけコピー)


boards.txtの必要なものを

\arduino-0023\hardware\arduino\boards.txt

に追記

upload.maximum_size の値が変なので

フラッシュメモリが 32KB のモデルは
32768 - 512 = 32256

16KB のモデルは
16384 - 512 = 15372

に変更。(でいいと思う。)

これでマイコンボードの欄に Optiboot が追加される。

ブートローダーの書き込み方は、今までどおりで Optiboot から選ぶだけ。

<2014/04/13 追記>

ブートローダ領域を決めるヒューズビットについて
boards.txt を見ていると同じマイコンなのにヒューズビットの値が違うのはなぜ?
と思って調べてみた。
末尾が「P」と「V」では違うらしい。

ATMega328P モデル:high_fuses=0xde
Duemilanove
Nano

ATMega328V モデル:high_fuses=0xdc
LilyPad
Pro or Pro Mini

ATMega168P モデル:extended_fuses=0x04
Diecimila
Duemilanove
Nano
NG

ATMega168V モデル:extended_fuses=0x02
Japanino
Mini
LilyPad
Pro or Pro Mini