mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik suche die "HardwareSerial.o" usw. für arduino uno (atmega328p)


Autor: Mischa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi - habe ein Arduino uno und versuche das an AVR Studio anzubinden.
hier ist eine schöne Anleitung: 
"http://www.cecs.csulb.edu/~hill/ee347/Blink_AVRStudio/";

Funktioniert auch bestimmt, nur finde ich in dem Verzeichnis 
"Arduino\arduino-0022\hardware\arduino\cores\arduino" keine ".o" Dateien 
wie HardwareSerial.o - da sind nur *.c, *.cpp und *.h Dateien.
Weiss jemand wie ich an die Object dateien ran komme, damit ich die bei 
AVR Studio includen kann??


Vielen Dank!!!
Grüsse - Mischa

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine in dem angegebenen Tutorial sieht man eine HardwareSerial.cpp

Aus der kannst du eine Datei HardwareSerial.o erzeugen lassen, wenn du 
HardwareSerial.cpp kompilierst.

Du kannst auch HardwareSerial.cpp zu deinen Sourcefiles aufnehmen, statt 
eine vorerzeugte HardwareSerial.o zu den zusätzlichen Libraries 
hinzuzufügen wie im Tutorial

Autor: Mischa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi-- ja das stimmt, da ist auch die cpp,

wie kann man das zu .o file kompilieren? (schäm)

Autor: Mischa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitte, wenn jemand Zeit hat - das ist mir sehr wichtig - wie kann man 
die .cpp und .c Dateien in .o Dateien kompilieren?

Vielen Danke nochmal,
Grüsse - Mischa

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Füg die Dateien einfach zu deinem Projekt mit dazu.

Im Projektbaum, links im AVR-Studio, einfach über "Source Files" die 
rechte Maustaste drücken und "Add existing source Files". Dann zeiugst 
du ihm die *.c Files und fügst sie hinzu. AVR-Studio kümmert sich dann 
darum, dass sie kompiliert werden und zum Programm dazugelinkt werden.

Autor: Mischa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi und danke,

klappt leider nicht ganz - er erstellt leider keine .o Dateien aus .cpp 
Dateien (Wahrscheinlich weil es c++ sind)

Autor: Stefan B. (stefan) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mischa schrieb:

> bitte, wenn jemand Zeit hat - das ist mir sehr wichtig - wie kann man
> die .cpp und .c Dateien in .o Dateien kompilieren?

Das ist leider nicht so einfach bzw. so einfach zu beschreiben. Ich 
musste selbst rund eine gute Stunde Zeit reinhängen, um das gebacken zu 
bekommen.

Also...

Ein Arduino-Projekt besteht aus C Sourcecode (*.c Dateien) und aus C++ 
Sourcecode (*.cpp Dateien).

Um in AVR Studio beides - C und C++ Sourcen - zu übersetzen, muss man - 
zumindest was ich gefunden habe - mit einem externen Makefile arbeiten.

Wenn man nur selbstgeschriebene C-Sourcen übersetzt und die restlichen 
Sourcefiles aus dem Arduinopaket für seinen AVR bereits als 
Objektdateien *.o hat, kann man die als Library in das Projekt aufnehmen 
und mit dem AVR Studio Make-Mechanismus ohne externes Makefile arbeiten. 
Das ist anscheinend der Weg im Tutorial oben.

Hier aber der komplette Weg: Übersetzen von Anfang an. In dem 
Arduino-Zip ist kein solches Makefile drin, d.h. man muss das selbst 
anlegen. Dafür gibt es bei WinAVR ein Tool mfile von Jörg Wunsch.

Im Anhang ist das externe Makefile mit dem ich kompiliert habe.

ACHTUNG #1: Dort ist als MCU ein anderer AVR (atmega168) eingetragen als 
deiner (atmega328p).

# MCU name
MCU = atmega168

Mit MCU = atmega328p konnte ich die Source WInterrupts.c nicht 
übersetzten. Die Fehlermeldung deutet darauf hin, dass mein WinAVR 
(WinAVR-20071221) zu alt ist bzw. veraltete Includedateien für diesen 
AVR hat.

ACHTUNG #2: Im Makefile habe ich mich nicht um den Programmer gekümmert, 
also wie das fertige Programm auf den MCU übertragen werden soll. Ich 
denke die Anpassung auf AVRDUDE wie im Tutorial 
http://www.cecs.csulb.edu/~hill/ee347/Blink_AVRStudio/ bekommst du hin. 
Das Format des Makefile ist quasi selbsterklärend und es gibt hier in 
der Artikelsammlung auch Erläuterungen.

Anders als in dem Tutorial oben, habe ich aus Bequemlichkeit (kein 
Gefummel mit Pfaden) die Sourcefiles direkt in das Projektverzeichnis 
blink kopiert und auch dort die Objektdateien erzeugen lassen und nicht 
in dem Ordner Default (s. Anhang files.gif)

Im AVR Studio kann man sich die Dateien für den leichteren Zugriff in 
eine Listenstruktur hinzufügen (s. avrstudio.gif). Das muss man nicht 
machen, ist aber bequemer, wenn man Errors, Warnungen in der Source 
nachschlagen will.

Dann muss AVR Studio so eingestellt werden, dass ein externes Makefile 
(s. oben) benutzt wird. Das macht man unter Menü Projekt -> 
Configuration Options (s. einstellung.gif). Sonstige Einstellungen habe 
ich keine gemacht.

Wie gesagt, das ist IMHO nicht so einfach aufzusetzen. Vielelicht gibt 
es bessere Tutorials in denen diese Schritte besser erklärt sind.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es war meine veraltete WinAVR Installation bei den Problemen mit dem 
Atmega328P. In dem Arduino-Paket 0022 ist ein WinAVR-20081205 drin. 
Damit kann ich die Sourcen auch für den Atmega328P übersetzen.

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.