mikrocontroller.net

Forum: Compiler & IDEs avr-gcc und ATMega324pa


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.