Forum: Compiler & IDEs avr-gcc und ATMega324pa


von Martin (Gast)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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?

von Martin (Gast)


Lesenswert?

> 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?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.