Welche Familie von ARM-Prozessoren sollte ich lernen: ARM7TDMI oder Cortex M3?

7

Ich freue mich darauf, die ARM7-Familie von Mikrocontrollern kennenzulernen. Bei der Suche im Internet stellte ich fest, dass es zwei Versionen gibt: etwas älteres ARM7TDMI (LPC21xx usw.) und neueres Cortex M3 (LPC 17xx usw.). Ich bin ein bisschen verwirrt zwischen diesen beiden. Ich möchte eine auswählen, die mir helfen kann, in Zukunft in eine Firma aufgenommen zu werden. Bitte helfen Sie mir bei der Auswahl und erklären Sie mir auch den Hauptunterschied zwischen den beiden Versionen.

0xakhil
quelle

Antworten:

13

Sie haben die Frage teilweise selbst beantwortet: Cortex ist ein neuer, fortgeschrittener Kern. Es ist leistungsstärker als das ARM7TDMI und verbraucht gleichzeitig weniger Strom: etwa doppelt so viel DMIPS / mW.
Die folgende Tabelle gibt einen schönen Überblick über die Unterschiede (aus diesem Whitepaper ):

Geben Sie hier die Bildbeschreibung ein

(Abgesehen von Leistung und Stromverbrauch) Die bis zu 240 (!) Interrupts und die deutlich verbesserte Interrupt-Latenz machen den Cortex zu einer weitaus besseren Wahl für Echtzeitsysteme.

stevenvh
quelle
4
In Bezug auf das neuere Cortex-M3-Design habe ich einige Hersteller gesehen, die ihre ARM7-Teile in die Liste "Nicht für neues Design empfohlen" aufgenommen haben.
Semaj
Ein weiteres Beispiel ist, dass die Meltex Cor3-M3-basierte SAM3S-Serie von Atmel teilweise die ARM7TDMI-basierte SAM7S-Serie ersetzen soll.
Mike DeSimone
In Bezug auf Interrupts: Leider verwenden viele Anbieter nicht mehr als 31 Interrupts. (Ich habe einen Chip gesehen, der einen Cortex-M3-Interrupt für alle PIO-Interrupts verwendet und dann externe Register verwendet hat, um die einzelnen PIO-Interrupts abzubilden.) Ein (mieser, IMHO) Grund dafür ist, dass jeder zusätzliche Interrupt die Ausnahmetabelle erhöht Größe um vier Bytes.
Mike DeSimone
Ist es nur ich oder ist es überraschend, dass sie von einer von Neumann zu einer Harvard-Architektur gewechselt sind? Das ist ein ziemlich grundlegender Unterschied.
Nick Johnson
@ Nick - Das ist es sicherlich, aber ich kann unmöglich sagen, wie viel es zur Leistungsverbesserung beiträgt oder wie viel auf andere Änderungen zurückzuführen ist.
Stevenvh
10

Warum nicht beides lernen? Sie können ein Cortex-m3-Board für ungefähr 12 Dollar und so etwas wie ein Sam7s für ungefähr 35 Dollar bekommen. Wenn Sie gute Kenntnisse haben möchten, beginnen Sie mit ARM7TDMI, lernen Sie ARM und Daumen, und nehmen Sie dann Daumen zum Cortex-m3 und dann Daumen2-Ergänzungen. ARM stellt keine Chips her, die Prozessorkerne verkaufen, der Verkäufer wickelt seine spezielle Sauce darum. Es ist gut, sich in den verschiedenen Anbietern mit denselben Kernen zu versuchen. Die E / A- und On-Chip-Peripheriegeräte machen oder brechen Sie, und es ist wertvoll, den richtigen Anbieter auswählen und / oder einen vermeiden zu können, der nicht für die Aufgabe geeignet ist.

