Hallo, ich versuche ein Programm für den ATMega324PA mit dem avr-gcc 4.4.5 für den ATMega324PA zu übersetzen. Problem ist jedoch, dass der avr-gcc den ATMega324PA nicht kennt. Beim ausführen von avr-gcc mit der Option -mmcu=atmega324pa kommt, das der MCU nicht bekannt ist. Komisch ist jedoch, das die avr-libc 1.7.0 den ATMega324PA explizit unterstützt. Wie ist es nun gedacht C-Code für den ATMega324PA zu übersetzen bzw. welche Lösung gibt es? Grüße Martin
Eventuell wurde da ein an sich vorhandener Patch bei der Herstellung des avr-gcc vergessen, der diese AVR dem avr-gcc bekannt macht. Kannst du nähere Angaben zu deiner avr-gcc Version (Build) und deren Herkunft machen?
> Kannst du nähere Angaben zu deiner avr-gcc Version (Build) und deren > Herkunft machen? Betriebssystem ist Ubuntu 10.04, GCC 4.4.5 kompiliert von sourcen direkt von einem GCC GNU mirror*. Binutils in Version 2.20. * um genau zu sein: ftp://ftp.mpi-sb.mpg.de/pub/gnu/mirror/gcc.gnu.org/pub/gcc/releases/gcc- 4.4.5/gcc-core-4.4.5.tar.bz2 > Eventuell wurde da ein an sich vorhandener Patch bei der Herstellung des > avr-gcc vergessen [...] Gibt es da noch extra patches für den avr-gcc die man berücksichtigen muss?
Das ist ja um die Ecke :-) http://www.mikrocontroller.net/articles/AVR_und_Linux [zitat] Im Prinzip kann man einen avr-gcc "bauen", indem man sich die offiziellen GCC-Quellen besorgt und dann einfach für das Target avr übersetzt. Und in der Tat scheinen die in den Distributionspaketen enthaltenen Compiler nicht selten auf genau diesem Wege entstanden zu sein. Das Problem dabei ist, dass ein solcher avr-gcc niemals vollständig/aktuell ist, denn es gibt immer zusätzliche AVR spezifische Patches, die nicht in den offiziellen GCC-Quellen enthalten sind. Zum einen, weil der jeweilige Patch noch zu neu ist (die Übernahme in die offiziellen Quellen dauert seine Zeit), zum anderen weil er grundsätzlich nicht offiziell übernommen werden kann, da der Autor des Patches kein FSF-Assignment hat. Ähnliches gilt auch für die weiteren Komponenten der Toolchain, z.B. binutils. Wer eine Distribution benutzt, die keine AVR-Pakete enthält, oder wer obigem Problem aus dem Weg gehen will, kann sich selber eine Toolchain mit den aktuellen Patches übersetzen. Ziemlich einfach geht das mit einem Skript von Bingo600, das man hier bekommen kann... [/zitat] Bingo schreibt gelegentlich auch hier im Forum, Thanks!
Bau deinen Code einfach für einen ATmega324P. Die A-Versionen sind ja als drop-in replacement konzipiert, der Code muss mit diesen folglich trotzdem funktionieren. (In einigen wenigen Fällen haben die A- Versionen auch mal ein Registerbit zusätzlich bekommen, aber das muss man ja nicht unbedingt benutzen.)
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.