Forum: Mikrocontroller und Digitale Elektronik Prozessorfamilien


von Mark Heinrich (Gast)


Lesenswert?

Guten Abend!

Ich bin ein Neuling und brauch ein wenig Klarheit.
1. Es gibt ja unterschiedliche Mikrocontrollerfamilien:
- 8051
- C16x
- ARM
Es gibt z. B. hunderte Hersteller, deren Mikrocontroller der Familie 
8051 angehört. Sind die Befehlssätze bei allen gleich oder kann es 
Abweichungen geben? In welchen Bereichen können sie sich noch 
unterscheiden?

2. Was ist denn der Zusammenhang zwischen ARM und CORTEX-M?
ARM und CORTEX-M sind doch jeweils zwei unterschiedliche 
Mikrocontrollerfamilien?

lg

von holger (Gast)


Lesenswert?

>2. Was ist denn der Zusammenhang zwischen ARM und CORTEX-M?
>ARM und CORTEX-M sind doch jeweils zwei unterschiedliche
>Mikrocontrollerfamilien?

Nö, CORTEX-M ist definitiv ein ARM.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Für Cortex-M* hat man die Befehlsatzschalterei zwischen ARMCode und 
Thumb-Code eingestampft und den Befehlssatz auf nur Thumb2 festgelegt.

ARMCode ist ein 32 Bit breiter Befehlssatz, der in einem Befehl mehr 
Verarbeitungsanweisungen zuläßt als Thumb-Code.
(z.B. zusätzliche Shift-Anweisungen)

Ursprünglich wurde der Thumb-Code der auf 16 Bit Breite festgelegt ist 
eingeführt um den Speicherverbrauch zu verkleinern.
Dafür wird man fast ausschliesslich auf die unteren 8 Register begrenzt 
und muß auf einige Befehle dann durch Rückschalten auf ARMCode 
zurückgreifen.

Für schnelle Ausführung wird der ARMCode für gewöhnlich benutzt. Für 
zeitunkritische Arbeit wird gern der ThumbCode eingesetzt.

Soweit ab ARMv4 bis ARMv6-Architektur.

Der Cortex-M ist eine ARMv7-Architektur und besitzt neben 16 bit breiten 
Befehlen auch 32 Bit breite Befehle und ermöglicht das Arbeiten mit 
allen 16 Registern. Es handelt sich um den Thumb2-Befehlssatz, der von 
den schwächen des alten Thumb-Befehssatzes bereinigt wurde.

Der Prozessor arbeitet ab Reset mit Thumb2 (bis ARMv6 ARMCode) und läßt 
auch kein Umschalten in den (nicht mehr vorhandenen) ARMCode zu.

von Mark Heinrich (Gast)


Lesenswert?

Hi,

(Erstmal entschuldigt mir die neuen Beiträge, war unbeabsichtigt, bin 
neu hier im Forum.)

Heißt das, dass "ARMCode" und "ThumbCode" nur von ARMv4 bis
ARMv6-gelten. Und ab einschließlich ARMv7 gilt dann das
"Thumb2"-Befehlssatz?

lg

von Mark Heinrich (Gast)


Lesenswert?

Hi,

Auf wikipedia steht aber, dass Bei ARMv6 der "Thumb-2" mit dabei ist.

lg

von Mark Heinrich (Gast)


Lesenswert?

Und unter "ARMv6" steht der "ARMCode" auch nicht mit drinnen. Kann mich 
da jemand bitte aufklären?

lg

von Thomas (Gast)


Lesenswert?


von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Der Cortex-M selbst besitzt keine Implementierung des 
ARMCode-Befehlssatzes.
M0 und M1 sind Vertreter der ARMv6-Archtektur und M2-M4 ARMv7.
Auch in der ARMv7-Archtektur gibt es Prozessoren die ARMCode 
unterstützen z.B. Cortex-A* .
Im Befehlssatz der ARMv6-Cortex-M sind nicht alle Thumb2-Befehle und 
ausschliesslich 16 Bit lange Befehle implementiert.
Sorry das ich den M0 und M1 unterschlagen hab.
Vielleicht hätte ich eher dann von ARMv7-M schreiben sollen.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Erwähnt sollte dann auch noch
http://en.wikipedia.org/wiki/ARM_Cortex-M
werden.
Da sieht man recht deutlich das der Cortex-M3 mit einem standardisierten 
Interruptmanagment ausgestattet wurde.
Vorher hat da jeder Hersteller sein eigenes Süppchen gebraut.
Mein Persönlicher Favorit ist allerdings bei ARMv7-M die implemetierte 
Hardware-Division.

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.