Von Zeit zu Zeit bin ich an Einstellungsentscheidungen beteiligt und stimme Markrages zu. Es geht nicht nur darum, einen Kern wirklich gut zu kennen, es gibt noch viel mehr Dinge zu wissen, nicht so spezifisch zu werden. Fragen Sie die 6502-Gurus (die die Branche noch nicht weiterentwickelt haben), wie ihre Karriere verläuft. Ein sehr kleines paar sehr gut der Rest, nicht so sehr. Ich mag es, einen Kandidaten zu sehen, der in seiner Freizeit und nicht nur für eine College-Klasse einen Mikrocontroller oder ein kleines Bewertungsboard gekauft und tatsächlich etwas damit gemacht hat. Auch wenn es darum geht, die LEDs auf vier verschiedene Arten mithilfe interner Perhiperals zu blinken. Ich bevorzuge jemanden, der mehr als einen Prozessor und einen Anbieter ausprobiert hat, aber wir können nicht alles haben, was wir wollen. Wie schnell und gut Sie ein Datenblatt, einen Befehlssatz oder eine andere Toolchain abrufen können, kann wertvoller sein, als wie viel Experte Sie in einem bestimmten Kern von einem bestimmten Anbieter sind. Einige Anbieter haben gute Datenblätter und Schaltpläne, andere nicht. Sie müssen wissen, dass alle Referenzhandbücher fehlerhaft sind und sich durch die Schwachstellen im Referenzmaterial hacken und googeln können.

ARM ist der Ort, an dem man sich gerade befindet. Es wäre dumm, die Kerne und die großen Chiphersteller, die ihre Kerne verwenden, nicht zu kennen. Aber halten Sie auch Ihre Augen offen für ältere und neuere und andere. Der 8051 wird immer noch an einer Reihe von Orten verwendet, er wird einfach nicht sterben. Microchip verkauft immer noch Bilder. Der avr war sowieso beliebt (atmel weiß wirklich, wie man zufriedene Kunden schafft) und der Arduino hat diese Popularität auf ein ganz neues Niveau gebracht. Nichts steht ARM im Allgemeinen nahe, aber ARM ist nicht der einzige Akteur in den verschiedenen Märkten, an denen es beteiligt ist.

Sparkfun hat eine Reihe von Boards für unter 50 Dollar, ich empfehle ein paar. Die Olimex-Header-Boards sind gut, z. B. sam7s-h64 oder 256. st hat sein stm32-Discovery-Board (verwechseln Sie es nicht mit dem STM8-Discovery, einer völlig anderen Prozessorlinie) für ungefähr 10 Dollar. Bei weniger als 5 US-Dollar können Sie es nicht vermeiden, ein oder zwei msp430-Launchpads zu erhalten (kein Arm, sondern ein anderer, guter Mikrocontroller-Kern). Sie können Ihre Füße mit dem Coridium Armmite oder dem Ahorn-Arduino-Fußabdruck bekommen, aber ARM-basiert nicht avr. Einer mehr als der andere möchte auch die Entwickler-Sandbox bereitstellen. das mbed2 ist wirklich einfach zu bedienen, lpc ist in der arm-mikrocontroller-welt bekannt, aber sie sind wahrscheinlich meine am wenigsten bevorzugte auswahl, probieren sie ein paar verschiedene aus, mindestens eine der auswahlen von atmel. Stellaris, der jetzt im Besitz von ti ist, war der erste, der den cortex-m3 herausbrachte, abgesehen von der 800er-Serie, die ich innerhalb von ein oder zwei Stunden sofort gemauert habe, weil ich nicht überall auf die 17 Warnschilder geachtet habe. Ich habe alle ihre Boards gemocht das habe ich versucht. Zumindest, um mit den Peripheriegeräten zu sprechen und etwas über oled zu lernen. Wenn Sie den Mikrocontroller an etwas anschließen möchten, das sich nicht auf der Platine befindet, sind die Stellaris-Platinen wahrscheinlich die letzte Wahl. Sie haben fast jeden E / A-Pin zerkaut und Sie müssen Spuren abschneiden, um sie zurückzubekommen. Sie müssen im Grunde genommen für Dinge auf dem Board bezahlen, die Sie nicht verwenden möchten. Sie müssen nur ein Coridium Armmite Pro oder ein Olimex-Header-Board oder ähnliches kaufen. Vermeiden Sie den lxpresso, er richtet sich speziell an einen Werkzeughersteller. Gehen Sie nicht einmal in die Nähe, nein, gehen Sie nicht mit dem mbed2, wenn Sie wirklich einen lpc cortex-m3 erhalten möchten. und Sie müssen sich nicht einmal mit der Sandbox beschäftigen, die sie fördern, Ihre .bin-Datei mit einem beliebigen Tool kompilieren und sie einfach auf das Ding kopieren, das wie ein USB- / USB-Stick aussieht, und die Reset-Taste drücken. Das ist das Schöne an mbed2. Sie können völlig frei das Host-Betriebssystem und die Entwicklungstools verwenden, die Sie mögen. Das Negative ist die Netzhaut, die blaue LEDs brennt. Ich musste meine gegen grüne LEDs austauschen, um die sofortigen Migränekopfschmerzen zu vermeiden.

