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