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

Ich freue mich darauf, die ARM7-Familie von Mikrocontrollern kennenzulernen. Als ich im Internet suchte, fand ich zwei Versionen: etwas ältere ARM7TDMI (LPC21xx usw.) und neuere Cortex M3 (LPC 17xx usw.). Ich bin etwas verwirrt zwischen diesen beiden. Ich möchte einen auswählen, der mir helfen kann, in Zukunft in einer Firma platziert zu werden. Bitte helfen Sie mir bei der Auswahl und sagen Sie mir bitte auch den Hauptunterschied zwischen den beiden Versionen.

Antworten (7)

Sie haben die Frage teilweise selbst beantwortet: Cortex ist ein neuerer, fortschrittlicherer 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) machen die bis zu 240(!) Interrupts und die stark verbesserte Interrupt-Latenz den Cortex zu einer weitaus besseren Wahl für Echtzeitsysteme.

In Bezug auf das neuere Cortex-M3-Design habe ich gesehen, dass einige Hersteller ihre ARM7-Teile auf die Liste „Nicht empfohlen für neues Design“ gesetzt haben.
Ein weiteres Beispiel ist, dass die Cortex-M3-basierte SAM3S-Serie von Atmel teilweise die ARM7TDMI-basierte SAM7S-Serie ersetzen soll.
Apropos Interrupts: Leider verwenden viele Hersteller nicht mehr als 31 Interrupts. (Ich habe einen Chip gesehen, der einen Cortex-M3-Interrupt für alle PIO-Interrupts verwendete und dann externe Register verwendete, um die einzelnen PIO-Interrupts abzubilden.) Ein (meiner Meinung nach mieser) Grund dafür ist, dass jeder zusätzliche Interrupt die Ausnahmetabelle erhöht Größe um vier Bytes.
Liegt es an mir oder ist es überraschend, dass sie von einer von Neumann- zu einer Harvard-Architektur gewechselt sind? Das ist ein ziemlich grundlegender Unterschied.
@Nick - Das ist es sicherlich, aber ich kann unmöglich sagen, wie viel es zur verbesserten Leistung beiträgt oder wie viel auf andere Änderungen zurückzuführen ist.

Warum nicht beides lernen? Sie können ein Cortex-m3-Board für etwa 12 Dollar bekommen und so etwas wie ein Sam7s für etwa 35 Dollar. Was ARM angeht, wenn Sie gute Kenntnisse haben möchten, beginnen Sie mit dem ARM7TDMI, lernen Sie ARM und Daumen, nehmen Sie dann den Daumen zu den Cortex-m3- und dann zu den Daumen2-Ergänzungen. ARM stellt keine Chips her, sondern verkauft Prozessorkerne, der Anbieter wickelt seine spezielle Sauce darum. Es ist gut, sich an den verschiedenen Anbietern mit den gleichen Kernen zu versuchen. Die E/A und die On-Chip-Peripheriegeräte werden Sie entscheiden, und es ist wertvoll, den richtigen Anbieter auswählen und/oder einen vermeiden zu können, der für die Aufgabe nicht gut geeignet ist.

Von Zeit zu Zeit bin ich in Einstellungsentscheidungen involviert und stimme Markrages zu. Es geht nicht nur darum, einen Kern wirklich gut zu kennen, es gibt noch viel mehr zu wissen, werden Sie nicht so spezifisch. Fragen Sie die 6502-Gurus (die in der Branche nicht vorangekommen sind), wie ihre Karrieren verlaufen. 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 Evaluierungsboard gekauft und tatsächlich etwas damit gemacht hat. Auch wenn es darum geht, die LEDs mit internen Peripheriegeräten auf vier verschiedene Arten zu blinken. Ich bevorzuge jemanden, der mehr als einen Prozessor und 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 Ihr Experte für einen bestimmten Kern eines bestimmten Anbieters. Einige Anbieter haben gute Datenblätter und Schaltpläne, andere nicht. Sie müssen wissen, dass alle Referenzhandbücher fehlerhaft sind, und in der Lage sein, sich durch die Schwachstellen im Referenzmaterial zu hacken und zu googeln.

