Hi @ all, Letztens einen Roboter(Asuro vom DLR) gekauft, den man in C programmieren kann. Ich will jetzt aber, wenn ich in C ein Programm schreibe, erstmal das Programm in einem Mikrocontroller-Simulator am PC testen bevor ich es auf den Mikrocontroller flashe. Als Simulations-Programm hab ich das AVR-Studio, als Compiler benutze ich den GCC und Entwicklungsumgebung ist bei mir das Programmers Notepad. Jetzt mein Probleme: 1.Wenn ich Programme(die 100%ig richtig sind) übersetzten lassen will bringt er mir eine Fehlermeldung und zwar "undefinded reference of main". Ich denk mir mal, dass liegt einfach daran, dass das makefile nicht richtig eingestellt ist und der Linker die Datei "main" nicht einbindet. Jetzt meine Frage: Hat jemand von euch (verständliche) Unterlagen oder Tipps , wie man ein makefile richtig einstellt? Oder hat auch irgendjemand von euch (verständliche) Unterlagen zum Thema "C-Compiler für Mikrocontroller", damit ich mir mal einen besseren Überblick darüber verschaffen kann, was da beim Compilieren genau abgeht. Gruss Tobi
undefined reference of main bedeutet ganz einfach, dass der Linker beim Zusammenbau des fertigen Programmes keine Funktion main() vorgefunden hat. Die braucht er aber, da dies die erste Funktion ist, die vom Programm ausgefuehrt wird. Die musst Du schreiben. Zeig doch mal Dein makefile und die zugehoerigen Source Code Dateien.
Hi, danke für die schnelle Antwort. Aber wenn ich ein Programm schreibe, dann ist doch immer dort die main drin. Z.B. Mein Programm ist immer die test.c (weil das makefile nur auf test.c eingestellt ist) und dieses test.c hat oben ein #include "asuro.h". Anmerkung: In asuro.c stehen die ganzen Funktionen z.B für die LED´s, für einlesen von Sensoren, Motoransteuerung usw... In asuro.h stehen die Funktionsdefinitionen. Und mein Programm(test.c) greift immer auf die vorgefertigten Funktionen von asuro.c und asuro.h zu. Beispiel: #include "asuro.h main() { Init(); while(1); } Aber ich kann auch morgen die original C-Dateien + makefile hier im Forum bereitlegen, falls die Informationen von oben zu dürftig waren. Gruss Tobi
Das ist zu duerftig :-) Irgendwo ist ein Fehler. Wenn Du eine main Funktion hast, dann kann es hoechstens nur noch sein, dass bei den Linker Angaben irgendetwas nicht stimmt. Also im makefile. Genaueres kann man aber erst sagen, wenn wir das Teil mal zu Gesicht bekommen.
Hi, ich hab jetzt hier mal die asuro.c angehängt (Da ich nicht weiss, wie man in diesem Forum mehrere Dateien in einen Beitrag anhängt, tu ich die restlichen Dateien in den nächsten Beiträgen anhängen
Und hier ist die test.c (die ich geschrieben habe) Ich hab jetzt einfach mal in die test.c so wenig wie möglich geschrieben, damit ersichtlich ist, dass die gar nicht falsch sein kann.
Noch was: Ich hätte ganz gerne, dass im makefile eingestellt ist, dass beim Compilieren der Compiler auch eine debug-Datei erzeugt, die brauch ich dann nämlich für das AVR Studio, wenn ich dann das C-Programm auf meiner virtuellen MCU ablaufen lassen will.(Ich glaub die debug-Datei hat die Endung .cof oder .d90, aber ich bin mir nicht ganz sicher. Hättest du eine Ahnung, wie ich das anstelle. Vielen dank schon mal im Voraus
Hi Tobi, wie rufst Du das make auf? Hast Du alles (test.c, asuro.c/h, makefile) in einem dir? Rufst Du make aus diesem Verzeichnis aus auf? Wie sieht die komplette Fehlermeldung aus? Das makefile sieht eigendlich ok aus .... Ich könnte mir vorstellen, dass er in einem ganz anderen dir compilieren will und Deinen Source nicht findet. Gruß, Stefan
Ola, da hast du eine Panne im make-Aufruf, hab mir gerade "mal eben schnell" die Files gezogen und make drueberherknattern lassen. Geht doch. Kommt auch was bei rum: asuro.c asuro.h asuro.o test.c test.eep test.hex test.lst test.o asuro.d asuro.lst makefile test.d test.elf test.lss test.map
Hi , @Stefan Kleinwort >> wie rufst Du das make auf? >> Hast Du alles (test.c, asuro.c/h, makefile) in einem dir? Ja, ich hab die test.c, asuro.c/h und makefile in einem Verzeichnis bzw. Ordner. >>Rufst Du make aus diesem Verzeichnis aus auf? Als ich den GCC-Compiler incl. Programmers Notepad installiert habe musste man zweimal Pfadangaben machen, wo das Verzeichnis und Ordner liegt, in dem die .C,H. und makefile liegen ( einmal oben mit "make" und einmal mit "clean". @Hegy Hallo, könntest du mir vielleicht auch einen Tipp geben, wie ich im makefile noch einstelle, dass der Compiler mir auch ne debug datei rauswirft, die brauch ich für das AVR Studio zum MCU simulieren. Danke. Gruss Tobi
> Hallo, könntest du mir vielleicht auch einen Tipp geben, wie ich im > makefile noch einstelle, dass der Compiler mir auch ne debug datei > rauswirft, die brauch ich für das AVR Studio zum MCU simulieren. Sollte er doch eigentlich standardmäßig tun. AVR Studio nimmt die normale ELF-Datei, du musst allerdings DWARF-2 als debugging format eingestellt haben (-gdwarf-2).
Hallo Jörg, oben hab ich die makefile-Datei mit angehängt, könntest du mir sagen, wo ich dieses "(-gdwarf-2)" darin einstellen muss? Cool, wusste gar nicht, dass das AVR Studio die .elf datei brauch, ich war immer der Meinung er brauch zum simulieren eine .cof Datei. Muss ich heut abend mal ausprobieren (Wenn ich bis dahin das problem mit dem GCC-Compiler in den Griff bekommen habe :-) ) Gruss Tobi
> oben hab ich die makefile-Datei mit angehängt, könntest du mir > sagen, wo ich dieses "(-gdwarf-2)" darin einstellen muss? Statt des -g in CFLAGS. > Cool, wusste gar nicht, dass das AVR Studio die .elf datei brauch, Ich hoffe, deine AVR-Studio-Version ist neuer als das Makefile-Template, das du genommen hast... Die neueren Templates haben -gdwarf-2 meiner Meinung nach bereits drin.
Hallo Tobi Welche Version von AVR-Studio verwendest Du? Wenn Du die aktuelle Version 4.12 hast, Dann kanst du direkt im AVR-Studio ein AVR-GCC Projekt eröffnen und Deine Source-Dateien reinsaugen! Mit dem im AvrStudio enthaltenem AVR-GCC Plugin kannst Du super bequem alle Projekt-Einstellungen vornehmen und direkt vom AvrStudio aus drauflos programmieren, compilieren und debuggen! Das AVR-GCC Plugin kreiert das erforderlche Makefile, normalerweise hast Du damit nichts mehr zu tun... MfG Peter
Hallo Peter, ich hab die Version 4 vom AVR Studio. Meinst du, dass auch damit geht? Wenn nein, wo krieg ich dann eine neuere Version her, würde das dann Geld kosten? (Meine aktuelles AVR-Studio war nämlich bei der Software zum Roboter dabei): ciao Tobi
AVR-Studio ist kostenlos, gibt es auf www.atmel.com Version 4.wieviel? Unter help/about findest Du die genaue Versionsnummer. Gruß, Stefan
Hallo Tobi Falls nicht schon selbst gefunden, hier der exakte Link zu AvrStudio. http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 AVR-GCC Support hat aber bloss die neuste Version AvrStudio 4.12! WinAvr (=kompletes AVR-GCC Package für Win32, ebenfalls gratis) ist nichr mit dabei, dies sollte vorgängig installiert werden! MfG Peter
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.