Nachdem ich mich über die Feiertage etwas intensiver mit der mbed Umgebung beschäftigt habe, ist meine erste Begeisterung etwas gedämpft worden. Solange man sich innerhalb des mbed Frameworks bewegt, ist alles prima. Mit wenigen C Statements kann man sich schöne Sachen programmieren.
Hässlich wird es, sobald man etwas braucht, was nicht für das Framework abgedeckt wird und man sich in Tiefen der ARM Hardware begeben muss. Auslöser bei mir war eine Anleitung im Internet zum Bau eines Frequenzzählers. Mein nucleo Board hat fast alles, um diesen Vorschlag, der auf AVR Microcontrollern basiert, mit minimalen Hardware Aufwand zu realisieren. Da das mbed Framework von Haus aus keine Counter mit externen Quellen unterstützt, habe ich erforscht, wie das funktioniert. Und da bin ich als Hobby Bastler dann doch etwas überfordert. Damit sich kein ARM Fan auf die Füße getreten fühlt: die Möglichkeiten sind gigantisch. Aber das ist auch genau das Problem: die Dokumentation ist schlecht. Und jeder Chip Hersteller macht es anders. Deshalb ist auch das Internet keine Hilfe. Eine Lösung, die jemand für einen anderen Chip gefunden hat, hilft mir nicht weiter.
Als nächsten Anlaufpunkt habe ich mir dann das mbed Framework angesehen. Eine typische Entwickler-Strategie: Lernen durch forschen, wie es andere machen. Sobald man auf die HAL Ebene kommt (Hardware Abstraction Layer), beginnt das Elend. Die Funktionen sind für jeden Hersteller anders implementiert (was noch nachvollziehbar wäre – aber nicht schön) und noch schlimmer – innerhalb der ST Familie ist auch noch jeder Chip individuell implementiert.
Da ich noch andere Hobbies habe, bin ich nicht bereit, jetzt wochenlang in die Niederungen der Hardwareprogrammierung für den F401 Chip einzusteigen. Nur um es beim Umstieg auf einen anderen Chip wieder neu anzufangen. Hier verrennt man sich in Nischen. Für professionelle Entwickler ist es sicher schön, für jedes Problem eine Lösung zu haben. Für mich als Bastler ist es leider eine Sackgasse.
Da für mich das Entdecken und Ausprobieren ohnehin eher im Vordergrund steht als das Realisieren, habe ich überlegt, welche anderen Möglichkeiten zur Verfügung stehen. Es sollten günstige Entwicklungsboards zur Verfügung stehen und zumindest theoretisch die Möglichkeit bestehen, auch eigene Boards zu entwickeln. Und das wichtigste: es sollte eine vernünftige Entwicklungsumgebung verfügbar sein.
Atmel AVR
Die 8 Bit Atmel-AVR Familie ist in Maker-Kreisen sehr stark verbreitet. Besonders die Arduino Entwicklung hat völlig neue Anwender Kreise erschlossen. Vor 15 Jahren habe ich schon mal damit experimentiert. Auch das Frequenzzähler Projekt ist mit einem AVR Prozessor realisiert. Allerdings wollte ich es nicht einfach nachbauen sondern auch erweitern. Dafür habe ich in der Prozessorliste auch ein geeignetes Exemplar gefunden – kann es aber nicht in Einzelstückzahlen kaufen. Bei den 8 Bit Prozessoren stößt man Allgemein schnell an Grenzen, vor allem der RAM Bereich ist bei den meisten (allen?) Exemplaren sehr begrenzt.
Es gibt auch eine 32 Bit Variante – die wird aber scheinbar von Bastlern nur wenig verwendet. In Folge gibt es auch nicht so viel Hilfe und Tutorials. Und man kann auch nur begrenzt viele Modelle kaufen.
TI MSP 430
Dieser 16 Bit Prozessor war von Anfang an auf niedrigen Energieverbrauch optimiert. Mir gefällt die Architektur (einfach und überschaubar) und es gibt auch eine brauchbare Entwicklungsumgebung. Auch damit hatte ich vor 10 Jahren schon mal experimentiert und auch hier gibt das Datenblatt für mein geplantes Projekt geeignete Modell her. Aber auch hier hapert es mit dem Kaufen. Es gibt viele Varianten, aber gerade die interessanten Modelle sind nicht für den Bastler erhältlich.
Microchip PIC
Eigentlich gefällt mir dieser Prozessor von der Architektur her nicht. Aber er hat ein große Verbreitung und für den Bastler gibt es viele Modelle zu kaufen. Deshalb habe ich mir diese Modellreihe mal angesehen.
Die PIC Familie besteht nicht nur aus den (hässlichen) 8 Bit Varianten. Es gibt auch 16 Bit und 32 Bit Prozessoren. Beim Studium der Datenblätter ist mir aufgefallen, dass die 32 Bit Varianten PIC32 auf dem MIPS Prozessor basieren. Damit war mein Interesse geweckt. Als Bastler kann ich viele verschiedene Modelle kaufen und es gibt sie auch im DIL Gehäuse, ideal für einen Steckbrett-Aufbau. Eine eigene Platine kann mit minimaler externer Beschaltung realisiert werden (das war auch beim AVR toll).
Die Entwicklungsumgebung kann man sich bei Microchip herunterladen und sie kam mir gleich bekannt vor – sie basiert auf Netbeans (eine Java und C++ Entwicklungsumgebung). Praktischerweise gibt es sie auch für Linux. Auch wenn ich im Augenblick mit Windows 8.1 arbeite, wechsele ich hin und wieder zwischen Ubuntu und Windows. Dann ist es schön, wenn die Entwicklungsumgebung in beiden Systemen verfügbar ist.
Die Installation ist einfach und ohne Überraschungen. Es kommt auch ein Simulator mit, also habe ich gleich mal „Blinky“ – das HelloWorld der Embedded Welt ausprobiert und erweitert. Alles hat auf anhieb funktioniert und man mussten sich nicht mit unerwarteten Problemen rumschlagen. Die Hardware ist bestellt, kommt aber erst in ein paar Tagen. Dann werde ich weiter berichten. Ich wollte mich schon lange mal mit der MIPS Welt auseinandersetzen.