ARM ist im Moment der richtige Ort, es wäre dumm, ihre Kerne und die großen Chiphersteller, die ihre Kerne verwenden, nicht zu kennen. Aber halten Sie auch die Augen offen für ältere und neuere und andere. Der 8051 wird immer noch an einigen Stellen verwendet, er stirbt einfach nicht. Microchip verkauft immer noch Bilder. Der avr war sowieso beliebt (atmel weiß wirklich, wie man glückliche Kunden schafft) und das Arduino hat diese Popularität auf ein ganz neues Niveau gehoben. Nichts kommt ARM im Allgemeinen nahe, aber ARM ist nicht der einzige Akteur auf den verschiedenen Märkten, an denen es teilnimmt.

Sparkfun hat eine Reihe von Boards für unter 50 Dollar, ich empfehle, ein paar zu kaufen. Die Olimex-Headerboards sind gut, zum Beispiel sam7s-h64 oder 256. st hat sein stm32 Discovery Board (NICHT VERWECHSELN MIT DEM STM8 Discovery, eine völlig andere Prozessorlinie) für etwa 10 Dollar. Für unter 5 US-Dollar kommt man nicht umhin, ein oder zwei msp430-Launchpads zu bekommen (kein Arm, sondern ein weiterer, 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 will auch die Entwickler-Sandbox zur Verfügung stellen. Das mbed2 ist wirklich einfach zu bedienen, lpc ist in der Welt der Armmikrocontroller bekannt, aber sie sind wahrscheinlich meine am wenigsten bevorzugten, probieren Sie ein paar verschiedene aus, zumindest eine der Optionen von Atmel. Stellaris, jetzt im Besitz von ti, 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 ich probiert habe. 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 nicht auf der Platine ist, sind die Stellaris-Platinen wahrscheinlich die letzte Wahl. Sie haben fast jeden I/O-Pin zerkaut, und Sie müssen Spuren schneiden, um sie zurückzubekommen, im Grunde bezahlen Sie für Dinge auf dem Board, die Sie nicht verwenden möchten, besorgen Sie sich einfach ein Coridium Armmite Pro oder ein Olimex-Headerboard oder so etwas. Vermeiden Sie lxpresso, es ist speziell auf einen Tool-Anbieter ausgerichtet, gehen Sie nicht einmal in die Nähe, nein, gehen Sie nicht ... gehen Sie mit dem mbed2, wenn Sie wirklich einen lpc cortex-m3 bekommen wollen, und Sie müssen sich nicht einmal mit der von ihnen empfohlenen Sandbox herumschlagen, kompilieren Sie Ihre .bin-Datei mit einem beliebigen Tool und kopieren Sie sie einfach auf das Ding, das wie ein USB-Stick aussieht, und drücken Sie die Reset-Taste. Das ist das Schöne an mbed2, dass Sie völlig frei sind, beliebige Host-Betriebssysteme und Entwicklungstools zu verwenden. Das Negative ist die Retina, die blaue LEDs brennt. Ich musste meine gegen grüne LEDs austauschen, um die sofortigen Migränekopfschmerzen zu vermeiden.

Lies nochmal deine Frage. Aus der aktuellen Familie der ARM-Kerne. Das ARM7TDMI ist das traditionellere, das den grundlegenden 32-Bit-Befehlssatz unterstützt. ARM nahm diesen Befehlssatz und erstellte einen reduzierten ARM-Befehlssatz, der als Thumb-Befehlssatz bekannt ist. Die Daumenanweisungen werden eins zu eins den ARM-Anweisungen zugeordnet (umgekehrt ist dies nicht der Fall). Damit der Kern nur ARM-Instruktionen verarbeiten muss, werden die Daumen-Instruktionen auf dem Weg in die Pipe in ARM-Instruktionen übersetzt. Keine schlechte Konstruktion/Idee. Schauen Sie sich den Gameboy Advance an, 16-Bit-Busse überall, Kostensenkung usw. Jetzt ist der GBA die Ausnahme von der Regel, dass der Daumen langsamer läuft als der Arm, nicht wegen der Übersetzung in Armanweisungen, sondern weil es eine Teilmenge war das hat Sie meistens auf die Hälfte der Register und auf zwei statt drei Operandenbefehle beschränkt, Also brauchte es mehr Anweisungen, um dasselbe mit dem Daumen wie mit dem Arm zu tun. (Daumen-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 Daumen-Befehlssatzes und der Stärke des Arms geschaffen. Die Binärdateien sind nicht so klein, aber auch nicht so groß wie der Arm, daher ist der Leistungsgewinn für Mikrocontroller attraktiv. Die andere Sache, die sie gemacht haben, ist, diese Cortex-m-Kerne herzustellen, die nur Daumen2 sind, sie haben keinen Armkern, der darin vergraben ist, diese sind durch und durch Daumen2. mager und gemein. Jetzt führen diese auch Daumen aus, sodass Sie nur Daumen-Tools verwenden können, die Sie von ARMv4T (dem arm7tdmi) gelernt haben. Wenn Sie nicht auf dem Niveau der Assemblersprache arbeiten, Das MEISTE davon spielt für Sie überhaupt keine Rolle, der Teil, der möglicherweise von Bedeutung ist, sind einige für die Assemblierung erforderliche Bits, wie z. Wenn Sie jemandes Sandbox verwenden, werden Sie das nicht einmal sehen. Wenn Sie nicht 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 Arm erstellt, die meistens für Sie erledigt wird. Vielleicht möchten Sie so weit gehen, zu verstehen, dass Dinge wie ARM7 und ARMv7 zwei völlig verschiedene Dinge sind, ARM7 ist ein ARMv4, 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, welchen Kern Sie haben, damit er mit den neueren Anweisungen bessere Entscheidungen treffen kann, um eine bessere Leistung zu erzielen. 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 zielen auf die traditionellen Mikrocontroller ab, die 8-Bit-Leute. Die Cortex-A-Serie ist das High-End-Gerät, das auf Telefone mit großen Displays und tanzendem Quatsch, Desktops, Servern usw. abzielt. Sie haben Mikrocontroller erwähnt, sodass Sie wahrscheinlich in der ARM7- oder Cortex-M-Arena bleiben werden. Ich habe einen Thumb (nicht thumb2)-Befehlssatzsimulator namens thumbulator auf github.com, der wie ein Cortex-m bootet. Abgesehen von Peripheriegeräten, die einfach hinzuzufügen sind, können Sie Code nehmen, den Sie dort ausführen lernen, und zu a wechseln cortex-m3 oder m0. qemu ist ein guter Simulator, aber es ist viel schwieriger, die Ausführung zu beobachten und es ist viel schwieriger, Peripheriegeräte hinzuzufügen, aber es unterstützt gleichzeitig Arm-, Daumen- und Daumen2-Befehlssätze.

Gehen Sie auf die Website von ARM und suchen Sie das ARM ARM (ARM Architectural Reference Manual). Dies ist der Schmelztiegel all ihrer Kerne. An diesem Punkt wird es bei so vielen Variationen etwas aufgebläht, sodass Sie nach TRMs (Technical Reference) suchen müssen Handbücher) für die spezifischen Kerne. Insbesondere der Cortex-m3, Sie möchten wirklich das TRM für den ARMv7M haben. Ich denke, der Cortex-m3 heißt. Es hilft, thumb2 vom ARM ARM zu trennen. Das Verständnis des Boot-Prozesses des Cortex-m3 und wie er sich vom 32-Bit-Arm unterscheidet, ist meiner Meinung nach auch im TRM, vielleicht ist es NUR im TRM. Eine andere Sache, die Sie wissen sollten, ist, dass ein bestimmter Anbieter einen bestimmten Kern und eine bestimmte Drehzahl dieses Kerns kauft. ARM kann diesen Kern verbessern und beispielsweise eine rev3 verkaufen, aber der Anbieter mit der rev2 hat die rev2. Obwohl auf der Website von ARM angezeigt wird, dass das TRM für rev2 durch das TRM für rev3 ersetzt wurde, Das rev2 TRM ist das, was Sie wollen, da es zu dem von Ihnen verwendeten Kern passt. Manchmal können Sie sich verwirren oder völlig verlieren, wenn Sie das falsche TRM verwenden. ARM zieht es vor, dass die Anbieter die Kerne nicht selbst dokumentieren, sondern die Dokumentation verwalten möchten, also müssen Sie diese Lücke zwischen dem, was der Chipanbieter Ihnen sagt, und den Dokumenten auf der ARM-Website schließen, die Sie erhalten müssen. 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 bemerkt, die die falschen Errata, die falsche Version mit dem falschen Anbieter und dem 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 Chipanbietern auf viele verschiedene Arten verwendet werden, während dieser Kernanbieter die Anzahl und Qualität seiner Produkte schnell erhöht. Sie können das tun, was ich die meiste Zeit tue, für den ARMv4-Armmodus oder den ARMv4-Daumenmodus kompilieren, und dieser Code wird auf so ziemlich allen folgenden Kernen ausgeführt. Leider haben die Tools, die gut auf gcc basieren, immer noch Schmerzen und/oder Beschwerden bei der Verwendung des Daumens. Braucht etwas Übung.

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

Okay, wow mouser hat eine Reihe von Mikrocontroller-Evaluierungsboards. Es gibt den MOD-MMA7260, Sie müssen den Beschleunigungsmesser nicht verwenden, es gibt eine stm32l-Entdeckung, der Mouser-Preis ist höher als bei anderen, aber der Versand ist viel niedriger
Tolle ausführliche Antwort dort :)
Hey, können Sie Ihren Rat gegen den LPCxpresso näher erläutern? Ich verstehe nicht, was Sie meinen, "es richtet sich speziell an einen Tool-Anbieter". Für mich scheint es eine kostengünstige Möglichkeit zu sein, in die ARM-Entwicklung einzusteigen.
Damals 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, können Sie für ungefähr oder unter 10 US-Dollar eine ganze Reihe von Boards, Nucleos von ST, Launchpads usw. bekommen.

