Forum: Mikrocontroller und Digitale Elektronik GCC für Parallax Propeller-Chip


von Stefan L. (stefanl38)


Lesenswert?

Hallo,

mittlerweile gibt es für den Propeller-Chip von Parallax eine IDE mit 
der auch in C programmiert werden kann.

Diese IDE heißt SimpleIDE  gibt es für Windows, Linux und Mac
download der neuesten beta hier
http://code.google.com/p/propside/downloads/list

Wer hat Erfahrung mit SimpleIDE?
Ich selbst benutze bis jetzt nur das Propeller-Tool und bst und 
programmiere in SPIN bzw. in Assembler.

Auch an die AVR-, ARM-, MSP430-, STM32-Programmierer:

Mich würde auch interessieren bei welchen Projekten habt ihr wirklich
Datentypen wie float, strings oder noch komplexere Sachen gebraucht?

Darüber würde ich gerne abschätzen ob es sich für mich lohnt in die 
Programmierung mit C einzusteigen.

Was ich am Propeller so klasse finde ist die Flexibilität.
Wenn man vier verschiedene SPI-schnittstellen braucht kein Problem.
Vier UARTS auch kein Problem
SPIN-object einbinden = eine Codezeile - fertig

Geht das in C genauso einfach. Ein include-Befehl und fertig oder ist 
das komplizierter?

viele Grüße

Stefan

von Marco M. (marco_m)


Lesenswert?

Ich habe aus Zeitgründen bisher nur mal kurz reinschauen können, aber 
ich empfand es schon als Fortschritt von diesem SPIN wegzukommen. Doof 
ist allerdings, dass man die SPIN Objekte aus dem OBEX nicht direkt 
verwenden kann (da gibt es ja sonst auch fast nix), allerdings gibt es 
einen Konverter, von SPIN nach C++/C:

http://code.google.com/p/spin2cpp/

Wie gut das funktioniert weiss ich nicht, allerdings tut sich da ja auch 
ein Tätigkeitsfeld auf: nämlich native PropGCC Objekte-Ports, die auch 
an C++ angepasst sind.

Mir ist aber aufgefallen, dass es platzmäßig schneller eng werden 
könnte, weil der Spin Bytecode in der Regel dichter war. Da wäre es dann 
interessant zu erfahren, wie man die verschiedenen Speichermodelle mixen 
und erweitern kann, damit man z.B. der Code für einen COG auf einem 
externen Speicherbaustein lassen kann.

Die Frage ob es sich lohnt in C einzusteigen ist leicht beantwortet: C 
ist die am meisten nachgefragte Programmiersprache überhaupt:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

