Efter fyra dagars felsökande och mycket tandagnisslan börjar det gå upp för mig: det måste vara något tok med bootloadern! Så jag körde ett jämförelseprogram på hexkoden dels genererad av AVR Studio 5, dels vad jag dumpade från AVR-processorns flashminne. Och plötsligt syns problemet tydligt:
Jag använder en ATMega644. Den ska ha 64Kbyte flashminne (0x0000 - 0xffff). Bootloadern tar upp 2048 bytes i slutet, alltså från 0xf800-0xffff. Problemet är nu att Atmel brukar ange flash-adresser i word, inte bytes! Så en ATMega644 har 0x8000 words och bootloadern ligger på adress 0x7c00.
Vad bootloadern gör är att den tror att gränsen går vid 0x7c00 bytes, alltså bara halva utrymmet.
Så nu kan jag bara använda halva flashminnet, om jag inte kan lägga in nya bootloaders!

Bootloadern är köpt av en tysk firma, men jag tror inte jag ska skylla på honom. Det kan mycket väl vara jag som lagt in fel parametrar i koden.

Hur ska jag göra nu? Jag har mina ATMega644 på lite olika ställen i bl.a. Norrköping, Örebro, Södra Norge, Täby, Köpenhamn.... antagligen med programmeringskontakten (AVR-ISP) ganska svåråtkomlig. Det blir väl att jag får skicka runt en AVR-ISP-programmerare med en korrekt bootloader och hoppas att folk klarar av att följa instruktioner hur man lägger in en ny bootloader. Eller så får jag banta programmet på en del mindre viktiga funktioner.... Fast på sikt behöver jag ha mer flashminne än 0x7c00 bytes.