Warum sollte ich eine Mikrocontroller-Architektur lernen? [geschlossen]


8

Ich habe vor kurzem angefangen, in einem kleinen Unternehmen zu arbeiten, das Elektronik für die Fahrzeugdiagnose herstellt. Mein Chef, der Mitte 50 ist, sagte, er benutze 8051 Derivate und sie machten den Job. Ich habe Google durchsucht, um herauszufinden, ob 8051 heute noch beliebt ist. Und in Quora habe ich Folgendes gesehen:

... es ist wahrscheinlich die einfachste MCU-Architektur, die es gibt. Jedes Peripheriegerät scheint die Bare-Bones-Version zu sein. Meine Konzepte von Timern, Taktung, UART usw. haben sich sehr geklärt! Und dann begann ich andere Architekturen zu schätzen - weil ich die Differenzierung tatsächlich verstand.

... offensichtlich wird es aufgrund seiner Einfachheit von keiner Industrie zur Entwicklung eines Produkts verwendet ...

Aber warum? Zumindest als Student habe ich bisher viele Dinge getan, ohne mich mit Architektur zu beschäftigen. Ich habe glücklich mit C codiert, ich habe LCD-Peripheriegeräte verwendet, die mit anderen Protokollen mit unterschiedlichen Protokollen (SPI, I2C usw.) verbunden sind.

Warum sollte ich mich mit der Architektur meines Mikrocontrollers beschäftigen, abgesehen von begrenzten Bereichen von Echtzeit- und zeitkritischen Anwendungen?


3
Entweder zum Spaß oder weil Sie natürlich ein Projekt mit einer solchen Architektur durchführen müssen.
PlasmaHH

Heute ist 8051 höchstens ein Hobby-Level. Wenn Sie jedoch mit etwas Moderatem wie ARM Cortex M4 arbeiten, müssen Sie die Architektur nicht wirklich lernen. Zumindest nicht zu starten
Gregory Kornblum

@PlasmaHH Ich wünschte, ich hätte genug Zeit, um "Spaß" mit jedem einzelnen Thema über Elektronik zu haben, aber das war in meinen Studienjahren :)
CK

6
Sie müssen sich der Architektur bewusst sein, wenn Sie Leistung benötigen, was wahrscheinlich nicht der Fall sein wird. Um Ihnen ein Beispiel zu geben: Wenn Sie immer wieder Berechnungen durchführen müssen und nur eine begrenzte Zeit haben, müssen Sie möglicherweise keine in Flash gespeicherten Daten verwenden oder die Registernutzung optimieren. Aber es passiert heute nur einer sehr begrenzten Anzahl von Fachleuten. Sie werden Zeit brauchen, um dorthin zu gelangen. Im Moment würde ich keinen Fehler machen, wenn ich davon ausgehe, dass das Schreiben von C für Ihre kommenden Jahre ausreicht.
Gregory Kornblum

2
Ich werde es denen überlassen, die es vielleicht besser wissen :)
Gregory Kornblum

Antworten:


30

Werden heute noch 8051 und andere Low-Bit-Mikrocontroller verwendet?

Ja, fast überall. Sie sind klein und einfach, es schweben viele Kerne herum, die Sie kostengünstig oder kostenlos in Ihr benutzerdefiniertes Silizium einbauen können. Es gibt ausgereifte Compiler. Dies alles macht den 8051 immer noch zu einer der beliebtesten Kernarchitekturen unter Siliziumherstellern. ARM-Kerne sind möglicherweise in verschiedenen Produkten erhältlich. Wenn Sie jedoch mit jemandem sprechen, der viele Geräte zu sehr strengen Preisbedingungen baut, wird er wahrscheinlich einen günstigeren / kostenlosen 8051-Kern bevorzugen, wenn er seine Arbeit erledigt . Nur um der Behauptung von @ Nitro2k01 zu widersprechen, dass nur Nischen verwendet werden dürfen: Mouser hat fast 800 Modelle von 8051- Mikrocontrollern auf Lager ¹. Und die Tatsache, dass diese sogar bei Mouser zu Preisen unter 40 ct beginnen, könnte ein Hinweis darauf sein, wofür sie verwendet werden:

Mainstream-MCUs mit geringer Leistung und hohem Volumen

somit:

... offensichtlich wird es aufgrund seiner Einfachheit von keiner Industrie zur Entwicklung eines Produkts verwendet ...

