Forum: Mikrocontroller und Digitale Elektronik Was geht mit nem 32-Bitter so?


von Paul H. (powl)


Lesenswert?

Hi,

sicher wurde das schon öfters mal hier und da erwähnt, nur so konkret 
den Überblick hab ich noch nicht.

Bisher habe ich mich nur mit den 8-Bit AVRs beschäftigt, möchte aber 
früher oder später auch Anwendungen umsetzen bei denen mehr Rechenpower 
gefordert ist (mp3s dekodieren, audio-anwendungen, farb-grafik für 
quitschbunte menüs usw. berechnen..).

Nun mal die Frage, wie arbeitet man mit diesen 32-Bit µCs überhaupt? 
Kann ich mir das ähnlich wie bei den 8-Bit µCs vorstellen? Man hat 
verschiedenste Peripherie-Gruppen, SRAM, EEPROM, digitale I/O und kann 
diese dann in Assembler oder z.B. C mit entsprechenden Befehlen einfach 
ansteuern. u.A. genauso in Echtzeit wie bei nem 8-Bitter. Wie verhält 
sich im Allgemeinen die Taktrate zur Ausführgeschwindigkeit? Die kleinen 
AVRs benötigen pro Befehl ja meist nur 1-2 Takte, brauchen die 32-Bitter 
vielfach mehr oder sind die da (je nach Architektur natürlich..) ähnlich 
schlank aufgebaut, so dass die hohen Taktraten auch wirklich ein 
deutliches Leistungsplus bedeuten?

Nun hab ich auch schon gelesen, dass man auf den 32-Bit µC meist ein 
kleines OS laufen lässt, ein Linux z.B.. ist das gang und gäbe? ist es 
ein absolutes muss? oder ist es nur eine option, die einem ein wenig 
arbeit bei der programmierung abnimmt? was nimmt es einem ab? 
speicherverwaltung etwa? entsprechende routinen zu einer dynamischen 
speicherverwaltung erzeugt doch ein compiler auch ohne dass auf dem 
zielsystem ein OS läuft? multitasking bzw -threading? ist der chip nun 
in der lage verschiedene programme gleichzeitig auszuführen und seine 
rechenleistung sinnvoll unter ihnen aufzuteilen? dann ist der µC ja 
garnicht mehr echtzeitfähig? muss dann nicht auch ein spezieller 
compiler her, der für dieses OS spezifischen code erstellt? was sind 
also die vorteile und nachteile eines OS auf dem µC, wenn es nicht 
gerade sowieso notwendig ist.

mit wie viel SRAM, EEPROM, FLASH, whatever.. kommen die üblichen 
32-Bitter denn daher?

Viele Fragen, viel Verwirrung, ich hoffe ihr könnt mein verzerrtes Bild 
da etwas entzerren :)

lg PoWl

von Purzel H. (hacky)


Lesenswert?

Ein erster Blick in ein Datenblatt...

von oldmax (Gast)


Lesenswert?

Hi Paul
Wenn du mit 8 Bittern gearbeitet hast und diese verstanden sind, dann 
verstehe ich deine Frage nicht so wirklich... das mit dem Datenblatt ist 
eine Sache, aber im Kern, du willst mehr Rechenpower und hast auch 
Anwendungen im Kopf. Nun hast du 2 Möglichkeiten:
1. Die einfache Art, nimm deinen PC, kauf eine Entwicklungsumgebung und 
nutze vorgegebene Hardware.
2. die richtig komplizierte, bau alles selbst und dimensioniere deine 
Hardware nach eigenem Geschmack.

Wenn du aber schon vor deinem Projekt die Frage stellst: Was kann ein 32 
Bitter so, dann sehe ich schwarz für Punkt 2. Warum ? Ich denke, die 
Auswahl eines Prozessors,Controllers oder was auch immer für ein 
elektronisch Ding ist zugeschnitten auf den Bedarf. Welches du an 
Programm drauf packst, ist den Dingern doch egal. Sie verarbeiten 
lediglich die elektrisch hinterlegten Signale. Verodern, verunden, 
subtrahieren undmultiplizeiren, schieben oder kippen sie um ( 
negieren..) Damits irgendwas nutzt schubsen sie diese Ladungen auf 
elektrische Speicher oder holen dort diese ab. Das Grundprinzip ist 
überall gleich. Also, Infos zu deinen Anwendungswüschen und die 
Parameter bekomst du in den Datenblättern.... Betrachte es mal so: 
andere lesen Krimis....
Gruß oldmax

von Hubu (Gast)


Lesenswert?

1. Du hast noch nicht verstanden was "Echtzeit" bedeutet

2. Es ist unüblich ein OS wie Linux zu verwenden.

3. Ein RTOS auf einem uC ist toll und für komplexere Programme ein muss.

4. Ein 32Bitter kann alles was ein 8Bitter auch kann.

von Christian B. (casandro)


Lesenswert?

