extended_fuses=0x00
BOOTSZ1/0=0,0 => 1024word = 2KB
16KB-2KB = 14KB => 1024*14=14336(0x3800)
high_fuses=0xca
BOOTSZ1/0=0,1 => 512word = 1KB
8KB-1KB = 7KB => 1024* 7= 7168(0x1c00)
アプリの最大サイズ14336,7168とatmega/Makefile,atmega8/Makefileの--section-start=.text=0x3800/0x1c00に対応している。
% avr-size atmega88/ATmegaBOOT_88_ng.hex
text data bss dec hex filename
0 1642 0 1642 66a atmega88/ATmegaBOOT_88_ng.hex
% avr-size lilypad88/LilyPadBOOT_88.hex
text data bss dec hex filename
0 1960 0 1960 7a8 lilypad88/LilyPadBOOT_88.hex
% avr-size atmega/ATmegaBOOT_168_diecimila.hex
text data bss dec hex filename
0 1958 0 1958 7a6 atmega/ATmegaBOOT_168_diecimila.hex
% avr-size atmega/ATmegaBOOT_168_ng.hex
text data bss dec hex filename
0 1702 0 1702 6a6 atmega/ATmegaBOOT_168_ng.hex
% avr-size atmega/ATmegaBOOT_168_atmega328.hex
text data bss dec hex filename
0 1950 0 1950 79e atmega/ATmegaBOOT_168_atmega328.hex
% avr-size atmega/ATmegaBOOT_168_pro_8MHz.hex
text data bss dec hex filename
0 1968 0 1968 7b0 atmega/ATmegaBOOT_168_pro_8MHz.hex
% avr-size atmega8/ATmegaBOOT.hex
text data bss dec hex filename
0 1002 0 1002 3ea atmega8/ATmegaBOOT.hex
mega8のbootloaderは1KB以内なので、
mega88等mega8のbootloaderを改造したほうがいいかもしれない。
そうしたら7168byteまで使える。
atmegaとatmega8(とlilypadとbt)はなにが違うのだろうか。特別な機能がある?
というか、mega88でarduinoクローンを作るなんて無駄なことはやめて
bootloader無しで直接書き込みをする手順を確立したほうが役に立つのではないか。
mega88で8192byteまで使えるようになる。mega168で16384byte、mega328で32768まで。
そもそもarduinoにbootloaderがあるのはなぜか?
↓
AVRライタなしでアプリケーションを書くため。
↓
AVRライタを持っているならばブートローダ不要。
「完成版をmega88で安くすませる」という目的ならばbitbangでDuemilanoveをAVRライタ化して
スケッチ本体をbootloader無しで焼いた方がよいに違いない。
赤外線シリアル通信をするbootloaderを作ったらバカバカしいかもしれない。
単方向通信で光通信でベリファイなしの書き込みとか。
リセットをかけられないか。
そういえば、リセットはどうやっているのだろう。
シリアルの特殊な信号線をつかってるのかな。
最終更新:2009年04月21日 22:27