2011年1月10日月曜日

しかし、本当に荒野だなーー ATmega1284P

まさかGCCが吐いた、HEXが間違ってるとは思えませんでした。

ヒントはこんなとこに・・
mega644Pのコードと、mega1284Pのコードを比較すると、最初に一行多いので・・これジャンプコードだよね・・容量不足って出てるから、はみ出てる、凄く怪しいと思い・・Intel HEXの説明を見に行きました。

iPhoneに入れた、TouchCalcで計算したら・・あれ?1024KBのとこにジャンプしてる!
どうも、Avrdudeが、100000にジャンプしてるって文句言ってる気がしてたのは冗談じゃ無いんだーーで。チェックサムを手で計算して、最初の行だけ直したら、書き込めたんですね。
最初、1000に書いちゃって・・ただ、ああ、そうゆう事かで・・1E00だとエラーが出たので、1C00に変更したら、動きました。結果的に1C00のOptibootを置きました。

一個しか無いし、ブートローダー書いて、ArduinoIDEで弄るから一回だけで済むからいいものの、二度目ややりたくないです。

ちなみに・・

optiboot_atmega1280.hex も同じジャンプ記載が有るので、エディタで開いて・・最初の一行目を・
:0200000201C03B
これをコピーすれば動くと思われます。

感じ的には、64KBを超えた先で無いと出ないバグみたいで、これ以下の容量の物は、ジャンプ命令が要らないらしく・・その部分に影響してます。

0 件のコメント:

コメントを投稿