Top > blog > 2012-05-29 > Arduinoのブートローダーをコンパイル

広告

#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()

広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS