Hall Erst mal mein Ziel: Ich möchte in zukunft meine MCUs mit C programieren können. Zu meinem bisherigen Stand: meine ersten Erfahrungen mit der Programmiererei habe ich noch mit Qbasic unter win98 gesammelt später dann Free-Basic. Im laufe meiner Ausbildung bin ich dan mal mit Bascom in berührung gekommen und bin auch seht schnell damit klar gekommen. In den letzten Wochen haben wir dann in dr Ausbildung eien intensiven Assembler Kurs auf basis eines 80C537 gemacht (mit Betriebssystem Wickenhäuser) nun zum eigentlichen Problem: bisher war ich es gewohnt nach dem öffnen einer Entwicklungsumgebun (Bascom) einen Eingabebereich zu haben und nach tippen des Proramms musst ich nur noch F7 drücken und schon kam ein fertiges .hex file heraus. nun würde ich gerne wissen wie das mit c geht. Woher kriege ich standard Bibliotehken was ist das überhaupt und wo müssen die hin?? Was sind Makefils und brauche ich die überhaupt?? Fragen über fragen die in kaum einem von mir gelesenen Tutorial behandelt werden weil diese sich ja meistens nur um die Sprache selbst drehen. Als Programmierumgebung würde ich gerne das AVR Studio nutzen da es ja auch die Möglichkeit des Debugging bietet (habe zum Nikolaus einen AVR Dragon gekriegt :-))
1. WinAVR installieren WinAVR enthält die komplette Toolchain für die C Programmierung von AVR Targets auf dem Windows Host. Die Toolchain umfasst in der Hauptsache den Compiler GCC, verschiedene binutils-Tools zum Umgang mit Dateien, die Include-Dateien und Library-Dateien, ein Mfile Tool zum Umgang mit Makefiles. Sowie eine Entwicklungsumgebung (IDE) in Form von Programmers Notepad. Und Avrdude zum Übertragen von HEX-Dateien zwischen PC und AVR sowie zur Manipulation der AVR Fuses. Und last but not least diverse Dokumentationen. Ab hier kann man bereits AVRs mit C programmieren. Ein typischer Ablauf sieht so aus: a/ Makefile erstellen mit MFile b/ Programm schreiben mit PN c/ Programm compilieren aus PN heraus d/ erfolgreich compiliertes Programm mit Avrdude zum AVR übertragen e/ Programm auf dem AVR testen f/ nicht erfolgreiches Programm überarbeiten - zurück zu b/ g( freuen ;-) Zusätzliche Libraries die über den Umfang von Standard-C in Form der avr-libc hinausgehen, muss man sich im Internet suchen. Gängige Erweiterungslibraries (Interrupt-UART, Ringpuffer, LCD,...) stammen von Peter Fleury. Eine wertvolle Quelle ist auch unsere Codesammlung. 2. AVR Studio installieren GCC aus WinAVR wird erkannt und eingebunden. AVR Studio wird als Alternative IDE benutzt, die eigene Makefiles automatisch erzeugt. Zusätzlich kann AVR Studio auch Programme simulieren und - mit Hilfe eines AVR Debugadapters - auch in-circuit debuggen. Ein typischer Ablauf sieht so aus: a/ Neues Projekt erstellen mit AVR Studio b/ Programm schreiben mit AVR Studio c/ Programm compilieren aus AVR Studio heraus d/ erfolgreich compiliertes Programm mit AVR Studio simulieren e/ erfolgreich simuliertes Programm mit AVR Studio (wenn ISP-Adapter direkt unterstützt wird) oder Avrdude (wenn ISP-Adapter nicht direkt unterstützt wird) zum AVR übertragen f/ Programm auf dem AVR testen, wenn In-circuit Debugger vorhanden ist auch mit dessen Hilfe aus AVR Studio heraus debuggen g/ nicht erfolgreiches Programm überarbeiten - zurück zu b/ h/ freuen ;-) ADD: Buchtipp für den allgemeinen C-Einstieg C von A bis Z Das umfassende Handbuch für Linux, Unix und Windows Jürgen Wolf Galileo Computing http://openbook.galileocomputing.de/c_von_a_bis_z/ (8 MB Download der E-Version, Paperversion ca. 40€)
Christian Meyer wrote: > bisher war ich es gewohnt nach dem öffnen einer Entwicklungsumgebun > (Bascom) einen Eingabebereich zu haben und nach tippen des Proramms > musst ich nur noch F7 drücken und schon kam ein fertiges .hex file > heraus. Im Prinzip soll das mit dem AVRStuadio ähnlich gehen. Ich habe allerding keine praktischen Erfahrungen damit, da ich den WINAVR in der DOS-Box als Batch benutze und dann auch sofort per Bootloader das Hex-File brenne. Compilieren und Brennen ist also nur ein Tastenklick. Nur den Resettaster muß man noch selber drücken bzw. VCC des Target aus- und einschalten, wenn der Resetpin als IO definiert ist. > nun würde ich gerne wissen wie das mit c geht. > Woher kriege ich standard Bibliotehken was ist das überhaupt und wo > müssen die hin?? Erstmal ne schlechte Nachricht, irgendwelche Black-Boxes und extra zu lernende Konfigurationstools gibt es unter WINAVR nicht. Aber ne gute Nachricht: LCD, Tastenentprellung, 1-Wire usw. findet man im Web direkt als Quelltext, die man dann in sein Projekt einbinden kann. Und wenn der Autor nen Fehler gemacht hat oder es Seiteneffekte gibt, kann man ja den Quelltext editieren. Die Konfiguration mache ich immer direkt mit der Registerbeschreibung im Datenblatt. > Was sind Makefils und brauche ich die überhaupt?? Braucht man nicht, der WINAVR versteht als Argument *.c, d.h. compiliere alle C-Dateien im aktuellen Verzeichnis und linke sie dann zusammen. Geht bequem mit einer Batch-Datei. Das AVRStudio erzeugt aber auch automatisch ein Make. Peter
Christian Meyer wrote: > Hall > > > Erst mal mein Ziel: > Ich möchte in zukunft meine MCUs mit C programieren können. Wenn du den Assembler mal so richtig verdaut hast, bist du schon halb am Ziel. Wenn du den auch noch richtig verstanden hast, empfehle ich dir, selbiges mit den AVR-Werkzeugen zu tun, und zwar ohne WinAVR und Co. > nun würde ich gerne wissen wie das mit c geht. Genauso. Deine IDE kannst du dir nach Belieben aussuchen -- alles, was blanken Text speichert, ist in Ordnung. Zur HEX-Datei kommst du dann über Aufrufe der verschiedenen Werkzeuge, z.B. von AVR-GCC. Prinzipieller Ablauf ist:
1 | Quelltext: |
2 | - C ----------> Compiler ---\ |
3 | - C++ --------> Compiler ---->--> Assembler-Quelltexte |
4 | - ASM ----------------------/ |
5 | - Forth -------------------/ |
6 | |
7 | Assembler-Quelltexte ---> Assembler ---> (binäre) Objektdateien |
8 | |
9 | Objektdateien --> Linker --> Programm |
10 | |
11 | /---> FLASH-Speicherabbild |
12 | Programm --> OBJCOPY ---| |
13 | \---> EEPROM-Speicherabbild |
14 | |
15 | Speicherabbilder --> Brennprogramm --> AVR |
> Woher kriege ich standard Bibliotehken was ist das überhaupt und wo > müssen die hin?? "C" als Programmiersprache hat weder ne serielle Schnittstelle, noch Timer, printf() oder sonst irgendwas. Genaugenommen hat C nicht mal eine einzige aufrufbare Funktion ("Sub") an Bord -- das alles kommt aus der Standardbibliothek. Normalerweise kriegst du die gleich mit dem Compiler geliefert und installiert. > Was sind Makefils und brauche ich die überhaupt?? Ist nix weiter als eine Datei, in der drin steht, was wie gemacht werden soll. Und zwar in Form von Regeln, die aus einem Ziel (z.B. Hex-Datei), Abhängigkeiten (Quelltexte etc.) und Anweisungen (z.B. Compileraufruf) bestehen. Der Rest ergibt sich quasi von alleine: Ist ein Ziel älter (Dateidatum) als irgendeine seiner Abhängigkeiten (oder existiert ein Ziel überhaupt nicht), werden die Anweisungen ausgeführt. Für dich heißt das: Speicherst du einen Quelltext ab, ist dieser dann laut Dateidatum neuer als die Zieldatei (die du z.B. bei einem früheren Aufruf mal erzeugt hast), also wird die Zieldatei neu gebaut (sprich: compiliert).
Sven Pauli wrote: > selbiges mit den AVR-Werkzeugen zu tun, und zwar ohne WinAVR und Co. Was soll er denn sonst unter XP/Vista benutzen, wenn nicht WINAVR? Ich behaupte mal, 90% der AVR-GCC-Programmierer benutzen WINAVR. Ich kann mich noch gut erinnern an die erste ARV-GCC Version mit Cygwin. Ich habs in vielen Stunden nicht zum Laufen gebracht. Peter
Also vielen dank erstmal für eure schnelle Hilfe Habe einigtes auch schon Probiert leider will noch nicht alles so wie ich will^^. Habe gerade mal das einführungsprogramm aus dem AVR-GCC-Tutorial per coppy/paste ins AVR Studio eingefügt #include <avr/io.h> // (1) int main (void) { // (2) DDRB = 0xff; // (3) PORTB = 0x03; // (4) while(1) { // (5a) /* "leere" Schleife*/; // (5b) } // (5c) /* wird nie erreicht */ return 0; // (6) } Nach drücken auf Compie Active File kommt folgende Meldung: Build started 6.12.2008 at 18:13:52 0 [main] sh 2364 sync_with_child: child 4752(0x11C) died before initialization with status code 0x0 62733 [main] sh 2364 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable avr-gcc -mmcu=atmega32 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d -c ../test.c ../test.c:14: fatal error: opening dependency file dep/test.o.d: No such file or directory compilation terminated. make: *** [test.o] Error 1 Build failed with 1 errors and 0 warnings... Was mach ich falsch?? @ Steffan Galileo Computing http://openbook.galileocomputing.de/c_von_a_bis_z/ (8 MB Download der E-Version, Paperversion ca. 40€) das tutorial habe ich bereits ansatzweise gelesen aber irgendwie fehlt mir auch hier der ricitige Ansatz und ohne learning by doin komm ich irgendwie nicht weiter. kann mir jemand eine konkrete C IDE (mit syhntax highliting...) empfehlen?
Christian Meyer wrote: > Build started 6.12.2008 at 18:13:52 > 0 [main] sh 2364 sync_with_child: child 4752(0x11C) died before > initialization with status code 0x0 > ... > Was mach ich falsch?? Nix. Hier geht etwas furchtbar schief und die weiteren Meldungen sind Folgefehler. Um das Problem aufzuklären, würde man hingehen und 1/ mit der allgemeinisierten Fehlermeldung eine Recherche im Netz starten. Wenn dein Entwicklungssystem die Probleme hat, hatte sie vielleicht schon ein anderer... http://www.google.de/search?hl=de&q=winavr+sync_with_child%3A+child+died+before&btnG=Suche&meta= Danach taucht ein Hinweis von Madwizard auf, der auf Probleme mit WinAVR und einem 64-Bit Vista eingeht. Hier kommt dann Hinweis 2 zum tragen: 2/ unbedingt näheres zum verwendeten Entwicklungsystem posten: Welches Betriebssystem? Welche WinAVR Version? > @ Steffan Stefan reicht ;-) > Galileo Computing > http://openbook.galileocomputing.de/c_von_a_bis_z/ > (8 MB Download der E-Version, Paperversion ca. 40€) > > das tutorial habe ich bereits ansatzweise gelesen aber irgendwie fehlt > mir auch hier der ricitige Ansatz und ohne learning by doin komm ich > irgendwie nicht weiter. Learning by Doing ist Pflicht, da brauchst du dich nicht zu schämen! Ansonsten kann ich nur empfehlen, möglichst konkret zu fragen. "Ich benutze das Tutorial xyz (hier: erhältlich) und stecke beim Schritt 42: Die Variable Fubbel passt nicht zur Fumktion Grabbel(). Wie kommt's?". > kann mir jemand eine konkrete C IDE (mit syhntax > highliting...) empfehlen? Ich nicht, ich benutze immer irgendeinen Editor, der gerade auf dem Host vorhanden ist und auf x Maschinen ist das jeweils ein anderer. Inzwischen füge ich sogar vi Komamdos in Proton.exe ein. Ein Teufelskreis ;-(
als erstes möchte ich michfür das nicht korekte nutzen der Suchfunktion entschuldigen, und mich für eure geduldige Hilfe bedanken. Grund dafür dass ich nicht selbst soweit gekommen bin war die Tatsache das ein grüner Punkt neben der 3 Zeile der fehlermeldung mich zu der Annahme verleitet hat das bisher alles ok war und erst der rote Punkt neben Zeile 4 hat mich die folgenden Meldungen registrieren lassen... naja mein Fehler ich hoffe mir wird verziehe. damit alles nun auch seine richtigkeit hat hier noch nachträglich meine systemdaten: ich nutze: - Wie bereits von euch rescherschiert Windows Vista(home Premium) in der 64Bit Version. - AVR Studio 4.15.623 - WinAVR-20080610 - Programmer: AVR Dragon nun nochmal zur frage der algemeinen C IDE hat da jemand ne idee? da ich mit komandozeilen nicht so gut zurechtkomme wär mir eien relativ einfache umgebung gelegen in deren benutzeroberfläche der compiller bereits integriert ist. Danke
Hallo, das AVR Studio erkennt eigentlich ein installiertes WinAvr und arbeitet mit diesem dann zusammen. Damit hast du eine C IDE. Wenn du hier schon Probleme hast. Compiler Fehler, die nicht vom Quelltext herrühren, nützt dir eine andere IDE auch nichts. Ausser du bekommst zu Weihnachten eine solche geschenkt. Es gibt durchaus kommerzielle IDE's. Denn alle freien IDE's arbeiten irgenwie mit AVRGCC zusammen. Die meisten hier nutzen halt den AVRGCC, der mit WinAvr kommt, weil er frei ist. Nicht umsonst, wie du merkst. Du musst hier halt bereit sein die Probleme zu lösen. Als alternative IDE's kenne ich CodeBlocks und Eclipse. Ich arbeite mit CodeBlocks. Das habe ich so hinbekommen, das ich in CodeBlocks und AVR Studio das selbe Projekt bearbeiten kann. Wegen des debuggens im AVR Studio. Ich habe die Debug Funktion im AVR Studio allerdings so gut wie noch nie benutzt. Was ich an der Kombination mit CodeBlocks gut finde, ist das ich auf dem PC bestimmte Teile meines Codes direkt testen kann. Hier noch ein Link der vielleicht bei deinem Problem hilfreich ist: http://www.madwizard.org/electronics/articles/winavrvista dort zum Abschnitt sync_with_child problem scrollen, da werden sie dann geholfen ;-) gruss ralf
@Christian, auch wenn ich ungerne Werbung in eigener Sache mache ;-) Hast Du schon mal überlegt statt AVR Studio Eclipse zu probieren? Mit dem 'AVR Eclipse Plugin' kann man recht einfach mit Eclipse AVR Programme schreiben. Vorteile: - Eclipse ist als Entwicklungsumgebung AVR Studio weit überlegen - Viele Feature die das Programmieren in C erleichtern. - Kein Ärger mit makefiles, da diese im Hintergrund automatisch erzeugt werden. Nachteile: - Das debuggen ist (noch) nicht so integriert wie bei AVR Studio - Kein Zugriff auf die Simulatoren von AVR Studio Die Homepage des AVR Eclipse Plugins findest Du hier: http://avr-eclipse.sourceforge.net Wo Du Eclipse bekommst, was Du sonst noch brauchst und wie Du das Plugin installieren kannst steht hier: http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download LG, Thomas (AVR Eclipse Plugin Programmierer)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.