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


von Mischa (Gast)


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

von Stefan B. (stefan) Benutzerseite


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

von Mischa (Gast)


Lesenswert?

hi-- ja das stimmt, da ist auch die cpp,

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

von Mischa (Gast)


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

von Karl H. (kbuchegg)


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.

von Mischa (Gast)


Lesenswert?

Hi und danke,

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

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

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.

von Stefan B. (stefan) Benutzerseite


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.

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.