広告
#blog2navi()
**[[Arduinoのブートローダーをコンパイル>blog/2012-05-29/Arduinoのブートローダーをコンパイル]] [#f8361aef]
久しぶりに[[Arduino]]互換ボードを作り、ブートローダーを書き込んでArduino IDEからプログラムを書き込もうとしたら
avrdude: stk500_recv(): programmer is not responding
というエラーが出て書き込めない。~
回路や半田など考えられるミスを探してみたがわからなかった。
ためしに以前作ったボード(動いていたボード)で試したが、今度は
avrdude: stk500_getsync( ): not in sync: resp=xxxx
というエラーが出てやはり書き込めない。
その以前作ったボードに再度ブートローダーを書き込んだら
avrdude: stk500_recv(): programmer is not responding
と新しいボードと同じエラーがでた。この辺でどうもハードの問題っぽくないかもと考えた。
もしかすると[[Arduino]]のバージョンが変わったためにうまくいかないのかと思い、再度ブートローダーをコンパイルした。ブートローダーのコンパイルに関しては、[[ここにまとめている>Arduino/home_made_board]]
ところが新しくコンパイルしたブートローダーを書き込もうとするとエラーが出て書き込めない。~
以前の同じブートローダーと比べてみるとサイズが2倍近くあった。
以前はちゃんとコンパイルできて、ちゃんと書き込めたのに今はできなくなっている。~
ソースは変わっていないので、何かおかしい。
結局ブートローダーのコンパイルに関しては[[How to: Compiling the Arduino Bootloader:http://n0m1.com/2012/04/01/how-to-compiling-the-arduino-bootloader/]]に書いてある通り、ATmegaBOOT_168.cの584行目付近を
#if defined(EEPE)
while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete
#else
while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete
#endif
/*
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete
#else
while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete
#endif
*/
と変える。これは「error: ‘EEWE’ undeclared」というエラーを出さないようにするため
そしてMakefileの52行目付近で
OPTIMIZE = -Os
# OPTIMIZE = -O2
と変える。これは上述したコンパイル後のhexファイルが以前のものの2倍近くになっているという問題を解決してくれる。
で、このようにコンパイルしたブートローダーを書き込むとうまく行く。
しかし、相変わらず
avrdude: stk500_recv(): programmer is not responding
というエラーが出てArduino IDEからプログラムを書き込むことができない
以前うまく行ったときとの違いはArduinoのバージョンとかavrdude関連だと思う
RIGHT:continue on: [[[Arduinoの問題>blog/2012-05-29/Arduinoの問題]]]
RIGHT:Category: [[[Arduino>blog/Category/Arduino]]][[[トラブル>blog/Category/トラブル]]] - 01:33:00
----
RIGHT:&blog2trackback();
#blog2navi()
広告 |