ist hochwertiger völliger Unsinn. Zumal Sie selbst ein Gegenbeispiel liefern

Mein Chef, der Mitte 50 ist, sagte, er benutze 8051 Derivate und sie machten den Job.

Genau! Sie werden überall verwendet, sind bewährt und billig und sie sind ausreichend ; Unterschätzen Sie niemals den Vorteil, irgendwo in einer Schublade eine Lösung für ein häufiges Problem zu haben!

Natürlich ist es häufig der Fall, dass Sie eine Lösung mit beispielsweise zwei typischen Autobussen, einer Hochgeschwindigkeitsschnittstelle zu einem ADC, einigen zuverlässigen Watchdog-Timern, drei PWM-Einheiten ... benötigen und dann etwas zusammensetzen, das aus besteht vier 8051- und 8080-Derivate. Das ist eine schlechte Situation und könnte sehr wahrscheinlich viel schneller und zuverlässiger mit einer einzigen, vielseitigeren und leistungsstärkeren MCU (z. B. einem ARM) gelöst werden. Aber "wir haben Unternehmenswissen darüber, wie etwas mit alter Technologie funktioniert" und "wir sind zukunftssicher, weil wir auf moderner Hardware laufen können", ist ein klassischer Kompromiss zwischen Investitionssicherheit. Wenn Sie auf eines dieser Projekte stoßen, würde ich versuchen, in diesem Zusammenhang mit dem Chef zu sprechen. Für einfache kleine Arbeiten, ja, 8051.

Sollte ich mir die Mühe machen, etwas über MCU-Architekturen im Allgemeinen zu lernen?

Ja! Ich denke, @jfkowes erklärt das sehr gut. Aber ehrlich: Das ist ein bisschen so, als würde man fragen: "Soll ich lernen, wie der Verbrennungsmotor funktioniert, wenn ich Automechaniker werden möchte?" Die Antwort lautet: "Sie könnten gut leben, wenn Sie Reparaturhandbücher nur gut genug ausführen können, aber Sie werden wahrscheinlich ein viel besserer Techniker (geschweige denn Ingenieur) sein, wenn Sie verstehen, was Ihre Hardware tut."

Sobald Sie auf ein Problem stoßen, das nicht mit Google behoben werden kann, wären Sie so ziemlich eine Schildkröte auf Ihrem Rücken, wenn Sie nicht grob verstehen würden, wie Ihr Prozessor funktioniert.

Sollte ich mir die Mühe machen, die 8051-Architektur zu lernen?

Wahrscheinlich nicht. In dem Sinne, dass Sie, solange die Kosten nicht Ihr Hauptaugenmerk sind, höchstwahrscheinlich nur viel mächtigere und vielseitigere MCUs verwenden können, die auf ARM-Kernen oder anderen, moderneren Architekturen basieren.

Andererseits ist der 8051-Kern so einfach, dass ich empfehlen würde, die Einheiten zu verstehen, bevor ich versuche, einen moderneren, komplexeren MCU-Kern in Angriff zu nehmen. Es ist ein schönes Beispiel.

Wenn 8051 So ist nicht der Kern Ich suche in einer Low-Volume - Anwendung, was bin ich suchen?

Also persönlich: Entscheide dich für einen ARM Cortex-M0, -M3, -M4F; diese sind reichlich vorhanden in allen Arten von erschwinglichen Mikrocontroller, einfach zu programmieren (yay, GCC Support, CMSIS Standard - Libs, viele eingebetteten OSes auf diesem läuft reifen) und häufig mit Standard - Debug - Schnittstellen kommen (das ist ein großes Plus).

ARMs sind von außen normalerweise relativ einfach zu verstehen, da Sie normalerweise jedes Peripheriegerät in den Speicherbereich abbilden würden, und das war's. Intern weisen sie einen unterschiedlichen Grad an Raffinesse sowie Optimierungen in Bezug auf Geschwindigkeit, Robustheit und Größe auf, sodass sie nicht ganz einfach und detailliert zu verstehen sind.

