Parallax, der Hersteller der Basic-Stamp Produkte, hat mit dem Propeller einen radikal neuen Typ von Mikrokontrollern entwickelt. Bisherige Kontroller integrierten einen Mikroprozessor mit Datenspeicher und Peripheriebausteinen auf einem Chip. Der Propeller dagegen hat 8 parallel laufende Mikroprozessoren auf einem Chip, dafür fast keine Peripheriefunktionen. Da es noch sehr wenige Informationen zum Propeller in deutsch gibt, habe ich diese Seite geschaffen, auf der ich meine Erfahrungen weitergeben will.

Aufbau des Propellers

Die Idee hinter dem Propellerchip ist, fest vorgegebene Peripheriebausteine durch Software auf einem parallel laufenden Prozessor zu ersetzen. Damit kann man sich seine eigenen Peripheriebausteine programmieren, oder genau die gewünschten fertigen Funktionen aus einer Library einbinden. Momentan beschränkt sich das Angebot an fertigen Funktionen noch auf die Standards, wie UART, SPI, I2C, PS2, aber mal sehen, was in Zukunft noch alles möglich sein wird.
Ein wenig Hardware-Peripherie gibt es allerdings auch im Propeller, und die hat es in sich. Pro Prozessor sind 2 32-Bit Timer mit eigener PLL vorhanden, die auch wieder ganz anders arbeiten, als gewohnt. Sie sind in der Lage Frequenzen bis zu 160 MHz zu erzeugen, können Ereignisse an den Pins bis 40 MHz zählen, DA und AD Wandlung unterstützen, und enthalten sogar die nötige Hardware um Video- und VGA- Signale zu erzeugen!

Die Kombination aus 32 Bit-CPU, Timern und lokalem RAM nennt sich Cog. Neben den 8 Cogs gibt es noch ein globales RAM und ROM mit je 32 kByte, 32 I/O-Pins, einen internen 12 MHz Oszillator und einen Quarz-Oszillator mit PLL auf dem Chip.
Ein Cog arbeitet mit bis zu 80 MHz Taktfrequenz. Die CPU braucht für jeden Befehl mindestens 4 Takte, so dass im Maximum 20 MIPS pro Cog möglich sind. Bei 8 Cogs sind das immerhin 160 MIPS! Zugriffe auf das globale RAM dauern allerdings länger, ein sogenannter Hub sorgt dafür, dass die 8 Cogs sich nicht in die Quere kommen und dadurch wird die Zugriffsrate, zum globalen RAM, auf maximal 5 MHz begrenzt. Dies gilt nicht für die IO-Pins, Ein- und Ausgaben können mit voller Geschwindigkeit (20 MHz) gemacht werden.
Das globale RAM wird zur Datenübertragung zwischen den Cogs verwendet, sowie für grössere Datenarrays, die im internen Cog RAM keinen Platz haben, und es enthält nach dem Booten den Programmcode für alle Cogs, der dann beim Start eines Cogs in dessen internes RAM kopiert wird.
Der Propeller hat kein internes Flashrom! Er muss bei jedem Start seinen Code von einer externen Quelle erhalten. Das kann ein angeschlossener PC sein, oder ein externes kleines serielles EEPROM mit 256 kBit.

Entwicklungs-Software