Lesen Sie Ihre Frage erneut. Aus der aktuellen Familie der ARM-Kerne. Das ARM7TDMI ist das traditionellere, das den 32-Bit-Basisbefehlssatz unterstützt. ARM nahm diesen Befehlssatz und erstellte einen reduzierten ARM-Befehlssatz, der als Daumenbefehlssatz bekannt ist. Die Daumenanweisungen werden mit ARM-Anweisungen eins zu eins zugeordnet (das Gegenteil ist nicht der Fall). Damit der Kern nur ARM-Anweisungen verarbeiten muss, werden die Daumenanweisungen auf dem Weg in die Pipe in ARM-Anweisungen übersetzt. Kein schlechtes Design / Idee. Schauen Sie sich den Gameboy-Fortschritt an, 16-Bit-Busse überall, Kosteneinsparungen usw. Jetzt ist die GBA die Ausnahme von der Regel, dass der Daumen langsamer als der Arm läuft, nicht wegen der Übersetzung in Armanweisungen, sondern weil es sich um eine Teilmenge handelt das beschränkte Sie meistens auf die Hälfte der Register und auf zwei Operandenbefehle anstelle von drei, Daher waren mehr Anweisungen erforderlich, um das Gleiche mit dem Daumen wie mit dem Arm zu tun. (Thumb-Binärdateien sind jedoch oft etwas kleiner). Der nächste Schritt war thumb2, im Grunde ist dies eine variable Befehlslänge, einige Befehle sind 32 Bit, einige 16 Bit, sie haben ein Gleichgewicht zwischen einigen der Schwächen des Daumenbefehlssatzes und der Stärke des Arms hergestellt. Die Binärdateien sind nicht so klein, aber nicht so groß wie nur der Arm. Daher ist der Leistungsgewinn für Mikrocontroller attraktiv. Das andere, was sie getan haben, ist, diese Cortex-m-Kerne herzustellen, die nur thumb2 sind. Sie haben keinen Armkern im Inneren, diese sind durch und durch thumb2. schlank und gemein. Jetzt führen diese auch Daumen aus, sodass Sie nur Daumen-Tools verwenden können, die Sie vom ARMv4T (arm7tdmi) gelernt haben. Wenn Sie nicht auf Assemblersprachenebene arbeiten, Das meiste davon ist für Sie überhaupt nicht wichtig. Der Teil, der wichtig sein kann, sind die für die Montage erforderlichen Bits, wie z. B. die Interrupt- / Ausnahmetabelle, die sich bei der cortex-m-Serie vollständig von den herkömmlichen ARM-Kernen unterscheidet. Wenn Sie eine Sandbox verwenden, werden Sie das nicht einmal sehen. Wenn Sie keinen Assembler schreiben, müssen Sie lernen, wie Sie die Cross-Compiler und möglicherweise Linker-Skripte verwenden. Mit Codesourcery wird eine gute GCC-Toolchain für den Arm erstellt, die hauptsächlich für Sie erledigt wird. Vielleicht möchten Sie so weit gehen, um zu verstehen, dass Dinge wie ARM7 und ARMv7 zwei völlig verschiedene Dinge sind, der ARM7 ist ein ARMv4, der ARMv7 ist auf der neueren Seite. Wissen Sie auch, dass ARMv5, ARMv6, ARMv7 alle neue Anweisungen hinzugefügt haben, und lernen Sie, wie Sie dem Compiler mitteilen, über welchen Kern Sie verfügen, damit er mithilfe der neueren Anweisungen bessere Entscheidungen treffen und eine bessere Leistung erzielen kann. Ebenso nicht versehentlich die falsche Kernauswahl verwenden und Anweisungen generieren, die nicht auf Ihrem Kern ausgeführt werden. Der Cortex-m3 und jetzt der Cortex-m0 richten sich an die traditionellen Mikrocontroller, die 8-Bit-Leute. Die Cortex-A-Serie ist das High-End-Gerät für Telefone mit großen Displays und tanzendem Quatsch, Desktops, Servern usw. Sie haben Mikrocontroller erwähnt, damit Sie wahrscheinlich in der ARM7- oder Cortex-m-Arena bleiben. Ich habe einen Daumen-Befehlssatz-Simulator (nicht thumb2) namens thumbulator bei github.com, der wie ein Cortex-m startet. Abgesehen von Peripheriegeräten, die einfach hinzuzufügen sind, können Sie Code verwenden, den Sie dort ausführen lernen, und zu einem wechseln cortex-m3 oder m0. qemu ist ein guter Simulator, aber es ist viel schwieriger, die Ausführung zu beobachten und Peripheriegeräte hinzuzufügen, unterstützt aber gleichzeitig die Befehlssätze arm, thumb und thumb2.

