Ich bin mit der Verwendung von Mikrocontrollern vertraut, sowohl mit Frameworks wie Arduino als auch nativ (PIC / AVR). Ich bin auch mit der allgemeinen Architektur eingebetteter Systeme vertraut, da ich weiß, dass Sie einen Prozessor mit diskretem RAM und ROM/Flash haben, der über verschiedene Busse verbunden ist. Ich habe jedoch noch nie ein Projekt von Grund auf mit einem Mikroprozessor erstellt.
Was sollte ich wissen, bevor ich zu mikroprozessorbasierten Projekten übergehe? Zum Beispiel bin ich es auf einem Mikrocontroller gewohnt, einfach Code durch meinen Compiler zu senden und eine Binärdatei zu erhalten, die über ISP oder ähnliches hochgeladen werden kann - wie funktioniert das mit einem Prozessor mit diskretem Flash? Und was ist mit Taktquellen - haben Prozessoren normalerweise eine interne Uhr wie MCUs? Ich bin mir sicher, dass es auch viele "unbekannte Unbekannte" gibt - wo sollte ich suchen, um anzufangen?
Ich interessiere mich hauptsächlich für ARM- und x86-Plattformen, aber allgemeine Ratschläge wären auch nützlich.
Der Hauptunterschied bei diesen Systemen besteht darin, dass sie im Allgemeinen nicht direkt aus dem Flash heraus ausgeführt werden – stattdessen gibt es ein kleines Programm im Flash, das als Bootloader fungiert, und das Programm wird dann von einem Medium wie z B. eine SD-Karte oder SSD oder Festplatte in den Arbeitsspeicher, von wo es dann ausgeführt wird. Wenn der Bootloader aktualisiert werden muss, gibt es einige Mittel, entweder über den Mikroprozessor oder extern, um ihn zu aktualisieren und neu zu programmieren.
Wenn Sie also Ihr Programm aktualisieren, wird es auf Ihr System heruntergeladen und dann auf die SD-Karte oder SSD oder Festplatte geschrieben, was auch immer Sie haben.
Wenn es läuft, gibt es wirklich keinen Unterschied zwischen einem Mikrocontroller und einem Mikroprozessor. Es ist nur so, dass im letzteren Fall viel mehr RAM (vielleicht mehrere hundert MB) vorhanden ist, als Sie in einem Mikrocontroller finden würden. Der CPU ist es egal, ob ihr RAM oder Flash ausgeht. Auf eine Sache müssen Sie achten: Ein fehlerhaftes Programm kann sich im RAM selbst löschen, während dies im Flash nicht passieren kann.
Mikroprozessoren haben fast immer einen externen Quarz als Taktquelle. Der Prozessor kann eine PLL (Phase Locked Loop) verwenden, um die Kristallfrequenz auf einen viel höheren Wert (mehrere hundert MHz oder sogar ein GHz) zu multiplizieren. Dies ist Teil des Initialisierungscodes.
Der Zugriff auf Peripheriegeräte ist im Wesentlichen dasselbe wie bei einem Mikrocontroller; Sie befinden sich nur außerhalb des Chips und nicht darin, sodass der Zugriff nicht so schnell ist. (Die einzigen „Peripheriegeräte“ auf einem x86-Chip sind typischerweise Timer, DMA und Interrupt-Controller.) Der Prozessor kommuniziert mit den Peripheriegeräten über I/O-Ports.
Meiner Meinung nach besteht eine der besten Methoden zur Unterscheidung zwischen einer MPU und einer MCU darin, ob die CPU eine Speicherverwaltungseinheit (MMU) enthält – das heißt einen Hardwaremechanismus zum Abbilden nicht zusammenhängender Speicherblöcke in einen virtuellen zusammenhängenden Raum the fly, wobei die Zuordnung davon abhängt, welcher Prozess ausgeführt wird.
Dies ermöglicht einzelnen Prozessen, jeden Speicher zu verwenden, den sie "sehen" können, und schützt jeden Speicher, den sie nicht "sehen" können, vor versehentlichen Zugriffen.
Eine CPU mit einer MMU ist eine MPU; Eine CPU ohne MMU ist eine MCU.
Ignacio Vazquez-Abrams
Polynom
Ignacio Vazquez-Abrams
pjc50
Spehro Pefhany
Polynom
Ricardo