Hallo!
Ich programmiere nun seit längerem auf der AVR Architektur und finde das
für einfache Lösung auch eine gute Sache. Durch das Embedded Projects
Journal bin ich jetzt darauf gekommen mal etwas mit der ARM-Familie
machen zu wollen. Sieht alles recht interessant aus, aber für mich
besteht das Problem, dass ich (noch) nicht den Durchblick von der Fülle
an Controllertypen und Boards habe... Bei der Recherche sind mir nun ein
paar Boards aufgefallen:
1.) Gnublin von gnublin.org (gibt es auch im Shop - recht wenig Pins
herausgeführt?!)
2.) Das mbed Board (mbed.org)
3.) Die Development Boards aus dem Shop (wobei mir das teilweise für den
Einstieg etwas zu teuer ist)
Habt ihr Erfahrungen, Anregungen, Tipps für mich? Wie läuft die genaue
Entwicklung ab? Programmiert man dort auf einem Embedded Linux oder ist
das wie bei den AVRs, dass man per avrdude (mal als Beispiel genommen)
irgendeine .hex Datei auf den Controller flasht und der dann schaltet &
waltet?
Gruß,
Stefan
STM32 Discovery board. Sehr billig, verschiedene compiler moglich (IAR,
Keil, Atollic, Eclipse...), jetzt auch noch ein STM32F4 discovery. Wird
verkauft bei Farnell, RS, aber auch bei Watterott.
Ein billige Einstieg in ARM (15€)
Lese mal in diesem Artikel: STM32
Und frage dann gezielt.
Das STM32F4 discovery kann ich auch empfehlen. Bei den 15 EUR macht man
garantiert keinen Fehler ;-)
Zunächst solltest du dir darüber im Klaren sein das der Ausdruck "ARM
Familie" sehr weit gefasst ist.
Es gibt z. B. kleine Controller die auf dem Cortex-M0 Kern basieren und
darauf ausgelegt sind den 8-Bit Controller Konkurrenz zu machen.
Daneben gibt es aber auch Dual-Core µCs mit 1.2GHz auf Cortex-A8 Basis
die gerne in Android Geräten verbaut werden. Die haben nicht das
allermeiste miteinander zu tun, außer das die Kerne eben von ARM
entwickelt wurden.
Das Gnublin-Board ist ein kleiner Linux Rechner, leider ohne Netzwerk.
Das mbed Board entspricht praktisch einem AVR Board und wird mit einem
Hexfile geflasht.
Es hängt jetzt also davon ab was du machen willst. Soll es so etwas sein
wie ein AVR nur halt mit einem 32Bit Controller oder ein embedded Linux?
Im ersten Fall kannst du noch gut deine eigene Hardware aufbauen und
komplett selbst programmieren. Beim Linux Rechner wird es dagegen wohl
eher auf ein fertiges Board hinauslaufen.
Falls du noch nichts mit Linux gemacht hast solltest du dir für die
zweite Variante vielleicht erst ein solches Betriebssystem (z. B.
Ubuntu) auf deinem Rechner installieren und dich damit befassen. Kann
auch eine virtuelle Maschine unter VirtualBox sein.
Moin!
Das STM32F4 gefällt mir echt gut. Entspricht eigentlich all meinen
Anforderungen zum Anfang. Mir bleiben aber noch zwei Fragen offen:
1.) Wird dort über USB programmiert? Also ist dort eine Art Bootloader
vorinstalliert, der das Image zu sich in den Speicher schaufelt.
2.) Das Gnublin-Board läuft auf einem Embedded Linux. Hat das
nennenswerte Vorteile oder ist das nur eine "Oberfläche" um mit der
Hardware zu kommunizieren? Welche Vorteile bringt diese "hohe" Hardware?
Für mich sieht das Alles ein bisschen Arduino-like aus..
Gruß,
Stefan
Ach ihr postet ja schneller als man lesen kann. Die letzten zwei Posts
hatte ich vor meinen letzten gar nicht gelesen. Damit sind natürlich die
Frage geklärt.
@Michael:
Ich nutze schon länger Ubuntu und mach meine gesamte Entwicklung
(PC-Software als auch µC) damit ;) Eine Netzwerkschnittstelle soll wohl
über einen USB-Port anschließbar oder per COM-Verbindung emulierbar
sein.
Ich muss ehrlicher Weise sagen, dass ich mir unter der 32-bit Welt doch
eher Embedded Systeme wie das Gnublin vorgestellt habe. So beim groben
drüber sehen von der Programmierung des STM32 sieht das Ganze doch recht
komplex aus.
Gruß,
Stefan
Hallo,
>1.) Wird dort über USB programmiert? Also ist dort eine Art Bootloader>vorinstalliert, der das Image zu sich in den Speicher schaufelt.
Es befindet sich der ST-Link/V2 auf dem Board zusätzlich und du kannst
nicht nur über USB programmieren, sondern auch debuggen. Ausserdem
besitzen die STM32 z.B. einen internen USB Bootloader, damit koennte man
das Device auch programmieren.
Die 15-17€ sind echt gut investiert, weil Du in den Besitz von einem
Arm-Cortex-M4 und STLink/V2 (kostet normal 30€) kommst.
Embedded Linux hat den Charme das man ein ausgewachsenes Betriebssystem
zur Verfügung stehen hat. Damit kann man mehrere Anwendungen
gleichzeitig ausführen und sich auch schnell mal remote per SSH
einloggen. Für die neueren A8/A9 Plattformen stehen auch viele
Multimedia Codecs zur Verfügung wenn man Audio/Video machen will
(Stichwort NEON/SIMD Befehle).
Weit verbreitet sind da die OMAP Controller/Prozessoren von Ti für die
es auch fertige Debian Distributionen gibt (z.B. für AM3517).
Nur sind das eben mehr eigenständige Rechner als Mikrocontroller.
Billiger als (Atom-)PCs und auch mit einer geringeren Leistungsaufnahme.
Aber sonst auch nicht viel anders. Gut, kleiner sind sie auch. Aber
allemal teurer als ein Cortex-M3/M4 Board. Die Möglichkeiten hardwarenah
zu arbeiten (z. B. mit SPI/I2C/GPIO) sind eingeschränkt. Selbstbau
kannst du fürs Erste vergessen. Die Hardware ist ziemlich komplex.
Wie gesagt, es kommt darauf an was du willst. Eine Grenze zwischen den
reinen µCs und den embedded Linux Systemen könnte man vielleicht beim M4
ziehen. Dessen Stärke sind die DSP und FPU Befehle. Anwendungen dafür
erfordern aber oft Netzwerk/USB Anbindungen und viel Speicher. Da ist
vom Aufwand/Kosten her der Abstand zu den A8 Systemen nicht mehr groß,
was den Sinn des M4 dann doch wieder infrage stellt.
Um bei einem STM32 eine LED zum Blinken zu bekommen ist schon etwas mehr
zu tun als bei einem ATmega48. Der Aufwand erhöht sich bei komplexeren
Anwendungen aber nicht mehr sonderlich (für eth, USB gibt es fertige
Lösungen). Und wenn du ein mehr oder weniger echtzeitfähiges System mit
einem embedded Linux System aufbauen willst, geht es gleich an die
Treiberprogrammierung. Das gilt auch für hardwarenahe Programmierung.
Das ist dann wiederum aufwendiger als bei einem
STM32/LPC1xxx/LM3S/wasauchimmer.
Falls du etwas mit Linux machen willst dann kannst du das aber gleich
tun. Ein M3/M4 Board bringt dann nichts.
Ich denke mal Stefan möchte erst mal kein Linux auf dem Board haben,
denn das ist dann wirklich richtig aufwändig.
Als erster Zwischenschritt vor Linux ist ein STM32F4 nicht schlecht, da
lernt man vieles kennen:
- Umgang mit mehr Speicher
- Bus-Matrix vom Core
- Die Clock's und deren Konfiguration
- die vielen IO-Module und die DMA Funktionen
Mit dem STM32F4Discovery Board ist das auch als Hobby-Anwender noch
bezahlbar, ja sogar super günstig.
Einen Cortex-A8 kann man auch nur mit Linux Nutzen wenn man genügend RAM
anschließt, und den auch noch mit 1GHz zu laufen zu bekommen ist schon
fast ein Kunstwerk. Besser kauft man sich da gleich ein ITX-Board oder
ein fertiges A8-Modul und das wird teuer. Der A8 ist somit nicht mehr
Hobby-Tauglich (außer für die Profis).
Nur wegen der Programmierung, es macht keinen Unterschied 8 Bit oder 32
Bit zu programmieren, das macht dann schon der C-Compiler alleine.
Guten Morgen!
Vielen Dank für eure Ausführungen. Ich denke mir, dass ich erst einmal
das STM32 mir besorgen werde und dann anfange mich reinzufuchsen. Habt
ihr zufällig gute Programmiertutorials oder eine Übersicht der Syntax?
Ich hab da bisher noch nicht wirklich etwas gefunden..
Gruß,
Stefan
Artikel:
- STM32
- STM32 Eclipse Installation
Das "Blink-LED, komplettes Eclipse-Workspace von MmVisual" (mir)
überarbeite ich gerade so dass dort 3 Projekte für den STM32F1/2/4 drin
sind. Die Vorabversion kannst du von mir bekommen.
Und gegen eine kleine Spende helfe ich auch gerne bei der Einrichtung.
Moin!
So langsam fange ich an durchzublicken. Mir gefällt nur eins nicht: Es
gibt zwar Demo-Codes die auch alle toll funktionieren sollen, aber
darüber hinaus gibt es keine weitere Beschreibung. Auch bei chibiOS ist
das so. Der Code ist zwar gut und verständlich kommentiert, aber es gibt
keine Übersicht, welche Instruktionen es gibt und wie man z.B. Ports
anspricht.
Tschuldigung, dass ich so viel frage, aber für mich sieht das alles hoch
komplex aus und ziemlich aufwändig in der Programmierung.
Gruß,
Stefan
In der STM32Fxxx Standard Peripherals Library, von der Downloadseite von
ST sind jede Menge Demo-Codes enthalten.
Einfach die Lib laden und anschauen, samt Dokumentation.