Besuchen Sie die ARM-Website und suchen Sie das ARM ARM (ARM Architectural Reference Manual). Dies ist der Schmelztiegel aller ihrer Kerne. An diesem Punkt wird es bei so vielen Variationen etwas aufgebläht, dass Sie nach TRMs suchen müssen (Technical Reference) Handbücher) für die spezifischen Kerne. Insbesondere der Cortex-m3, Sie möchten wirklich den TRM für den ARMv7M haben. Ich denke, der Cortex-m3 heißt. Es hilft dabei, thumb2 vom ARM ARM zu trennen. Ich glaube, dass der Boot-Prozess des cortex-m3 und seine Abweichungen vom 32-Bit-Arm auch an die TRM glauben, vielleicht NUR an die TRM. Eine andere Sache zu wissen, ein bestimmter Anbieter wird einen bestimmten Kern und eine bestimmte Version dieses Kerns kaufen. ARM kann diesen Kern verbessern und beispielsweise eine Rev3 verkaufen, aber der Anbieter mit der Rev2 hat die Rev2. Obwohl ARM ' Auf der Website wird die TRM für rev2 als durch die rev3-TRM ersetzt angezeigt. Die rev2-TRM ist die gewünschte, da sie mit dem von Ihnen verwendeten Kern übereinstimmt. Manchmal können Sie sich durch die Verwendung der falschen TRM verwirren oder völlig verlieren. ARM zieht es vor, dass die Anbieter die Kerne nicht selbst dokumentieren, um die Dokumentation zu verwalten. Daher müssen Sie diese Lücke schließen, um festzustellen, was der Chiphersteller Ihnen mitteilt und welche Dokumente auf der ARM-Site abgerufen werden sollen. Diese Art von Dingen erschwert die Linux-Unterstützung für ARM für die High-End-ARMs. Und kürzlich habe ich einige große Fehler im Linux-Code festgestellt, die die falschen Errata, die falsche Version mit dem falschen Hersteller und den falschen Kern verbinden. Ebenso werden Dinge falsch initialisiert, weil das falsche TRM zum Schreiben des Codes verwendet wurde. Es ist der unglückliche Nebeneffekt, dass Kerne von vielen Chipherstellern auf viele verschiedene Arten verwendet werden. während dieser Kernanbieter die Anzahl und Qualität seiner Produkte schnell erhöht. Sie können die meiste Zeit das tun, was ich mache, für den ARMv4-Arm-Modus oder den ARMv4-Daumen-Modus kompilieren, und dieser Code wird auf so ziemlich allen folgenden Kernen ausgeführt. Leider haben die Werkzeuge, die gut auf gcc basieren, immer noch Schmerzen und / oder Beschwerden bei der Verwendung des Daumens. Benötigt etwas Übung.

Entschuldigung für die lange Antwort, hoffe es ist nützlich.