Wenn Sie sich für CPU-Design interessieren, denke ich (dies ist wirklich eine persönliche Überzeugung, die auf meiner Beobachtung von Forschungsaktivitäten und "versprochenen" Industrieinvestitionen basiert), dass wir derzeit den Aufstieg eines neuen wichtigen ISA beobachten - des RISC-V. Es gibt verschiedene Implementierungen dieser Architektur für FPGAs oder Silizium, und Leute wie Nvidia scheinen auch damit zu spielen, ihre Stream-Multiprozessoren durch diese Art von Kernen zu ersetzen.


¹: Es ist sehr wahrscheinlich, dass ich mehr als die Hälfte der tatsächlichen 8051 vermisse, die mouser hat (weil ich gerade alle MCUs ausgewählt habe, deren Kernname * 80 * 5 * war). Wenn Sie einen zufälligen 8-Bit-Mikrocontroller auswählen, ist es wahrscheinlich, dass sein Kern zumindest teilweise von 8051 abgeleitet ist. Ich meine, schauen Sie sich einfach die "Liste der [8051] -Derivatanbieter " von Wikipedia an .


AVR ist auch eine großartige Lernarchitektur mit hervorragender Dokumentation und gcc-Unterstützung.
Chrylis -on Streik-

@Chrylis hassen es, nicht zuzustimmen, aber ich persönlich denke nicht, dass die ATMega 8-Bitters eine großartige Architektur sind, noch ist ihre Dokumentation oder GCC-Unterstützung im Vergleich zu ARM cortex m0, mit dem sie konkurrieren, hervorragend. Aber das ist eine persönliche Meinung!
Marcus Müller

1
@ MarcusMüller Nach einigen Erfahrungen mit Atmel würde ich sie nie mehr verwenden (außer für Hobby). Atmel war auf Hobbyaktivitäten angewiesen, um Unternehmen zu unterstützen, die kleiner als eine bestimmte "Größe" waren - was ich immer kleiner war, da unsere Qtys nie überschritten wurden 6000 pro Jahr. FAEs waren nett, aber das hat Frankreich (AT91) nicht geholfen und so habe ich sie einfach gehen lassen. Microchip hingegen hat mich unabhängig vom Projekt auf ein verrücktes Niveau gebracht. Unterstützt ihren prof. Werkzeuge "für immer" und sogar alte Chips werden noch hergestellt. Atmel jetzt von Microchip gekauft. Also vielleicht dort zu Fuß wechseln und ich werde noch einmal nachsehen.
Jonk

1
@jonk also, während PIC / Mikrochip einen guten Service-Ruf hat und allein davon überleben könnte, könnte die Atmel-Portfolio-Erweiterung zum Stillstand kommen. Und meine Hoffnung für das nächste Jahrzehnt: Wie wir in den Kommentaren zu einer anderen Antwort vor einiger Zeit besprochen haben, wenn es sich als richtig herausstellt, dass Wafer- "Shuttle-Dienste" immer erschwinglicher werden und mit sehr wettbewerbsfähigen 32-Bit / optional 64-Bit / optional RT garantiert Architekturen wie RISC-V in verschiedenen Größen und Geschwindigkeiten (wie sie als Kerne mit dem Namen BOOM, Rocket-Chip oder PicoRV32 implementiert sind).
Marcus Müller

1
@ MarcusMüller Man kann hoffen. Wenn der Kundensupport aktiviert wird, schlachtet Microchip einfach alle anderen. Ich hatte ein professionelles Werkzeug, 12 Jahre alt, bei dem der Netzschalter "schuppig" wurde. Ich rief an, um zu fragen, ob sie mir die Teilenummer des Schalters geben könnten, damit ich eine bestellen und das Gerät reparieren könnte. Stattdessen forderten sie mich auf, mir ein Ersatzgerät zu schicken, schickten es mir und eine Schachtel, um ihnen das alte zurückzugeben, und es kam am folgenden Morgen an! Keine Kosten. Ich fragte: "Benötigen Sie einen Kaufnachweis?" Sie sagten: "Nein. Geben Sie einfach die andere Einheit zurück. Physischer Besitz ist alles, was wir brauchen." Das verdammte Ding war uralt.
Jonk

12

Im Allgemeinen gibt es hier einige gute Gründe, die Architektur des von Ihnen verwendeten Mikrocontrollers zu erlernen (oder zumindest über Kenntnisse zu verfügen).

Vorsichtsmaßnahme: Im Zusammenhang mit Ihrem Job, dem Unternehmen, der Anwendung, der zugehörigen Hardware usw. kann es Gründe geben, warum Sie die bestimmte Architektur, die Sie gerade verwenden, nicht kennen sollten.

