Forum: Compiler & IDEs Raspi Projekt mit Win AVR Compilieren ?


von Stephan (Gast)


Lesenswert?

Hallo Leute,

gibt es eine Möglichkeit ein Arduino/Raspi Projekt mit dem AVR Studio zu 
compilieren ?
Ich habe weder ein Arduiono noch einen Raspi.
Programmieren läßt sich der Tiny ja auch anders.

http://raspberry.tips/wp-content/uploads/2014/11/Send_DS18B20.ino
http://raspberry.tips/wp-content/uploads/2014/11/Receiver_PI.ino

Ideen ob das geht ?

Danke

von (prx) A. K. (prx)


Lesenswert?

Den RasPi kann man ganz gut auf dem RasPi programmieren.
Und einen AVR gleich mit.

von Stephan (Gast)


Lesenswert?

ich brauche nur die daraus erstellen HEX Files.

von (prx) A. K. (prx)


Lesenswert?

Kannst auch einen Cross-Compiler auf dem PC bauen, die Libraries 
einsammeln etc. Aber es wird einfacher sein, einen echten RasPi zu 
nehmen um RasPi Programme zu bauen.

Der RasPi ist von der Programmierung her im Grunde ein ganz gewöhnlicher 
Linux-PC. Wer die Kommandozeile nicht mag: Bildschirm/Tastatur/Maus kann 
lokal angeschlossen werden, oder der PC übernimmt das per X-Server 
(Linux oder Windows+Cygwin)

: Bearbeitet durch User
von Stephan H. (stephan-)


Lesenswert?

es wird ja kein Paspi Programm. Es wird ein Programm für einen Tiny84.
Funkthermometer ( DS18xx und RFM12) und einen Funkempfänger mit Tiny84.

Ich habe WinAVR mit den 3 Libs gefüttert und versucht zu kompilieren.
Das kompilieren mit WinAVR scheitert z.B. hieran:

// Need an instance of the Radio Module
RFM12B radio;

// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

Das Projekt ist von hier:

https://raspberry.tips/hausautomatisierung/raspberry-pi-funksensoren-und-empfaenger-selber-bauen-teil-1-projekt-info/

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Ach so, du willst dieses für einen RasPi vorgesehene Projekt ohne den 
RasPi verwenden.

> Das kompilieren mit WinAVR scheitert z.B. hieran:

Da fehlt offenbar Quellcode, oder er ist nicht ins Projekt einbezogen.

: Bearbeitet durch User
von Stephan H. (stephan-)


Lesenswert?

wie ich das sehe wird der Raspi nur als IDE und Programmer verwendet.
Das muss doch auch ohne gehen..... hoffe ich.
Nur deswegen eine Raspi zu besorgen.....

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ohne die IDE musst du all den Code / Module, die wie dokumentiert per 
wget und git clone beschafft wurden, von Hand managen :-)

Und wenn man da all das Zeug liest, dass per wget und git clone und per 
"Sketch" laden beschafft werden muss, dann wird einem ganz schummrig.

Als erstes kannst du dich also schlau machen, wie man Ardiuno-Zeugs ohne 
die IDE compiliert bekommt...  Dafür ist ein Ardiuno-affines Forum wohl 
besser als Hilfe geeignet als hier...

: Bearbeitet durch User
von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

Johann L. schrieb:
> Ohne die IDE musst du all den Code / Module, die wie dokumentiert per
> wget und git clone beschafft wurden, von Hand managen :-)

sowas in der Art vermute ich.
Nur arbeite ich an einem Windows PC und meist mit einem Macro Assembler.
Da benutze ich keine Libs.

SORRY !!!

Ich habe hier Atmel Studio 6 installiert.
Die Libs ( Jeelib-master, Arduino-Temperatur, RFM12B-master und OneWire) 
in das Projekt eingebunden und will es kompilieren.
Dann hagelt es Fehlermeldungen ohne Ende.

Screenshot anbei

von Bernd K. (prof7bit)


Lesenswert?

Stephan H. schrieb:
> und will es kompilieren.
> Dann hagelt es Fehlermeldungen ohne Ende.

Einfach von oben nach unten abarbeiten.

Zum Beispiel im Bild sieht man daß entweder die OneWire.h nicht 
existiert oder daß das Verzeichnis in dem sie sich befindet nicht in 
die include-Pfade aufgenommen wurde.

--> obigen Mangel beheben
--> weiter zur nächsten Fehlermeldung
--> wiederholen bis fertig.

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

die Pfade stimmen. Das Problem ist ein anderes.
in z.B. der FRM12 Lib werden andere Libs aufgerufen.
Screenshot.

Woher kommen die denn ? Wo finde ich die ?
Wer denkt sich so einen kranken SCH*** aus ???
Include im Include im Include.....

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stephan H. schrieb:
> die Pfade stimmen. Das Problem ist ein anderes.

Nein. "No such file or directory" ist eindeutig.

Übrigens: Eine *.h-Datei ist keine Library. Nenn' sowas nicht "lib".

: Bearbeitet durch User
von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

gut dann andres gefragt ....

was muss ich tun um das hin zu bekommen.
Wie ist die Endung einer Lib ? Die CPP Dateien hatte ich auch schon 
drin.

der Pfad stimmt !

Entschuldigung, C ist nicht meine Sprache.
ANL, ORL, XRL, RRA, etc. verstehe ich.
Für wiederkehrende Routinen nutze ich Makros keine Libs.

Aber er will ja *.h einbinden. Ähnlich meiner Makros.
Die *.h enthalten aber offensichtlich andere *.h die er nicht findet.
Vermute ich.
Im Screenshot kann man ja den Pfad sehen. Die *.h ist auch da.
Nur steht da drin wieder include *.h.....nur woher ?

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Stephan H. schrieb:
> was muss ich tun um das hin zu bekommen.

Klick Dich durch die Projekteinstellungen, irgendwo da muss es da eine 
Abteilung für die Include-Pfade geben. Dort ist irgendwo eine Liste von 
Suchpfaden zu pflegen unter denen der Compiler nach Headerdateien (*.h) 
suchen wird sobald er auf ein #include trifft. Jeder Ordner in dem sich 
solche *.h Dateien befinden muss zu dieser Liste hinzugefügt werden.

In der Konsolenausgabe (das was beim Build in schneller Folge 
durchscrollt) wirst Du dann sehen wie dem Compiler beim Aufruf all diese 
Pfade mittels je einer -I pfad/zum/ordner/ Option mitgeteilt werden. Nur 
dadurch kann der Compiler wissen wo er überall suchen muss wenn er auf 
ein #include <irgendwas.h> trifft und nun verzweifelt nach der Datei 
"irgendwas.h" suchen muss.

von Bernd K. (prof7bit)


Lesenswert?

Stephan H. schrieb:
> Wer denkt sich so einen kranken SCH*** aus ???
> Include im Include im Include....

Nun, das war schon immer so, auch in anderen Sprachen ist es durchaus 
üblich dass Software in handliche Module aufgeteilt wird und jedes Modul 
auf bereits vorhandenen Funktionen in anderen Modulen aufbaut und diese 
anderen wiederum ebenfalls auf bereits vorhandenem in wieder anderen 
Modulen, und so weiter, und so fort.

Das nennt man Modularität und Wiederverwendbarkeit. Gäbe es das nicht 
müsste man es schleunigst erfinden, denn es spart massiv Arbeit.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Nur mit Include-Pfaden wird es nicht getan sein; die Arduino-IDE setzt 
wohl auch Defines wie ARDUINO, und außerdem bringt Ardiuno selbst auch 
noch Header mit :-)

Warum tust du dir das mit Atmel-Studio an, anstatt für ein 
Ardiuno-Projekt Arduino herzunehmen?

von Rolf M. (rmagnus)


Lesenswert?

Johann L. schrieb:
> Warum tust du dir das mit Atmel-Studio an, anstatt für ein
> Ardiuno-Projekt Arduino herzunehmen?

Das würde mich auch interessieren. Er hat jetzt doch bestimmt schon viel 
mehr Zeit damit verschwendet, als es gekostet hätte, die Arduino-IDE zu 
installieren und es damit zu übersetzen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stephan H. schrieb:
> Wie ist die Endung einer Lib ?

Je nach Compiler *.a oder *.lib.

Du hast aber gar keine Libraries.

Und Dein Problem ist (unter anderem), daß Du zwar die rfm12b.h in Dein 
Projekt reingefrickelt hat (unter Libraries), aber da gehört es nicht 
hin.

Die Fehlermeldung, daß die Datei nicht gefunden werden kann, entsteht 
beim Übersetzen einer *.c oder *.cpp-Datei (kann man auf Deinem 
Screenshot nicht erkennen). Dort wird die Datei via #include 
eingebunden, und aus Sichtweise der *.c- oder *.cpp-Datei kann die 
RFB12B.h nicht gefunden werden, weil sie /irgendwo anders im 
Dateisystem/ ist, aber nicht dort, wo die *.c oder *.cpp-Datei ist, und 
die #include-Anweisung auch keinen passenden relativen Pfad enthält.

Damit das aufgeht, musst Du in Deinen Projekteinstellungen den 
Speicherort, an dem die Datei RFM12B.h liegt, in den sogenannten 
"include-Pfad" aufnehmen. INCLUDE, nicht Library!

Nimm Dir mal einen Zettel und einen Stift, und male Dir die 
Verzeichnisstruktur auf Deinem PC auf - wo liegen Deine 
*.c/*.cpp-Dateien, wo liegen die *.h-Dateien, die Du verwenden willst 
und wo liegen die dazugehörigen *.c/*.cpp-Dateien, die in Deiner 
Projektverwaltung bislang gar nicht auftauchen.

Bei Deinem Problem hilft es auch nicht, die Headerdateien (*.h) zur 
Projektverwaltung hinzuzufügen, den Compiler interessiert das nicht.

Man sollte das zwar trotzdem machen (mit allen nicht vom Compiler selbst 
zur Verfügung gestellten Dateien), damit man in der Projektverwaltung 
die Abhängigkeiten sehen kann (nach dem Motto "mein Projekt benutzt 
blafusel.h") und damit, falls man an diesen Dateien Änderungen 
durchführt, die Projektverwaltung beim Compilieren dafür sorgt, daß alle 
*.c/*.cpp-Dateien, die zum Projekt gehören und die Headerdatei 
einbinden, neu übersetzt werden.

Aber --wie schon gesagt-- Dein Problem ist ein anderes. Der Compiler 
weiß nicht, wo er nach der Datei zu suchen hat. Er such nur im 
sogenannten "include-Pfad" oder im aktuellen Verzeichnis, d.h. dort, 
wo die jeweilige *.c/*.cpp-Datei liegt, die gerade übersetzt wird.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.
Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.
Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von 
Jeelinks), dann compilieren und flashen...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Stephan H. (stephan-)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.
> Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.
> Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von
> Jeelinks), dann compilieren und flashen...
>
> Gruß aus Berlin
> Michael

na das klingt doch vielversprechend. Das teste ich Heute Abend sofort 
aus.
Dieser Zusammenhang fehlte mir. Ich dachte das INO Zeugs gehört alles 
zum Raspi.

Allen anderen auch Danke

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.