Oldtimer
quelle
Okay, wow mouser hat ein paar Mikrocontroller-Evaluierungskarten. Es gibt den MOD-MMA7260, Sie müssen den Beschleunigungsmesser nicht verwenden, es gibt eine stm32l-Entdeckung, der Mauspreis ist höher als bei anderen, aber der Versand ist viel niedriger
old_timer
Große ausführliche Antwort dort :)
John Burton
Hey, kannst du deinen Rat gegen den LPCxpresso näher erläutern? Ich verstehe nicht, was Sie meinen "es richtet sich speziell an einen Werkzeughersteller." Für mich scheint es eine kostengünstige Möglichkeit zu sein, mit der ARM-Entwicklung zu beginnen.
Frederick
Zu der Zeit war ich etwas verärgert, dass das Produkt nur von einem Anbieter unterstützt wurde. Es gibt alternative Bootloader usw. Jetzt, ein paar Jahre später, für ungefähr 10 US-Dollar oder weniger, können Sie einige Boards, Nucleos von ST, Launchpads usw. bekommen
old_timer
6

Kein Personalchef wird sich darum kümmern, mit welcher genauen Teilenummer Sie zuvor gearbeitet haben. Wenn Sie einen potenziellen Arbeitgeber beeindrucken möchten, stellen Sie sicher, dass das von Ihnen ausgewählte Projekt interessant ist und Sie klar und sicher darüber sprechen können. Sie möchten in der Lage sein, Beispiele Ihrer Arbeit mit Arbeitgebern zu teilen. Wählen Sie daher ein Projekt aus, das dies in der Lizenz zulässt, oder fragen Sie vor dem Start nach der Erlaubnis.

Die Unterschiede zwischen den Prozessorfamilien sind gering, da sie sich auf Ihr Ziel beziehen. Aber ich würde vorschlagen, den neueren Teil zu lernen, da dieses Wissen sowieso eine so kurze Haltbarkeit hat.

Markrages
quelle
4
Wenn Sie sich als ARM-Experte präsentieren möchten, sind Sie auf einige Fragen besser vorbereitet. Für ein Projekt haben wir mit einem Atmel ARM begonnen, aber festgestellt, dass es die 5000 Interrupts pro Sekunde aufgrund einer zu hohen Interrupt-Latenz nicht verarbeiten kann. Auf einem NXP hat es gut funktioniert. Sie können sicherlich einen Eindruck hinterlassen, wenn Sie solche Details kennen.
Stevenvh
1

Wie Steven gezeigt hat, ist der Cortex M3 ein moderner Prozessor. Es ist ein viel ausgefeilteres Gerät. Wenn Sie die LPC21xx-Serie mit der LPC17xx vergleichen, erhalten Sie viele zusätzliche Funktionen, einschließlich externer Speicherbusse, DMA, mehr MHz, Ethernet, USB usw. Es ist ein viel vollständigeres Gerät.

Ich habe ein Projekt mit dem LPC2129 für mein Praktikum gemacht. Wenn Sie mit ATMEGA, PIC18-Serie, 16 KB RAM und 128 KB Flash gearbeitet haben, sieht das viel aus. Tatsächlich können Sie leistungsstärkere Software zwar schneller schreiben, aber der Arbeitsspeicher geht schnell zur Neige, wenn Sie EEPROM-Caching (um die Geschwindigkeit der Datenverarbeitung zu verbessern), UART-Puffer für die Paketverarbeitung und GUI-Code durchführen müssen (funktionierte mit einem grafischen LCD Bildschirm) usw. Ich bemerkte auch, dass mir bald einige Geräte fehlten. Ich wünschte, es gäbe eine externe RAM-Schnittstelle oder ein DMA-Peripheriegerät, um die Datenübertragung zu erleichtern. 60 MHz ist schnell, aber es war eine Anwendung, die mit "menschlicher Geschwindigkeit" ausgeführt wurde und nicht zur Regulierung von Prozessen verwendet wurde.

Alles in allem entscheiden Sie sich für Cortex M3, während Sie noch eine freie Wahl treffen können (LPC1759 oder LPC1769 sehen aus wie ein sehr guter Chip, der sich noch in einem vernünftigen DIY-Paket befindet). Schneller, mehr Speicher, mehr Peripheriegeräte, mehr Interrupts, weniger Leistung / MHz. Das Gerät scheint ähnlich teuer. Das Erlernen des ARM7TDMI ist jedoch nicht schlecht und wird viel über diese Plattformen lernen.

