Forum: Mikrocontroller und Digitale Elektronik Notwendige Software für uC-Programmierung


von Estephan T. (meckelmohr)


Lesenswert?

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

von Jim M. (turboj)


Lesenswert?

Das sollte alle in der Doku zum Kurs stehen.
Hat der Dozent ein Buch empfohlen? Wenn ja, dann dort nachlesen.

von Daniel A. (daniel-a)


Lesenswert?

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.

von Estephan T. (meckelmohr)


Lesenswert?

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ß

von Nils P. (torus)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Estephan T. (meckelmohr)


Lesenswert?

> 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

von Daniel A. (daniel-a)


Lesenswert?

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
von Nop (Gast)


Lesenswert?

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).

von W.S. (Gast)


Lesenswert?

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.

von Black J. (shaman)


Lesenswert?

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
Noch kein Account? Hier anmelden.