Hallo, ich benutzte das EClipse-Plugin mit GCC. Bisher hab ich einen ATMega8 verwendet. Jetzt kratze ich mit meinem Projekt an der 8K grenze und hab mir den ATMega168 geholt. Nachdem ich meine Interupts, die beiden mcu-Werte auf atmega168 gestellt und ein paar Register angepasst habe, wollte ich compilieren. Jetzt bekomme ich aber mit dem selben Programm, das vorher noch in die 8K gepasst hab, einen "region text is full" Fehler beim linken! Woher weiß der Compiler/Linker eigentlich wie viel Flash der Controller hat? Steht das irgendwo? Woran könnte das liegen? Komme einfach nicht drauf. Vielen Dank schonmal, Nikias
Hi, Nikias, "Woher weiß der Compiler/Linker eigentlich wie viel Flash der Controller hat? Steht das irgendwo?" Ja. In der <iom168.h> findest Du die Zeile "#define FLASHEND 0x3FFF" Was den Opcode so aufblähen könnte, da bin ich überfragt. Ciao Wolfgang Horn
@Wolfgang: Also ich bin mir sicher dass der Linker nicht das FLASHEND Makro verwendet. Das ist nur zum eigenen Gebrauch in deinem Programm da drinn. Ich dachte er müsste irgendendwo ne lookup table haben für die ganzen mcu-Typen. @Rufus: Hmmmm....könnte das sein? Kann das irgendwer bestätigen? Wäre es denkbar...dass durch eine größere Registergröße mehr Ram verbraucht wird, und die 1K nicht mehr reichen? Gruß, Nikias
So...habs rausgefunden! In der map file stand die ganze Zeit das der Linker nur von 8K ausgegangen ist... Jetzt hab ich dem Linker auf verdacht hin einfach mal den Parameter "-mmcu=atmega168" übergeben -> Alles geht! Denke das ist ein Fehler im Eclipse-Plugin, der müsste das dem Linker eigentlich noch mitteilen. Gruß, Nikias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.