Können Sie einen Computer auf einen 32-Bit-Mikrocontroller stützen?


9

Wir haben alle (meistens) 32-Bit-Maschinen in unseren Häusern. Die 32-Bit-Maschinen verfügen jedoch über einen Mikroprozessor. Ich habe einen Artikel über den ARM Cortex gelesen. Es ist ein 32-Bit-Mikrocontroller. Das faszinierte eine Frage in mir. Mikrocontroller wurden hergestellt, um die externen Schaltkreise um einen Mikroprozessor herum zu verringern, dann wurden die Mikroprozessoren leistungsfähiger, während Mikrocontroller zu lange in ihren 8-Bit-Formen blieben. Aber jetzt, wo wir 32-Bit-Mikrocontroller haben, können wir nicht einen Computer haben, der auf diesen Dingen basiert?


Antworten:


11

Es hängt davon ab, wie Sie "Computer" definieren.

Am kleineren Ende der Skala, was Sie als herkömmliche Mikrocontroller bezeichnen könnten, erhalten Sie keine Speicherverwaltung und sehen selten mehr RAM als die winzige Menge, die in den Chip eingebettet ist. Ich gebe zu, dass ich nur sehr wenig über die Architektur der derzeit verfügbaren leistungsfähigeren Mikrocontroller weiß, aber das Vorhandensein (oder Fehlen) dieser Funktionen ist wahrscheinlich der Schlüssel zur Unterscheidung zwischen einem Gerät, das für eingebettete Anwendungen oder für allgemeine Berechnungen am besten geeignet ist .

Mit "Speicherverwaltung" meine ich die Fähigkeit, Programme in virtuellen Adressräumen auszuführen und diese dem im System verfügbaren physischen RAM zuzuordnen, eine Funktion, die von einer sogenannten Speicherverwaltungseinheit (MMU) ausgeführt wird.

Wenn Sie ohne MMU versuchen, mehrere Prozesse auszuführen, müssen alle einen einzigen Adressraum gemeinsam nutzen. Dies bedeutet, dass ein Prozess einen anderen sehr leicht zum Absturz bringen kann, wenn nicht alle beteiligten Prozesse Ihrem Speicherzuweisungsschema entsprechen. Wenn Sie also die vollständige Kontrolle über das Entwerfen aller Prozesse haben, wie bei einem eingebetteten System, ist dies nicht so wichtig. Wenn Sie jedoch versuchen, die Allzweckberechnung zu unterstützen, können Sie nicht garantieren, dass der gesamte Code, der ausgeführt wird, das Speicherzuweisungsschema berücksichtigt und das System ziemlich zerbrechlich ist.

Der Mangel an RAM ist auch für eingebettete Systeme kein großes Problem. (1) Da normalerweise viel Flash vorhanden ist und (2) Sie kein Allzweckcomputer sind, müssen Sie sich keine Sorgen machen, dass Sie unerwartete Programme auf dem Computer ausführen müssen Geheiß eines Benutzers. Sie kennen im Voraus die Gesamtsumme der gesamten Software, die auf dem System ausgeführt wird, und benötigen nur RAM für Variablen für diese Software. Wenn Sie jedoch versuchen, Ihr System zu einem Allzweckcomputer zu machen, erwarten die Benutzer, dass sie das ausführen können, was für sie geeignet ist, und dies erfordert RAM.

Jetzt ist es absolut in Ordnung, Allzweckberechnungen auf Geräten ohne MMU und mit wenig Speicher durchzuführen. Der ursprüngliche IBM-PC mit 128 KB RAM und 8088 (16 Bit) kam damit klar, solange Sie jeweils nur ein Programm ausführen mussten.

Wenn Sie also "Computer" als Technologie von 1982 definieren möchten, lautet die Antwort definitiv "Ja". Oder wenn Sie ein geschlossenes System haben, in dem Sie die Probleme, keine MMU und / oder nicht viel RAM (z. B. Mobiltelefone) zu haben, durch sorgfältige Steuerung des Software-Designs abmildern können, ja. Wenn Ihr Mikrocontroller über eine integrierte MMU und RAM-Speicher verfügt (oder diese extern aufnehmen kann), sollten Sie in der Lage sein, ein System zu erstellen, das den aktuellen Computern ähnlicher ist.


