Verständnis von ROM/RAM in ARM-MCUs

Der 32-Bit -ARM SAM3X8E verfügt über 512 KB ROM und 96 KB RAM an Bord. Dies bedeutet, dass, wenn ich eine Binärdatei darauf flashe, die beispielsweise 400 KB groß ist und die zur Laufzeit beispielsweise 80 KB RAM (max.) verbraucht, diese Binärdatei auf diese MCU "passt". Ich wäre jedoch nicht in der Lage, eine 800 KB große Binärdatei auf den Chip zu flashen, noch wäre ich in der Lage, eine Binärdatei auszuführen, die zur Laufzeit 1 MB RAM verbraucht. Macht Sinn.

Dann gibt es den neuesten Raspberry Pi mit einem 32-Bit- ARM A7 mit 1 GB RAM (ich konnte seine ROM-Größe nicht finden). Ich frage mich, welche Art von Voodoo und Zauberei bei diesen ARM-MCUs im RPi im Spiel sind:

  • Ist der ARM A7 wirklich so viel leistungsfähiger (1 GB vs. 96 KB ?!?!) als der SAM3X8E?; oder
  • Hat das RPi eine Art "unterstützende Hardware" an Bord, die hilft, den ARM A7 über seine normalen Fähigkeiten im KB-Maßstab hinaus zu skalieren/erweitern?; oder
  • Verstehe ich die 1-GB-Fähigkeit des A7 völlig falsch, und vielleicht kommt dieses 1 GB von einer Kombination aus dem A& plus Off-MCU-Speicher des RPI , woanders auf der Platine? In diesem Fall frage ich mich dann, was die ROM/RAM-Grenzen der MCU des RPi tatsächlich sind und warum nicht stattdessen ein SAM3X8E hätte verwendet werden können.

Wie auch immer, ich schneide es ab, es passt einfach nicht zusammen oder ergibt für mich keinen Sinn. Wie ist ein ARM-Produkt scheinbar 10.000-mal größer (in Bezug auf die Speicherkapazität) als ein anderes?!?

Beachten Sie, dass all dieser Arbeitsspeicher Strom verbraucht. Einen RaspberryPi mit Batterie zu betreiben bedeutet, eine Handy-Powerbank zu verwenden und diese innerhalb von Stunden zu entleeren, während kleine Mikrocontroller wochenlang mit ein paar AAA-Zellen betrieben werden können (nicht der einzige Unterschied ist natürlich der Stromverbrauch des RAM).

Antworten (1)

Der RAM auf dem Raspberry Pi ist von der CPU getrennt. Bei den Originalmodellen befand sich dies in einem Package-on-Package - bei den neueren Modellen ist es unter der CPU auf der anderen Seite der Platine montiert.

Sie werden vielleicht feststellen, dass Sie den SAM3X8E auf die gleiche Weise erweitern könnten - die meisten MCUs haben für solche Dinge eine externe Speicherschnittstelle - suchen Sie im Datenblatt nach EMIF.

Der Grund, warum Sie die ROM-Größe des Raspberry Pi nicht finden können, ist, dass es einen kleinen binären Blob auf der CPU hat, der dann das Booten von Flash unterstützt - wiederum extern und in Form einer Micro-SD-Karte.

Oh, und warum verwendet der Raspberry Pi die CPU, die er verwendet? Eben Upton arbeitet für Broadcom...

Danke @stefandz (+1) - kann man also sagen, dass der ARM A7 ein Mikroprozessor ist , der eine Pinbelegung für einen externen Speicherbus hat und sich deshalb in Off-Chip-RAM integrieren lässt? Und dass der ARM SAM3X8E ein Mikrocontroller ist , der keine solchen externen Speicherbusfähigkeiten hat und daher auf den On-Chip-Speicher beschränkt ist? Wenn beides richtig ist, bestätigen Sie es bitte einfach und ich gebe Ihnen gerne den "grünen Haken"! Und wenn ich ihren Unterschied immer noch missverstehe, klären Sie mich bitte einfach auf. Danke noch einmal!
Technisch (und dies ist eine feine Unterscheidung, aber eine wichtige) ist der Broadcom BCM2835 ein SOC - en.wikipedia.org/wiki/System_on_a_chip Dieser Wiki-Artikel behandelt den Unterschied zwischen MCUs und SOCs, aber die Grenzen können verwischt sein. Der SAM3X8E verfügt über eine EMIF, sodass er auf Wunsch mit einem externen Speicher verbunden werden kann. Insgesamt ist der SAM3X8E etwas universeller, während der BCM2835 auf eine Mini-Linux-PC-Konfiguration mit einem Ausgabedisplay zugeschnitten ist - ein bisschen wie der Pi!
Danke @stefandz (+1 nochmal) - Entschuldigung für die ignoranten Fragen hier, die letzten 2 Follow-ups (ich verspreche es): (1) können Sie bestätigen, dass das, was ich als "A7" bezeichne, das ist, was Sie "" BCM2835"? Und (2) können Sie mir die Richtung der Dokumentation zeigen, die besagt, dass der SAM3X8E über eine externe Speicherschnittstelle verfügt (ich kann sie anscheinend nicht finden)? Danke noch einmal!
(1): Entschuldigung, es ist eigentlich der BCM2836, der ein A7 ist (wenn Sie auf der von Ihnen verlinkten Wiki-Seite nach unten scrollen, können Sie sehen, dass er erwähnt wird, zusammen mit dem Raspberry Pi 2 als Ziel). Ich wurde von Ihnen geworfen, als Sie ursprünglich den Pi 1 erwähnten (der einen ARM11-Kern hat). A7 und ARM11 sind Kerne (Implementierungen der Zentralprozessortechnologie) – BCM2835 und BCM2836 sind spezifische Teile, die diese Kerne verwenden. (2): atmel.com/devices/sam3x8e.aspx „Die externe 16-Bit-Busschnittstelle unterstützt SRAM, PSRAM, NOR und NAND-Flash mit Fehlercodekorrektur.“ SRAM / PSRAM sind Speicher - daher ist die Busschnittstelle ein EMIF.