Arbeite Dich mal in Shell-Programmierung unter Linux ein und ich glaube 
Du bekommst einen guten Eindruck dafür wann ein 32 Bitter mit einem 
Betriebssystem sinnvoll ist. Grob gesagt werden damit bestimmte Probleme 
für die Du hunderte von Assemblerzeilen oder tausende von C-Zeilen 
bräuchtest zum 3-Zeiler. Grob gesagt immer dann, wenn Du High-Level oder 
Netzwerksachen brauchst.

Das man wirklich die Rechenleistung braucht ist eher selten, kann aber 
auch vorkommen.

von Rolf Magnus (Gast)


Lesenswert?

Paul Hamacher schrieb:
> Nun mal die Frage, wie arbeitet man mit diesen 32-Bit µCs überhaupt?

Von "diesen 32-Bit µCs" gibt es verdammt viele verschiedene.

> Kann ich mir das ähnlich wie bei den 8-Bit µCs vorstellen? Man hat
> verschiedenste Peripherie-Gruppen, SRAM, EEPROM, digitale I/O und kann
> diese dann in Assembler oder z.B. C mit entsprechenden Befehlen einfach
> ansteuern. u.A. genauso in Echtzeit wie bei nem 8-Bitter.

Assembler wird man dort eher vermeiden, aber im Prinzip gibt es solche 
µCs.

> Wie verhält sich im Allgemeinen die Taktrate zur Ausführgeschwindigkeit?
> Die kleinen AVRs benötigen pro Befehl ja meist nur 1-2 Takte, brauchen
> die 32-Bitter vielfach mehr oder sind die da (je nach Architektur
> natürlich..) ähnlich schlank aufgebaut, so dass die hohen Taktraten auch
> wirklich ein deutliches Leistungsplus bedeuten?

Mit internem Speicher können die ähnlich sein. Bei externem Speicher 
bremst dieser oft aus.

> Nun hab ich auch schon gelesen, dass man auf den 32-Bit µC meist ein
> kleines OS laufen lässt, ein Linux z.B.. ist das gang und gäbe?

Du brauchst halt einen mit externem und wesentlich größeren Speicher - 
sowohl Flash, als auch RAM. Statt 128k und 32k sind's dann halt z.B. 8MB 
und 16MB.

> ist es ein absolutes muss?

Natürlich nicht.

> oder ist es nur eine option, die einem ein wenig arbeit bei der
> programmierung abnimmt? was nimmt es einem ab?

Haupsächlich Treiber. Wenn ich ein Linux habe, kann ich z.B. sämtliche 
von Linux unterstützten USB-Geräte out of the box nutzen, oder z.B. 
Dateisysteme, wenn man eine SD-Karte anschließen will. Man hat auch 
schon Netzwerk-Fähigkeiten und jede Menge Bibliotheken und 
Standard-Tools, die man recht einfach nutzen kann, ohne das Rad neu 
erfinden zu müssen. Kehrseite ist der recht große Overhead für das 
Betriebssystem.

> speicherverwaltung etwa? entsprechende routinen zu einer dynamischen
> speicherverwaltung erzeugt doch ein compiler auch ohne dass auf dem
> zielsystem ein OS läuft?

Das macht in der Regel die libc.

> multitasking bzw -threading? ist der chip nun in der lage verschiedene
> programme gleichzeitig auszuführen und seine rechenleistung sinnvoll
> unter ihnen aufzuteilen?

Gleichzeitig können das nur Multicore-Prozessoren. Aber quasiparallel, 
also im schnellen Wechsel kann das im Prinzip jeder Prozessor (auch für 
AVR gibt es Scheduler, um Multitasking zu machen).
Wenn der Prozessor eine MMU hat, bekommst du bei Linux auch automatisch 
noch den Speicherschutz, so daß sich verschiedene Prozesse nicht 
gegenseitig in den Speicher spucken können.

> dann ist der µC ja garnicht mehr echtzeitfähig?

Warum? Ganz im Gegenteil verbessert es je nach Situation die 
Echtzeitfähigkeit, weil Tasks durch wichtigere unterbrochen werden 
können, statt daß man warten muß, bis die aktuell abgearbeitete Aufgabe 
fertig geworden ist.

> muss dann nicht auch ein spezieller compiler her, der für dieses OS
> spezifischen code erstellt?

Ja, genau wie ohne OS ein spezieller Compiler her muß, der für den 
OS-losen Prozessor spezifischen Code erstellt.

> was sind also die vorteile und nachteile eines OS auf dem µC, wenn es
> nicht gerade sowieso notwendig ist.

Wann wäre es denn für dich "sowieso notwendig"?

> mit wie viel SRAM, EEPROM, FLASH, whatever.. kommen die üblichen
> 32-Bitter denn daher?

Das ist sehr unterschiedlich. Wenige Kilobytes bis mehrere hundert 
Megabytes (wenn man externen Speicher dazunimmt).

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.