Multicore-Programmierung mit dem Propeller-Mikrocontroller
Bis auf wenige Ausnahmen blieben Embedded-Programmierer bisher von Mehrkernprozessoren und den damit einhergehenden Anforderungen verschont. Das liegt unter anderem daran, dass der vom US-Unternehmen Parallax entwickelte achtkernige Propeller bisher nur wenig Aufmerksamkeit bekam.
- Tam Hanna
Bis auf wenige Ausnahmen blieben Embedded-Programmierer bisher von Mehrkernprozessoren und den damit einhergehenden Anforderungen verschont. Das liegt unter anderem daran, dass der vom US-Unternehmen Parallax entwickelte achtkernige Propeller bisher nur wenig Aufmerksamkeit bekam.
Ein Blick auf das folgende Architekturdiagramm genügt, um sich von den Besonderheiten dieser MCU (Microcontroller Unit) zu überzeugen. Während AVR und andere vorrangig aus einem Kern mit jeder Menge Bonuslogik bestehen, bezieht der Propeller seine Leistung aus acht als Cog bezeichneten Rechenkernen.
(Bild: https://www.parallax.com/sites/default/files/downloads/P8X32A-Propeller-Datasheet-v1.4.0_0.pdf)
Aus der noch ungewöhnlichen Herangehensweise an die Architektur eines Mikrocontrollers ergeben sich für Entwickler einige Besonderheiten. Während durchschnittliche MCUs diverse Kommunikationsprotokolle wie I2C (Inter Integrated Circuit) oder SPI (Serial Peripheral Interface) in Hardware realisieren, weisen Entwickler dem Propeller einen Cog zu. Das gilt in besonderer Weise für Interrupts. Jeder Cog ist in der Lage, auf Änderungen des Zustands eines IO-Pins zu warten: Tritt das gewünschte Ereignis ein, wird sofort gerechnet. Das führt zu deterministischer Reaktionszeit, da die zum Aufwecken eines Cogs notwendige Zeit konstant und bekannt ist.
Hardware herbei
Aufgrund der vergleichsweise geringen Verbreitung ist es mitunter schwierig, die benötigten Komponenten aufzutreiben. Der Autor nutzt in den folgenden Schritten ein als Propeller P8X32A Quickstart bezeichnetes Evaluationsboard. Der Aufbau des für rund 50 Euro erhältlichen Geräts entspricht dem in Abbildung 2 gezeigte Minimalsystem, das einen lauffähigen Propeller-Mikrocontroller realisiert. Zu beachten ist, dass man im Rahmen des Kaufs ein Mini-USB-Kabel mitbestellen muss – das Evaluationsboard kann mit Micro-USB-Kabeln nichts anfangen.
(Bild: https://www.parallax.com/sites/default/files/downloads/P8X32A-Propeller-Datasheet-v1.4.0_0.pdf)
Propeller durchlaufen einen zweistufigen Bootvorgang. Ein in der MCU enthaltener Bootloader versucht im ersten Schritt, Verbindung zu einem über eine serielle Schnittstelle ansprechbaren Computer aufzunehmen und von dort Code zu beziehen. Scheitert das, sucht der Controller nach einem 32 KByte großen I2C-EPROM (Erasable Programmable Read-Only Memory). Sein Inhalt wandert in das globale RAM der MCU, womit die Programmausführung beginnen kann. Findet der Propeller auf keine der beiden Weisen ausführbaren Code, wird er untätig.