Debuggen

Wenn Bibliotheken auf hoher Ebene funktionieren, müssen Sie die Architektur möglicherweise nicht kennen. Wenn Sie Probleme haben, kann die Kenntnis der Interna Ihres Mikrocontrollers viel dazu beitragen, diese Probleme schnell zu isolieren und zu beheben.

Code-Effizienz und Einfachheit

Wenn Sie die Architektur kennen, können Sie möglicherweise Funktionen von Software auf Hardware verschieben. Dies hat das Potenzial, die Softwarelast zu reduzieren und Fehlerquellen zu beseitigen.

Kostenreduzierung

Kenntnisse der Architektur können die Programm- und Datenspeicherauslastung und die Prozessorlast verringern. Dies kann bedeuten, dass Sie einen Mikrocontroller mit weniger Ressourcen auswählen können, wodurch möglicherweise die Kosten gesenkt werden.

Steigern Sie Ihren Nutzen

Selbst wenn Sie das Wissen momentan nicht nutzen, können Diskussionen mit Kollegen / Anbietern / Support-Ingenieuren usw. dazu führen. Zum Beispiel könnte etwas, das Sie kennen, jemand anderem bei einem Problem helfen, das er hat. Den Tag retten ist etwas, an das sich die Leute erinnern.

Wissen ist Macht

Selbst wenn Sie das Wissen in Ihrem aktuellen Job nicht benötigen , sind Sie in einer besseren Position , wenn Sie eine Anzeige für einen Job sehen, der fantastisch aussieht und besagt, dass "Kenntnisse der Architektur der <Mikrocontrollerfamilie> erforderlich / bevorzugt sind" um es zu versuchen.


Andererseits weiß ich nicht, ob Sie diesen Satz oft in einer Stellenanzeige lesen werden - es ist eine Art arkanes Wissen, und jeder, der sich mit einer CPU-Architektur am wenigsten auskennt, kann den 8051 in seinen ersten drei Tagen abholen Ich würde raten
Marcus Müller

Guter Punkt, ich habe das bearbeitet, um allgemeiner zu sein.
Jfowkes

7

Werden heute noch 8051 und andere Low-Bit-Mikrocontroller verwendet?

Ja, obwohl meistens für Nischenanwendungsfälle. Sie werden meist für einfache Aufgaben, in massenproduzierten, kostengetriebenen Produkten oder dort eingesetzt, wo eine nachgewiesene Erfolgsbilanz wünschenswert ist. Sie werden häufig lizenziert und in eine Single-Chip-Lösung integriert. Aufgrund ihrer einfachen Architektur ist es einfach, sie in benutzerdefinierte Peripheriegeräte auf demselben Chip zu integrieren. Ein weiterer Vorteil besteht darin, dass sie mit älteren (und billigeren) Halbleiterherstellungstechniken auf kleinem Raum hergestellt werden können.

Ein solches Beispiel ist der Steuerchip in Smartcards, die häufig einen 8051 oder einen ähnlichen Kern mit kryptografischen Hardwareerweiterungen verwenden. In Dingen wie dem Controller für einen intelligenten elektrischen Zahnbürstenmonitor finden Sie wahrscheinlich 8-Bit-Mikrocontrollerkerne. Ein Fahrzeug-Steuergerät verwendet aufgrund seiner höheren Zuverlässigkeit und geringeren Komplexität häufig einen 8-Bit-Mikrocontroller sowie einen 32-Bit-Mikrocontroller als Watchdog.

Solltest du es lernen?

Abgesehen von der Möglichkeit, dass Sie tatsächlich in eine Situation geraten, in der Kenntnisse über diese bestimmte Architektur erforderlich sind, würde ich argumentieren, dass dies im Allgemeinen eine nützliche Fähigkeit ist. Selbst wenn Sie C in Ihrer täglichen Arbeit programmieren, ist es hilfreich, ein allgemeines Verständnis dafür zu haben, was auf "einer Ebene darunter" vor sich geht. Bei der Behebung seltsamer Fehler oder Leistungsprobleme kann es viel einfacher sein, das Problem zu lokalisieren, wenn Sie ein allgemeines Verständnis der zugrunde liegenden Hardware haben. Sie können auch die vom C-Compiler ausgegebene Assemblersprache einfacher analysieren. Das Erlernen einer Architektur wird es auch in Zukunft einfacher machen, verschiedene zu lernen. Diese Fähigkeiten können Ihnen auch dabei helfen, besseren Code zu schreiben, selbst für modernere CPU-Kerne.