von den Sprachen die danach kommen sind Objective-C und C++ direkte 
Obermengen von C. Im Mikrocontrollerbereich ist C King und du wirst mit 
fortgeschrittenen C Kenntnissen keine Probleme haben, in die gemanageden 
Sprachen (Java,C#) einzusteigen, besonders bei C# wird es dir helfen, da 
es hardwarenahe Konstrukte hat die C sehr ähnlich sind. Viele 
Programmierbuden haben nur noch Hochschulabsolventen die nur Java können 
und auch nichts anderes mehr lernen. Mit C bist du für die derjenige, 
der zaubern kann. Ich sags mal so: Du kannst mit C für jedes 
existierende Computersystem brauchbare effizient ablaufende Programme 
schreiben, von marginalen Ausnahmen (6502 basierte Controller oder 
sowas).

von Stefan L. (stefanl38)


Lesenswert?

Hallo Marco,

vielen Dank für Deine Antwort.

Schon richtig C ist der industrielle Standard.
Die steigendnen Berufschancen sind für mich persönlich nicht wichtig.
Ich benutze den Propeller-Chip nur hobbymäßig.

Trotzdem interessiert mich bei was für einer Art Embedded Systeme, die 
in C programmiert werden Floatingpoint, Strings sinnvoll usw. zum 
Einsatz kommen.

Ich vermute mal die Steuerung einer Waschmaschine mit LED-anzeige kommt 
ganz locker ohne FP und strings aus. Ebenso eine 
Fuzzy-Logic-Heizungssteuerung.

Also C-Programmierer: Bei welchen Hobbyprojekten habt ihr denn wirklich
SINNVOLL Fließkomma, strings und sonstige Spezialkapriolen wie 
callbackfunktionen, pointer auf methoden usw. von C eingesetzt?

viele Grüße

Stefan Ludwig

von TestX .. (xaos)


Lesenswert?

Stefan Ludwig schrieb:
> Also C-Programmierer: Bei welchen Hobbyprojekten habt ihr denn wirklich
> SINNVOLL Fließkomma, strings und sonstige Spezialkapriolen wie
> callbackfunktionen, pointer auf methoden usw. von C eingesetzt?

bei quasi allen sobald es einigermaßen vernünftig+komplex wird..
welche sprache kannst du denn  bisher ? c/c++ ist ein ABSOLUTES must to 
have als embedded entwickler...
wenn du es abe rnicht magst wäre evtl arduino mit dem pseusocode und 
fertigen gerätetreibern was für dich, solltest du es nur als hobby 
machen mit einfachen anwendungsfällen

von Stefan L. (stefanl38)


Lesenswert?

Hallo Andi,

Du schreibst "bei quasi allen sobald es einigermaßen vernünftig+komplex 
wird"

Ich gehe davon aus das im professionellen Bereich IMMER vernünftige 
Sachen gemacht werden.

ich möchte selbst mal ein Beispiel geben:

Es gibt eine Quad/Hex/Octocoptersteuerung inclusive Kamerastabilisierung
und GPS die auf zwei Propeller-Chips basiert. Da wurde garantiert kein C 
verwendet.

Kannst Du bitte mal ein paar wirklich ganz KONKRETE beim NAMEN genannte
Beispiele machen wo Du bei einem embdedd-system einen variant-record 
oder was auch immer verwendet hast und das ohne die entsprechend 
komplexe Datenstruktur ganz fürchterlich umständlich gewesen wäre die 
Aufgabe zu lösen?

Ich habe früher selbst Industriesteuerungen in Delphi programmiert.
(Da mögen die C-programmier jetzt so viel lachen wie sie wollen)
Ich war meistens schneller fertig als die lieben C-Kollegen an der 
Maschine nebenan und hatte auch weniger BUG-Beseitigungseinsätze)

Für diese Art Steuerungen waren MCUs nun wirklich zu klein. Da habe ich
mehrere threads am laufen gehabt, Callbackfunktionen und was weiß ich 
noch alles benutzt aber komplexe Datenstrukturen die über einen Array 
hinausgingen
habe ich NICHT gebraucht.

Also nochmal: bitte nennt mir  K O N K R E T E  Beispiele
Mikrocontroller verwendet komplexe Datenstrukturen, Pointer auf Methoden 
etc.

Vielen Dank schon im Voraus

viele Grüße

Stefan

von Marco M. (marco_m)


Lesenswert?

Ein Einsazubereich für float ist Audio/Signal-Verarbeitung. Wenn du 
FP-Hardware hast und Energieverbrauch nicht das Problem ist, dann ist es 
idR. einfacher und geht schneller die Algorithmen unter Nutzung von 
float zu kodieren, weil du viele Probleme die du bei Nutzung von 
Fixpunktzahlen (Überläufe usw.) gar nicht erst bekommst.

Was dann die Effizienz betrifft, so kann float idR. spezialisierte DSP 
Routinen (mit Integer-Vektor Instruktionen) natürlich nicht schlagen, 
aber die sind auch normalerweise etwas kniffliger.

von Marco M. (marco_m)


Lesenswert?

Stefan Ludwig schrieb:
> Also nochmal: bitte nennt mir  K O N K R E T E  Beispiele
> Mikrocontroller verwendet komplexe Datenstrukturen, Pointer auf Methoden
> etc.

Die meisten Microcontroller Projekte sind etwas kleiner, aber hier ist 
eines mit 200 Mhz CPU, 256 MB Ram und 2GB flash - Hardware auf nicht mal 
ein Android-Telefon vernünftig laufen würde:

http://programmers.stackexchange.com/questions/159637/what-is-the-mars-curiosity-rovers-software-built-in

von avr (Gast)


Lesenswert?

Stefan Ludwig schrieb:
> Pointer auf Methoden

Sinnvoll bei jedem grafischen Menü.

von Stefan L. (stefanl38)


Lesenswert?

OK ich habe meine Frage wohl zu unpräzise gestellt.
Ich bitte um Verzeihung das ich die Frage nicht gleich so präzise 
gestellt habe.

Ich hätte gerne ein paar Beispiele benannt wo der Antworter auf dieses 
Posting höchstpersönlich:

