Hallo zusammen, ich suche den Einstieg in die uC-Entwicklung (als Hobby) und habe dazu einen Kurs an meiner Universität belegt in der ein Atmel AT91SAM9XE512 uC verwendet wird, samt vom Dozenten entworfenen Evaluationsboard mit etlichen Peripheriebauteilen (Sensoren aller Art, MP3-Dekoder, USB-Anschlüße ..). Es geht um die Installation der zur Programmierung benötigten Software und ich finde keine Übersicht über die verwendeten Programme. Wir verwenden Eclipse, yagarto, SAM-BA, Open-OCD und die GCC-Suite. Könnte jemand mit Erfahrung die Programme ins rechte Licht rücken und ein paar Worte zu ihnen sagen, damit man sich eine Übersicht über die Beziehung der Programme zueinander und deren Relevanz bilden kann? Fragen die ich habe sind z.B.: - Welche Bestandteile braucht eine Toolchain zur uC-Programmierung? - Warum Eclipse als IDE? Ist das willkürlich gewählt? - Was ist YAGARTO und welche Aufgabe erfüllt es? Gibt es Alternativen? - Welche Funktion nimmt SAM-BA ein? - Was ist Open-OCD und warum verwenden wir es? Alle Information die ich gesammelt habe fügt sich leider nicht zu einem großen Ganzen zusammen, daher bin ich über jede Hilfe dankbar. Liebe Grüße, ET
Das sollte alle in der Doku zum Kurs stehen. Hat der Dozent ein Buch empfohlen? Wenn ja, dann dort nachlesen.
Estephan T. schrieb: > - Welche Bestandteile braucht eine Toolchain zur uC-Programmierung? Zur uC Programmierung benötigt man mindestens ein Programm um den Binären Programmcode zu erstellen, ein Compiler wie GCC oder ein Assembler ist dazu nötig, sofern man nicht mit dem Hexeditor Programmieren will, und dass will keiner. Dann braucht man noch etwas um das Programm zu Flashen, also hochzuladen, in deinem Fall scheint dass SAM-BA zu sein.Das ist das absolute Minimum (naja fast). > - Warum Eclipse als IDE? Ist das willkürlich gewählt? Eclipse ist eine bekannte IDE die für enen breiten Aufgabenbereich eingesetzt werden kann. Es ist möglich, dass es für die Tools bereits eine Eclipse Integration gab. Packtisch ist die IDE Geschmackssache, ich bevorzuge Makefiles & Texteditoren über IDEs. > - Was ist YAGARTO und welche Aufgabe erfüllt es? Gibt es Alternativen? YAGARTO ist eine Toolchain, sie enthält Dinge wie den Compiler, eine Shell, etc. Die Toolchain enthält jedoch nicht die IDE, sondern die IDE bindet die Toolchain ein. > - Welche Funktion nimmt SAM-BA ein? Das Ding flasht das Programm auf den Chip. > - Was ist Open-OCD und warum verwenden wir es? Open-OCD ist ein Debugger. Den braucht man, wenn etwas nicht so lauft, wie man es erwartet. Man kann dann den Code an gewissen stellen Anhalten und nachsehen, was in den Variablen steht, etc.
Danke für die Antworten Daniel. Noch ein paar weitere Dinge: > YAGARTO ist eine Toolchain, sie enthält Dinge wie den Compiler, eine Shell, etc. Ich habe bereits einen Compiler (gcc), wofür genau ist die Shell da, Kommunikation von und zum uC im Betrieb? Muss es die yagarto-shell sein oder gibt es Alternativen? > Samba flasht das Programm auf den Chip. Nehme ich korrekt an, dass SAM-BA das uC-spezifische Protokoll kennt und speziell zum Flashen des uC von Atmel entwickeln worden ist? (wir flashen per USB) > Open-OCD ist ein Debugger. Ist damit Debuggen im laufenden Betrieb gemeint? Wird also der uC dafür "angehalten"? Kann das auch der GDB oder brauche ich Open-OCD? Bekomme ich den uC auch mit MinGW, meinem Texteditor und Samba zum laufen oder brauche ich zwingend eins der anderen Tools? Gruß
Estephan T. schrieb: >> YAGARTO ist eine Toolchain, sie enthält Dinge wie den Compiler, eine Shell, etc. > Ich habe bereits einen Compiler (gcc), wofür genau ist die Shell da, > Kommunikation von und zum uC im Betrieb? Muss es die yagarto-shell sein > oder gibt es Alternativen? Yartago ist eine GCC basierende Toolchain. Wenn sie für dich gut läuft, dann nimm sie. Es gibt aber auch viele andere GCC basierende Toolchains die ebenso gut sind. Ist Geschmackssache. >> Samba flasht das Programm auf den Chip. > Nehme ich korrekt an, dass SAM-BA das uC-spezifische Protokoll kennt und > speziell zum Flashen des uC von Atmel entwickeln worden ist? (wir > flashen per USB) Soweit ich das verstanden habe ist SAM-BA der Programmieradapter, der zum Programmieren nötig ist. >> Open-OCD ist ein Debugger. jein Open-OCD ist die Software-Komponente die mit Deinem SAM-BA redet und einige Services anbietet. Services in diesem Fall ist so etwas wie Chip Reseten, Flash schreiben und gegebenenfalls eine Debugging-Schnittstelle bereitstellen. Der eigentliche Debugger ist dann aber nicht OpenOCD sondern in der Regel gdb, der wieder aus der Toolchain kommt.
Estephan T. schrieb: >> YAGARTO ist eine Toolchain, sie enthält Dinge wie den Compiler, eine Shell, etc. > Ich habe bereits einen Compiler (gcc), Der ist teil der Toolchain. Stell dir die Toolchain wie ein Baukasten vor, zu dem gewisse Pakete gehören und man andere nachinstallieren kann. > wofür genau ist die Shell da, Nunja, man brauchte sie nicht unbedingt, aber normalerweise enthält soeine Toolchain ein make Programm. Make kann nachsehen, welche Zieldateien die im Makefile stehen und noch nicht da sind, und führt dann die Befehle im Makefile aus um diese zu erstellen. Je nach make Programm kann dieses auch gebrauch von der Shell machen. Die Shell ist ein Programm, welches Shellscripts ausführt, und Shellscripts sind eine Abfolge von Befehlen, die miteinander Verbunden werden können. Und diese Befehle sind dan wiederum Programme. > Muss es die yagarto-shell sein oder gibt es Alternativen? Die yagarto-shell ist vermutlich bash, man könnte eine beliebige andere wie z.B. dash oder zsh nehmen, aber das lohnt sich nicht wirklich. > Samba flasht das Programm auf den Chip. Nehme ich korrekt an, dass SAM-BA das uC-spezifische Protokoll kennt und > speziell zum Flashen des uC von Atmel entwickeln worden ist? (wir > flashen per USB) Da bin ich jetzt überfragt, da ich den uC nicht kenne. Normalerweise ist soein Programm in der Lage mit dem Programmer oder dem Bootloader im uC zu kommunizieren. Je nach Abstraktionsgrad muss dieses dann den uC oder den Bootloader unterstützen, oder auch nicht. >> Open-OCD ist ein Debugger. > Ist damit Debuggen im laufenden Betrieb gemeint? Wird also der uC dafür > "angehalten"? Kann das auch der GDB oder brauche ich Open-OCD? Der uC wird teilweise angehalten. Gewisse Timer oder Interruktroutinen laufen eventuell weiter. Open-OCD kann als GDB Server arbeiten, zu dem sich GDB verbinden kann. > Bekomme ich den uC auch mit MinGW, meinem Texteditor und Samba zum > laufen oder brauche ich zwingend eins der anderen Tools? MinGW ist eine Toolchain zum Kompilieren von Programmen für Windows. Man kann es verwenden, wenn man den passenden Crosscompiler dazuinstalliert, und eventuell noch die C Runtime. Die C Runtime ist bei GNU normalerweise die Binutils mit der libc, aber es gibt für uCs auch die uClibc, etc. Diese enthalten funktionen wie malloc, strlen, etc.
Estephan T. schrieb: > Es geht um die Installation der zur Programmierung benötigten Software > und ich finde keine Übersicht über die verwendeten Programme. Warum gehst Du nicht einfach auf die Herstellerseite des gewünschten MC? Da gibt es die gewünschten Informationen. Will man andere Tools benutzen, braucht man deutlich mehr Erfahrung. Estephan T. schrieb: > Atmel AT91SAM9XE512 Für Atmels sollte das AVR-Studio alles nötige enthalten. Einfach downloaden und installieren.
> Warum gehst Du nicht einfach auf die Herstellerseite des gewünschten MC? Das habe ich selbstverständlich als erstes getan. Dort wird mir Atmel Studio vorgeschlagen, mit dem Hinweis: "Atmel Studio 6 contains everything you need to create, compile and debug code. It will download your code straight into the on-chip Flash of the ARM-based microcontroller — without any other software components." Das ist der Ursprung meiner Frage: wieso 5 Programme von Drittherstellern, wenn es ein Softwarepaket vom uC-Hersteller gibt, welche sämtliche Funktionalität bereitstellt? Ich werd jetzt mal drauf los installieren und sehen ob ich ein paar LEDs zum leuchten bringe. Vielen Dank für Eure Antworten. Grüße, ET
Estephan T. schrieb: > Das ist der Ursprung meiner Frage: wieso 5 Programme von > Drittherstellern, wenn es ein Softwarepaket vom uC-Hersteller gibt, > welche sämtliche Funktionalität bereitstellt? Wenn du es dir genau ansiehst, wirst du feststellen, das es ebenfalls aus mehreren Komponenten besteht. Diese IDE enthält ebenfalls den GCC mit gdb, etc. Die meisten Komponenten basieren dabei auf bestehenden Open Source Projekten, die in dem Packet einfach vorverpackt wurden. Ich empfehle dir, wenn das Hello World Programm lauft, mal alles manuell durchzuspielen, damit du siehst, welches Programm im hintergrund was macht.
:
Bearbeitet durch User
Daniel A. schrieb: > Nunja, man brauchte sie nicht unbedingt, aber normalerweise enthält > soeine Toolchain ein make Programm. Make kann nachsehen, welche > Zieldateien die im Makefile stehen und noch nicht da sind, und führt > dann die Befehle im Makefile aus um diese zu erstellen. Je nach make > Programm kann dieses auch gebrauch von der Shell machen. Die Shell ist > ein Programm, welches Shellscripts ausführt, und Shellscripts sind eine > Abfolge von Befehlen, die miteinander Verbunden werden können. Und diese > Befehle sind dan wiederum Programme. Ein durchaus wichtiger Punkt ist, daß man oftmals die Wahl hat, ob man das Binärprogramm aus der IDE heraus erstellen will oder mit einem Shellscript / Makefile. Für die IDE spricht, daß man sich die Sachen einfach zusammenklicken kann. Fürs Debugging usw. eine gute Option. Außerdem geben IDEs in ihrerm Konsolenfenster aus, mit welchen Parametern genau sie den Compiler aufrufen, so daß man eine einfache Vorlage für ein Shellscript bekommt. Den Release-Build hingegen würde ich ausschließlich mit einem Shellscript arbeiten. Das hat man leichter unter Kontrolle, anstatt alles auf zig GUI-Tabs verstreut zu haben. Außerdem ist man dann unabhängig von einer bestimmten IDE, die es vielleicht in fünf Jahren nicht mehr gibt. Oder deren Update zuviel kosten würde. Oder die in fünf Jahren auf dem dann verwendeten Betriebssystem nicht mehr läuft. Oder die beim Import von Altprojekten alles durcheinanderwirbelt und dann nicht mehr dasselbe Binärfile erzeugt wie vorher. Oder man gibt das Projekt ab, und jemand anderes mag eine ganz andere IDE. Alles schon gesehen. So ein Script funktioniert auch unter verschiedenen Betriebssystemen (Linux: Shellscript, Windows: mit leichten Syntaxänderungen als Batchfile).
Estephan T. schrieb: > und habe dazu > einen Kurs an meiner Universität belegt in der ein Atmel AT91SAM9XE512 > uC verwendet wird, samt vom Dozenten entworfenen Evaluationsboard Naja, dein Dozent scheint ein Atmel-Liebhaber zu sein. Ob der genannte µC für den blutigen Einstieg der Richtige ist, wage ich stark zu bezweifeln. Hoffentlich taugt das Bastelboard des Dozenten etwas und noch hoffentlicher ist es bezahlbar. > Fragen die ich habe sind z.B.: > - Welche Bestandteile braucht eine Toolchain zur uC-Programmierung? Du brauchst ein Konglomerat aus Compiler, Assembler, Linker, Code-Extraktor, Bibliotheken des Compilers und ein Programm mit dem man dein Kunstwerk in den µC verfrachten kann, genau gesagt in den Flash-Rom des µC programmieren kann. Das ist eigentlich ALLES, was du wirklich brauchst. Der Rest ist Beiwerk und nur manchmal nützlich. (Zum code-Extraktor: Das Programm heißt beim Keil "fromelf", weil es aus dem vom Linker generierten File im ELF-Format ein Hex- oder Binärfile generieren kann. Beim GCC hat es nen anderen Namen, macht aber im Prinzip dasselbe) > - Warum Eclipse als IDE? Ist das willkürlich gewählt? Ja, das ist willkürlich gewählt. > - Was ist YAGARTO und welche Aufgabe erfüllt es? Gibt es Alternativen? YAGARTO = Yet Another Gnu-Arm-TOolchain. In einer Yagarto-Distri ist alles drin, was du vom Quellfile bis zum Hexfile brauchst. > - Welche Funktion nimmt SAM-BA ein? Damit hab ich mich beim WP34S-Projekt schwarz geärgert. Es is mMn, die absolut schlechteste Brenn-Software der Welt - noch nach dem Flash-Demonstrator von ST. > - Was ist Open-OCD und warum verwenden wir es? Es ist der von begeisterten Bastlern unternommene Versuch, diverse Adapter, die man für JTAG bzw. SWD verwenden will, unter einen Hut zu bekommen. Ich habe damit nur schlechte Erfahrungen gemacht, aber es soll Leute geben, die Open-OCD mögen. Ganz generell meine Meinung zum Gesamtvorhaben: - Der GCC ist kostenlos, das ist ein Argument. Aber er ist hakelig im Vergleich zum Keil, den es bis zu 32K Code auch kostenlos gibt. Obendrein gibt es m.W. einen Deal zwischen ST und Keil, wonach es den vollen Keil für einige der µC von ST gibt. - Die Wahl eines µC von Atmel ist schlecht, denn damit ist man eben auf dieses Samba angewiesen - es sei denn, man schreibt sich selber etwas - ODER man knickt Samba und verlegt sich auf SWD, wozu man als Lernender zuvor sich einen Seggerschen J-Link-Edu besorgen sollte - SOFERN der gewählte µC und die Platine des Dozenten das ermöglichen. - Eine IDE als Allererstes benutzen zu wollen, mag ja ein nettes geklicke ergeben, aber ist mMn nicht primär zielführend, da man sich mehr mit den Befindlichkeiten der IDE befassen muß als mit dem eigentlichen Mikrocontroller. - die hier genannte Variante, alle nötigen Aufrufe in ein Script oder Batchdatei zu schreiben, ist auch meine Herangehensweise. Man hat alle Kommandozeilenparameter einmal in einer .xcl Datei formuliert und ab da kann man sich drauf verlassen, anstatt sich durch diverse Untiefen einer IDE durchzuwühlen. Und eine Batchdatei ist genauso schnell aufgerufen wie der Compile-Knopf der IDE gedrückt. Das Einzige, was der typische IDE-Benutzer vermißt, ist das Debuggen per Einzelschritt. Aber wer braucht das schon wirklich.. Ganz im Ernst: die allermeisten die nach dem Debugger schreien, glauben nur, daß sie ihn tatsächlich brauchen, denn sie meinen, daß der Debugger ihnen das eigene Denken abnehmen kann. W.S.
W.S. schrieb: > Obendrein gibt es m.W. einen Deal zwischen ST und Keil, wonach es den > vollen Keil für einige der µC von ST gibt. > Genau genommen sind das F0 und L0 http://www2.keil.com/stmicroelectronics-stm32/mdk
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.