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
>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.
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.
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
Und unter "ARMv6" steht der "ARMCode" auch nicht mit drinnen. Kann mich da jemand bitte aufklären? lg
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.