- Audiosignalverarbeitung

- ein grafisches Menü

- ....

realisiert hat.

Beispiel:
Eine Heizungssteuerung mit umfangreichen Datenlogfunktionen die den 
zeitlichen Verlauf der Meßdaten grafisch darstellen kann.

Ich meine also die GLOBALE Beschreibung des GESAMTprojekts und 
ausdrücklich
nicht bestimmte Details wie "Audiosignalverarbeitung" "grafisches Menü"

Die ursprüngliche Frage von mir ist ja: macht es für MICH, der ich eher 
kleine Projekte baut, Sinn C zu lernen weil C mehr Möglichkeiten bietet.

Diese Frage möchte ich Anhand der genannten Beispiele selbst 
beantworten,
da weder ich noch die "Comunity" noch nicht weiß welche Art Projekte ich 
zukünftig bauen werde.

Es geht mir darum aus anderen SCHON REALISIERTEN Projekten ABZUSCHÄTZEN 
ab welcher Projektgröße / Projektkomplexität der größere Sprachumfang 
von C ggü. SPIN ein wirklicher Vorteil ist.

Zum Blinken lassem einer LED oder dem Anzeigen von kleinen Texten auf 
einem LCD braucht man C sicher nicht. Da genügt MIR  persönlich SPIN 
vollkommen.


Vielen Dank schon im Voraus an diejenigen die den Thread geduldig 
gelesen haben und sich die Mühe machen eine entsprechende Antwort zu 
schreiben

viele Grüße

Stefan

von Marco M. (marco_m)


Lesenswert?

Stefan Ludwig schrieb:

> Es geht mir darum aus anderen SCHON REALISIERTEN Projekten ABZUSCHÄTZEN
> ab welcher Projektgröße / Projektkomplexität der größere Sprachumfang
> von C ggü. SPIN ein wirklicher Vorteil ist.

Das ist irgendwie falsch gefragt. Die Antwort kann für dich so nur 
lauten: Nur bei einem großen Projekt, weil du ja erst noch C lernen 
müsstest und darum die dreifache Mühe hast. Bei mir ist es aber so, daß 
ich auch für die allerkleinsten Vorhaben *C++* benutze, weil ich es sehr 
gut kann und einen Plan davon habe wie die Sprache in Code umgesetzt 
werden muß. Ich habe daher praktisch keine Mühe damit effizienten Code 
zu schreiben.

Und dann packe ich natürlich auch die Ansteuerung eines 
Temperatursensors in eine Klasse und freue mich dann später, daß ich 
jetzt den Sensor mit dem gleichen Code auf einem Atmega und einem MSP430 
ansteuern kann. Es käme mir gar nicht in den Sinn, das anders zu machen 
oder erst bei einer bestimmten Projektgröße damit anzufangen. Das 
Paradebeispiel für "kleine Projekte" ist ja gerade der Arduino, bei dem 
man in C++ mit objektorientierten Framework Tüdelkram ansteuert. Da sind 
viele Leute sehr glücklich mit.

Es ist ja keine Eigenschaft eines Problems Funktionszeiger zu 
benötigen, sondern die Eigenschaft einer Lösung. Und wenn du eine 
mächtigere Sprache hast, dann hast du eine größere Auswahl an möglichen 
Lösungen, die aller ihre eigenen Parameter haben (Speicherbedarf, 
Performance, Wartbarkeit usw.). So hast du auf dem Propeller jetzt die 
Wahl zwischen C/C++ (mächtige Sprachen, portabel, schnell, hoher 
Platzverbrauch) und SPIN (große Objektbibliothek, platzsparend, 
schnarchlangsam).

von FRichter (Gast)


Lesenswert?

> So hast du auf dem Propeller jetzt die
> Wahl zwischen C/C++ (mächtige Sprachen, portabel, schnell, hoher
> Platzverbrauch) und SPIN (große Objektbibliothek, platzsparend,
> schnarchlangsam).

Integraler Bestandteil für zeitkritsche Fläschenhälse in Spin ist PASM: 
Schneller geht auf dem Propellerchip nicht, auch nicht in C. Die 
Eigenschaft "schnarchlangsam" erfasst also nicht ganz die Realität. In 
meinen Augen wäre die Eigenschaft "sehr gut an den Chip anepasst" als 
Beschreibung für Spin/PASM wesentlich besser geeignet.

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.