Entwicklungen bei Just-in-Time-Compilern für Dinge wie Java machen eine MMU möglicherweise weniger notwendig als in der Vergangenheit. Ohne JIT-bezogene Fehler könnte es mehrere unabhängige Verarbeitungen geben, auf denen unabhängige Plattformen auf Java Virtual Machines ohne MMU ausgeführt und voneinander isoliert werden, da die JIT keine Anweisungen für ein Programm generiert, das unangemessen auf den Speicher zugreifen würde vom anderen benutzt.
Supercat

16

Absolut! Schauen Sie sich fast jedes Handy da draußen an. Das Motorola Droid verwendet beispielsweise den TI OMAP ARM-basierten Mikrocontroller, auf dem Android auf Linux ausgeführt wird. Grundsätzlich ist ein vollwertiges Computer-Betriebssystem darauf und viele andere Geräte. Bei einigen Produkten, die mein Client erstellt, werden 32-Bit-Prozessoren / Controller von FreeScale PowerQuicc I & II verwendet, auf denen Linux ausgeführt werden kann. Die PowerQuicc-Geräte verfügen grundsätzlich über einen PowerPC-Kern sowie einen separaten RISC-Prozessor, mit dem alle Peripheriegeräte hochgradig konfigurierbar gehandhabt werden können. Es ist ein verherrlichter Mikrocontroller.

Sie müssen sich auch daran erinnern, dass Computer vor Jahren nicht auf 32-Bit-Prozessoren ausgeführt wurden, sondern eher auf 8-Bit-Prozessoren (damals 4-Bit) wie dem Commodore 64. Dann wurden sie auf 16-Bit- und 32-Bit-Prozessoren migriert usw. Es gibt wirklich keinen großen Unterschied zwischen einem Mikrocontroller und einem Mikroprozessor mit äquivalenter Bitarchitektur und Geschwindigkeit. Mikrocontrollern fehlt normalerweise die Gleitkommaeinheit, aber das kann mit Festkomma-Mathematik ausgeglichen werden. Zum Beispiel wurde der ursprüngliche Motorola 68000-Prozessor (16 Bit) verwendet, um diese alten Macintosh-Computer mit Strom zu versorgen, und dann jahrelang in eine Mikrocontroller-Version für viele eingebettete elektronische Anwendungen umgewandelt.

Sie müssen sich die Rolle des Mikrocontrollers ansehen, um zu verstehen, wie er verwendet wird. Wenn Sie mit einem Mikrocontroller entwerfen, haben Sie normalerweise eine hochspezialisierte Anwendung im Sinn und versuchen, diese auf kleinerem Raum als beispielsweise einem PC Tower unterzubringen. Während der Computer ein sehr allgemeiner Zweck ist: Zahlen knacken und Benutzereingaben verarbeiten. Wenn Sie nach einem Mikrocontroller suchen, suchen Sie nach einem, der die Art von Schnittstelle unterstützt, die Sie für Ihre Anwendung erstellen. Benötigen Sie 3 USB-Anschlüsse, 2 Ethernet-, 2 UARTs, SPI-Anschlüsse, Geldautomaten und CAN-Schnittstellen? Einige dieser Schnittstellen sind auf einem typischen Computer wie SPI, ATM und CAN nicht verfügbar, und ein Mikrocontroller verfügt über integrierte Schnittstellen, um den Platz auf der Platine zu reduzieren. Sie können Mikrocontroller als Prozessoren betrachten, die für eine bestimmte Lösung entwickelt wurden.


Ich glaube nicht, dass ein "Allzweckcomputer" jemals etwas Kleineres als einen 8-Bit-Prozessor verwendet hat. Allzweckcomputer müssen in der Lage sein, auf genügend RAM zuzugreifen, um ein verwendbares Programm aufzunehmen, und ich kenne keine Vier-Bit-Computer, die über einen RAM-Codespeicher in verwendbarer Größe verfügen.
Supercat