Hans
quelle
Die einzigen Vorteile, die ich für das ARM7 sehen kann (über die Kompatibilität mit dem vorhandenen ARM7-Code hinaus), sind, dass bedingte Befehle 32 Bit anstelle von 48 Bit sind. Die feste 4-Byte-Befehlsgröße bedeutet, dass Ziele mit berechneten Verzweigungen natürlich vollständig aufgefüllt werden, ohne NOPs aufzufüllen und die Befehlszeiten beim Ausführen aus dem RAM sind vorhersehbar und positionsunabhängig.
Supercat
1

Die Antwort hängt wirklich von der Branche ab, in die Sie einsteigen möchten. Schauen Sie, welche Mikros sie derzeit verwenden, und entscheiden Sie sich für sie. Einige Beispiele sind..

High-End-Unterhaltungselektronik wie Mobiltelefone und andere Geräte - Cortex-Kerne sind gut

Low-End-Unterhaltungselektronik wie einfaches Spielzeug und Geräte mit geringem Wert - 8-Bit- und 16-Bit-Kerne wie die Atmel AVRs oder Microchip PICs sind eine gute Wahl.

Automobile wie Karosserie-Controller und Sicherheit - Ältere und bewährte Kerne wie PowerPC sind eine gute Wahl.

tehnyit
quelle
Oxakhil fragte nach ARM7TDMI vs. Cortex, nicht nach AVR oder PIC.
Stevenvh
2
@stevenvh, das ist wahr. Er fragte auch, welche er studieren sollte, um in Zukunft einen Platz zu bekommen. Er hat nicht erwähnt, auf welche Branche er abzielen möchte. Es ist nicht gut, ARM Micro zu studieren, wenn er zum Beispiel in der Weißwarenindustrie arbeiten möchte.
Tehnyit
1
Unterschätzen Sie nicht die Reichweite von ARM. Hersteller wie NXP greifen den 8-Bit-Markt mit dem kostengünstigen Cortex M0 aggressiv an. Ich habe Zitate für den LPC1111 von nur 65 Dollar gesehen. Und das ist für ein HVQFN33-Paket. Ich erwarte in naher Zukunft einen niedrigeren Pincount M0 und ein niedrigerer Pincount bedeutet normalerweise einen niedrigeren Preis.
Stevenvh
1
Übrigens waren diese 65 Cent für 10.000 / Jahr. Bei 100.000 sollten Sie in der Lage sein, ein paar Cent davon zu kneifen. Zugegeben, Sie können einen PIC für weniger Geld kaufen, aber ich frage mich, ob Sie damit eine Waschmaschine steuern können (z. B. 1 E / A.).
Stevenvh
1

Ich denke, das Hauptproblem ist, dass Sie ARM 7 mit ARMv7 verwechseln. Die Cortex-Prozessoren verwenden die ARMv7-Architektur. ARM7TDMI verwendet die ARMv4-Architektur. Ich habe eine Weile gebraucht, um herauszufinden, dass die 7 in ARM7 nicht mit der 7 in ARM Version 7 identisch war.

Seth Archer Brown
quelle
0

Wenn Sie Ihren ARM in Assembler programmieren möchten (ich nehme an, Sie werden es nicht tun, aber nehmen wir an), ist der ARM-Befehlssatz (nicht der Thumb-Satz der Cortexes!) Einer der am besten zu erlernenden und zu verwendenden. Davon abgesehen scheinen die Cortexes die Welle der Zukunft für Mikrocontroller zu sein. Für Mikroprozessoren (die Dinge mit mehr als 200 Pins auf einer Leiterplatte mit einigen Speicherchips und wahrscheinlich Linux) bin ich mir nicht so sicher, dass Snapdragon und dergleichen ARM-Klone sind und auf diesem Markt (zusammen mit verschiedenen MIPS) ziemlich dominant zu sein scheinen Versionen).

Wouter van Ooijen
quelle