Der Propeller kann in Assembler programmiert werden, oder in 'Spin', einer speziellen, von Parallax geschaffenen höheren Programmiersprache. Spin ist eine, etwas eigenwillige, aber mächtige Programmiersprache. Durch den objektorientierten Ansatz ist es relativ einfach, vorgefertigte Module in seinen Code einzubinden. Und das ist für das ganze Propeller-Konzept von zentraler Bedeutung.
Spin-Code wird nicht in einzelne Assembler-Instruktionen kompiliert, wie es zum Beispiel bei C der Fall ist, sondern in einen Zwischencode (ähnlich wie Java), der dann von einem Interpreter, der auf einem Cog läuft in Echtzeit interpretiert wird. Der Zwischencode befindet sich im globalen RAM, und ist dadurch nicht auf die Grösse des Cog-RAMs begrenzt. Durch die Interpretation, und den langsameren Zugriff aufs globale RAM ist Spin Code deutlich langsamer, als Assembler-Code (Faktor 20..200). Assembler Code wird beim Starten eines Cogs vom globalen RAM als ganzes in das Cog-RAM kopiert, ist deshalb auf etwa 490 Instruktionen begrenzt, und kann nicht mit Spin Code gemischt werden (in einem Cog läuft entweder der Spin Interpreter, oder der Assembler Code).
IDE
Die Spin Entwicklungsumgebung ist gratis von der Parallax Homepage downloadbar. In einer einfachen, aber durchdachten IDE lassen sich Spin und Assembler Anwendungen programmieren und per Tastendruck zum Propeller senden. Was allerdings fehlt, ist ein Debugger. Man kann sich zwar damit behelfen Werte auf einen angeschlossenen Monitor, oder ein Terminal auszugeben (auch von einem parallel laufenden Cog), aber das ist, gerade für Assemblercode Debugging, nicht komfortabel. Eines meiner ersten Projekte ist deshalb der PASD (Propeller Assembler Sourcecode Debugger).

Das Propeller Tool von Parallax läuft leider nur auf Windows, deshalb wird auch an alternativen Opensource-Projekten, mit Assembler und Downloader gearbeitet.

Entwicklungs-Hardware

Von Parallax gibt es fertige Entwicklungs- und Demoboards. Daneben verkaufen sie mit dem PropPlug/PropClip auch einfache USB-Programmieradapter.
Das schöne ist, dass der Propeller Chip auch in Bastler/Prototypen freundlichen Ausführungen erhältlich ist. Ich habe mir nur den nackten Chip im DIL-40 Gehäuse gekauft, und mit einem eigenen USB-seriell Adapter (basierend auf FT232R) mit dem PC verbunden. Mit einem PropPlug würde das etwa so aussehen:
Connection
Die 3.3V habe ich übrigens vom internen Regler des FT232R abgegriffen, das ist kein Problem, bei dem geringen Stromverbrauch des Propellers.
Hat man an seinem PC noch eine serielle Schnittstelle, so kann man auch damit den Propeller programmieren. Eine einfache Interface-Schaltung findet man auf der Parallax Homepage.
Die Verbindung mit dem Propeller Tool hat sofort funktioniert, und ich konnte die ersten Tutorial-Beispiele ausprobieren. Dazu war der Anschluss einer LED an P16,P17 nötig (natürlich mit Vorwiderstand).
Beim Parallax Demoboard gibt es Anschlüsse für PS2-Keyboard und PS2-Maus, viele Beispiele verwenden diese. Da ich kein PS2-Keyboard zur Hand hatte, und auch keinen PS2-Konnektor aufs Steckbrett bauen wollte, habe ich ein kleines PC-Programm geschrieben, dass die Tastendrücke der PC-Tastatur seriell zum Propeller schickte, und das Keyboard.spin Objekt entsprechend angepasst. Das war so praktisch, dass daraus das PropTerminal Projekt entstanden ist, das auch die Maus und den TV-Monitor emulieren kann.

Links

Hier ein paar gesammelte Links zu Entwicklungs Hard- und Software zum Propeller.

Propeller Tool usw.: Parallax
Parallax Shop für die Schweiz und Europa:Zeko
Entwicklungs Board Bausatz: tdus

english Click on the flag for an automatic translation of this site to english (done by Google).

Werbung

Wenn sie diese Beschreibungen, Spin Files und Projekte nützlich finden, und die Weiterentwicklung unterstützen wollen, machen Sie doch eine Spende via PayPal:
You can make a PayPal donation, if you want to support the developement of this site and projects.