vielleicht nicht kommerziell, aber viele Hacker, einschließlich meines Großvaters. In seiner Werkstatt lief ein 4-Bit-Computer, bevor die Commodore 64 und TRS-80 populär wurden. Es hatte auch RAM (Stapel von DIPs).
Jay Atkinson

Haben Sie Dokumentation zu physisch konstruierten 4-Bit-Maschinen mit Von-Neumann-Architektur?
Supercat

5

Wir können es definitiv. Das iPad verwendet beispielsweise einen ARM Cortex A8-Prozessor für sein Gehirn.


2
Dies ist ein Mikroprozessor, kein Mikrocontroller, wie JPC unten bemerkt
Kortuk

3

Es ist erwähnenswert, dass die genannten ARMs (OMAP und A8) Mikroprozessoren ohne Flash-Speicher und RAM sind (für den A8 nicht ganz zutreffend). Der Cortex-M3-Mikrocontroller ist kleiner, verfügt über einen kleinen integrierten Speicher und erleichtert den Zugriff auf Peripheriegeräte.

Zwischen ihnen besteht eine ziemlich große Lücke (in Bezug auf Leistung und Funktionen).


+1 für den Hinweis auf den Unterschied zwischen Cortex-A und Cortex-M-Serie ...
Johan

1
Mikrocontroller hat Flash und RAM eingebettet. Mikroprozessoren haben ihren Speicher extern.
Kortuk


2

Ich habe nicht versucht, einen alten Thread wiederzubeleben, aber auf meinem Zaurus SL5500 wurde Embedded Linux auf einem ARM-Prozessor mit RAM-Speicher und weiteren Speicherbereichen über CF- und SD-Steckplätze ausgeführt. Soweit ich weiß, wurde die MMU hauptsächlich in Software implementiert (macht für ein Linux-System sowieso Sinn). Allzweck-Computing war nicht nur möglich, sondern wurde auch über Software von Drittanbietern, Compiler und eine flexible Befehlsshell, die die meisten Standard-Dienstprogramme und -Funktionen von * nix bereitstellte, vollständig verfügbar gemacht.

War nicht der schnellste GP-Computer der Welt, aber der ARM (und / oder Samsung-Äquivalente - ich bin mir nicht hundertprozentig sicher, welchen er enthielt) sah furchtbar leistungsfähig aus. In Bezug auf Funktion und Leistung ist es im Vergleich zu einem WinMobile Ipaq eines viel neueren Jahrgangs (definitiv Samsung StrongArm-Klon) recht gut. Beide Maschinen hatten viel RAM und viel Speicher, so dass viel Speicher verwaltet werden musste - ich nehme an, wir müssen die Grenze zwischen Mikroprozessoren und Mikrocontrollern ein wenig verwischen, wenn wir dieses Leistungsniveau erreichen.


2

Sie erwähnen "Mikroprozessoren" und "Mikrocontroller", aber zunehmend gibt es eine dritte Kategorie von Geräten, die als "SOCs" bekannt sind (was für "System-on-Chip" steht, ein Begriff, den ich eher irreführend finde).

Mikrocontroller haben sehr kleine RAM-Mengen und normalerweise keine Speicherzuordnung und einen sehr begrenzten Speicherschutz. Dies macht sie für die Verwendung als Allzweckcomputer schlecht geeignet.

SOCs können als Mittelweg zwischen herkömmlichen Mikrocontrollern angesehen werden, bei denen alles auf einem Chip integriert ist, und herkömmlichen Mikroprozessoren, die große Mengen an Unterstützungsschaltungen erfordern. SOCs haben den Prozessorkern und die Perhipherals auf einem Chip integriert, verwenden jedoch im Gegensatz zu Mikrocontrollern externen Speicher. In der Regel verfügen diese SOCs über eine vollständige MMU, mit der ein virtueller Adressraum für verschiedene Anwendungen erstellt werden kann. Viele SoCs haben auch spezielle Funktionsblöcke für 3D-Grafik, DSP, Videokodierung / -decodierung usw.

SOCs sind nicht so leistungsfähig wie ein moderner Desktop-PC, aber in Kombination mit einer nicht verkrüppelten Softwareumgebung sind sie leistungsstark und funktional genug, um als "Allzweckcomputer" zu gelten.

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.