Ich würde der Behauptung "Nische" nur ein wenig widersprechen. siehe meine Antwort unten :) aber trotzdem ist deine eine gute Antwort!
Marcus Müller

1

Sie können viel über digitales Design lernen, indem Sie sie lernen. Digitale Elektronik besteht aus zwei Dingen. Erstens sind Logik, Verbindungen von AND-, OR-, NOT-Elementen, die einen logischen Ausdruck implementieren. (In der Praxis werden tatsächlich andere logische Elemente wie NAND verwendet, aber AND, OR und NOT sind leichter zu verstehen.) Zweitens sind Speicherelemente , die ein oder mehrere Bits enthalten können. Wenn Speicherelemente eingeführt werden, können Geräte einen sogenannten Status haben . Unterschiedliche Kombinationen von Bits in den Speicherelementen entsprechen unterschiedlichen Zuständen.

Stellen Sie sich einen Verkaufsautomaten vor, der im Zustand 0 beginnt und jedes Mal, wenn eine Münze eingelegt wird, in einen anderen Zustand wechselt. Auf diese Weise kann die Maschine den Gesamtbetrag des Geldes verfolgen, wissen, wann genug Geld eingezahlt wurde, und wissen, wie viel Wechselgeld zurückgegeben werden muss.

Um die Schaltkreise der Maschine zu entwerfen, beginnen Sie mit einem Diagramm der Zustände mit Pfeilen, die Übergänge zu anderen Zuständen zusammen mit den Bedingungen zeigen, die sie auslösen. Für jeden Pfeil identifiziert ein logischer Ausdruck eine Bedingung. Man kann dann herausfinden, was all diese Ausdrücke sind, und sie mit logischen Elementen implementieren.

Für einen Automaten ist dies nicht sehr schwierig. Bei komplexen Steuerungen wird es viel schwieriger. Mikrocontroller sind eine schnelle und einfache Möglichkeit, dasselbe zu tun. Man betrachte einen "Speicher", der (im Sinne eines Bytes oder Wortes) k Bit breit ist und n Adressleitungen hat, was zu 2 ^ n Stellen im Speicher führt. Dieser Speicher ist mit einem Design programmiert und in der Praxis schreibgeschützt. Es ist zu beachten, dass unter Verwendung der Adressbits des Speichers als "Eingänge" und der Datenbits als Ausgänge der Speicher so programmiert werden kann, dass jede logische Funktion realisiert wird.

Das Hinzufügen eines Registers mit einer Breite von ebenfalls k Bits, um den Inhalt eines Speicherorts aufzunehmen, ergibt eine Zustandsmaschine.

Wenn die k Bits unterteilt ist , zB , ein Opcode und eine Adresse. Der Opcode-Satz von Bits steuert andere Teile der Schaltung (wie das Ausgeben eines Verkaufsautomatenprodukts) und die anderen sind eine n Bit breite Speicheradresse. Jeder Satz von k Bits wird zu einem Mikrobefehl mit Verzweigungsfähigkeit.

Fügen Sie dazu einige arithmetische Logik, einige weitere Register hinzu (wobei eines oder mehrere davon Steuereingaben zum Verschieben nach links und rechts verwenden), und Sie können eine CPU erstellen, deren Maschinenanweisungen durch eine Folge von Mikrobefehlen implementiert werden.

In den 1970er und 1980er Jahren wurden eine Reihe erfolgreicher Computer mit diesem Design gebaut. Einer von ihnen (VAX 11 von Digital Equipment) verfügte über eine Maschinenanweisung zur Berechnung eines ganzzahligen Polynoms, das für Adressberechnungen vorgesehen war (Think Array). Es stellte sich heraus, dass die Anweisung mit einfacheren Anweisungen schneller implementiert werden konnte.

Mikrocontroller können und sind normalerweise eine weniger effiziente Implementierung als eine herkömmliche Zustandsmaschine. Sie können jedoch leicht geändert werden, sind viel schneller zu entwerfen und eignen sich hervorragend als Controller-Lösungen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.