Kein Personalchef wird sich darum kümmern, mit welcher genauen Teilenummer Sie schon einmal gearbeitet haben. Wenn Sie einen potenziellen Arbeitgeber beeindrucken möchten, stellen Sie sicher, dass das von Ihnen gewählte Projekt interessant ist und Sie klar und selbstbewusst darüber sprechen können. Sie möchten in der Lage sein, Arbeitsproben mit Arbeitgebern zu teilen, also stellen Sie sicher, dass Sie ein Projekt auswählen, das dies in der Lizenz zulässt, oder fragen Sie um Erlaubnis, bevor Sie beginnen.

Die Unterschiede zwischen den Prozessorfamilien sind geringfügig, 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.

Wer sich als ARM-Experte präsentieren möchte, ist auf einige Fragen besser vorbereitet. Für ein Projekt haben wir mit einem Atmel ARM begonnen, aber festgestellt, dass er die 5000 Interrupts pro Sekunde aufgrund einer zu hohen Interrupt-Latenz nicht verarbeiten konnte. Auf einem NXP hat es gut funktioniert. Sie können sicherlich Eindruck machen, wenn Sie solche Details kennen.

Wie Steven zeigte, ist der Cortex M3 ein modernerer Prozessor. Es ist ein viel ausgefeilteres Gerät. Wenn Sie die LPC21xx-Serie mit dem LPC17xx vergleichen, erhalten Sie viele zusätzliche Funktionen, darunter externe 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 tatsächlich schneller leistungsfähigere Software schreiben, aber der Arbeitsspeicher ist schnell leer, wenn Sie EEPROM-Caching (um die Geschwindigkeit der Datenverarbeitung zu verbessern), UART-Puffer für die Paketverarbeitung, GUI-Code (arbeitete 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 bei der Datenübertragung zu helfen. 60 MHz ist schnell, aber es war eine Anwendung, die mit „menschlicher Geschwindigkeit“ lief und nicht zur Regulierung von Prozessen verwendet wurde.

Alles in allem, greifen Sie zu Cortex M3, während Sie noch die freie Wahl treffen können (LPC1759 oder LPC1769 sieht nach einem sehr guten Chip aus, der immer noch in einem vernünftigen DIY-Paket steckt). Schneller, mehr Speicher, mehr Peripherie, mehr Interrupts, weniger Strom/MHz. Das Gerät scheint ähnlich teuer zu sein. Das Erlernen des ARM7TDMI ist jedoch nicht schlecht und wird viel über diese Plattformen lernen.

Die einzigen Vorteile, die ich für ARM7 sehen kann (über die Kompatibilität mit vorhandenem ARM7-Code hinaus), sind, dass bedingte Anweisungen 32 Bit statt 48 Bit haben. Die feste 4-Byte-Anweisungsgröße bedeutet, dass berechnete Verzweigungsziele natürlich ganzwortausgerichtet sind, ohne NOPs aufzufüllen , und die Anweisungstimings sind vorhersagbar und positionsunabhängig, wenn sie aus dem RAM laufen.

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..

Highend -Unterhaltungselektronik wie Mobiltelefone und andere Gadgets - Cortex-Kerne sind gut

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

Automotive wie Body Controller und Security – Ältere und bewährte Cores wie PowerPC sind eine gute Wahl.

oxakhil fragte nach ARM7TDMI vs. Cortex, nicht nach AVR oder PIC.
@stevenvh, das stimmt. Er fragte auch, welches man studieren solle, um einen Platz in der Zukunft zu bekommen. Er hat nicht erwähnt, welche Branche er ansprechen möchte. Kein ARM-Micro-Studium, wenn er zum Beispiel in der Haushaltsgeräteindustrie arbeiten will.
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 Angebote für den LPC1111 von nur 65 Dollarcent gesehen. Und das für ein HVQFN33-Gehäuse. Ich erwarte in naher Zukunft M0s mit niedrigerer Pinzahl, und eine niedrigere Pinzahl bedeutet normalerweise einen niedrigeren Preis.
Übrigens, diese 65 Cent waren 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 kaufen, aber ich frage mich, ob Sie damit eine Waschmaschine steuern können (z. B. 1 I / O).

Ich denke, das Hauptproblem ist, dass Sie ARM 7 mit ARMv7 verwechseln. Die Cortex-Prozessoren verwenden die ARMv7-Architektur. ARM7TDMI verwendet die ARMv4-Architektur. Es dauerte eine Weile, bis ich herausfand, dass die 7 in ARM7 nicht mit der 7 in ARM Version 7 identisch war.

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 schönsten, die es zu lernen und zu verwenden gilt. Abgesehen davon scheinen die Cortexes die Welle der Zukunft für Mikrocontroller zu sein. Bei Mikroprozessoren (die Dinger mit mehr als 200 Pins auf einer Leiterplatte mit einigen Speicherchips und wahrscheinlich unter Linux) bin ich mir nicht so sicher, dass Snapdragon und dergleichen ARM-Klone sind und auf diesem Markt ziemlich dominant zu sein scheinen (zusammen mit verschiedenen MIPS Versionen).