Was ist eine gute Wahl für einen ARM als Schnittstelle zu externem Speicher?

Ich habe gerade ein Projekt mit dem LPC2132-Chip abgeschlossen, bin aber auf Probleme gestoßen, weil ich die gesamten 64 KB RAM verbraucht habe.

Für mein nächstes Projekt möchte ich etwas verwenden, das auf einen externen, viel größeren Speicherchip verweisen kann. Welche Art von ARM kann das und was muss ich tun, damit die beiden Geräte miteinander sprechen?

welche Art von Speicher sprechen wir über SRAM, SDRAM, DDR, DDR2, DDR3?
Keine besondere Art. Etwas größer als 64k...

Antworten (4)

Sie benötigen keine MMU für externen RAM-Speicher. Der entscheidende Faktor, ob Sie eine benötigen, ist ein völlig anderes Problem als einfach mehr Speicherplatz zu benötigen. Wenn Sie direkt auf das Metall codiert haben, kann es Ihr Leben tatsächlich einfacher machen, keine MMU zu haben. Ich möchte auch darauf hinweisen, dass eine MMU praktisch nie eine externe Komponente ist, sondern auf dem SoC-Die.

Sie finden ARM-SoCs in vielen Familien, die externen Speicher ab ARM7 zulassen, zum Beispiel die NXP LPC2212-Serie , die nicht behauptet, dass sie die beste ist, nur das erste ARM7-SoC, das bei Google mit einer externen Speicherschnittstelle auftauchte, es gibt viele Optionen .

Ich würde den Merkmalen der verschiedenen Kerne in den ARM-Familien mehr Aufmerksamkeit schenken, da sie fast alle in SoCs mit externen Speichercontrollern zu finden sind.

Welche Art von Speicher Sie benötigen und wie Sie ihn zum Laufen bringen, hängt vom gewählten SoC und dem vom externen Speichercontroller unterstützten Speicher ab. Zum Beispiel unterstützt der ARM7 SoC i Linked externes SRAM sowie Flashs und ROMs und unterstützt bis zu 4 16-MB-Bänke, sodass Sie gleichzeitig externes Flash und SRAM daran anschließen können.

Sie könnten separate RAM- und Flash-ICs verwenden. Es gibt auch Pakete namens MCP (Multi Chip Package), die sowohl Flash als auch RAM in einem Paket enthalten können. Wie Sie diese Geräte auswählen, hängt von vielen Faktoren ab, Sie müssen Ihre Anwendung genauer angeben.

Wie einfach das Anschließen ist, hängt von der Geschwindigkeit ab, die Sie benötigen. Die meisten externen Speichercontroller haben programmierbare Taktraten. Die Taktraten der Speicherschnittstelle könnten mit mindestens 10 MHz sehr hoch und wahrscheinlich viel höher sein. Kurz gesagt, wenn Sie so etwas höchstwahrscheinlich nicht stecken, müssen Sie eine Leiterplatte entwerfen und besonderes Augenmerk auf Probleme mit der Signalintegrität für diese Leitungen legen.

Am besten wählen Sie einen Kern aus, mit dem Sie spielen möchten, und finden eines der vielen Entwicklungsboards mit externem Speicher.

Danke für die Antwort Markus. Ich war verwirrt, ob eine MMU notwendig war oder nicht. Wenn Sie sich Sparkfun ansehen, haben sie gerade einen LPC 2294 im Angebot, der über einen externen Speicherbus verfügt. Ich denke, ich werde damit gehen.
Eine MMU wird verwendet, um physischen Geräten einen virtuellen Adressraum zuzuordnen. Es wird von Betriebssystemen verwendet, um den Speicher verschiedener Prozesse zu isolieren, zum Paging, zur Lösung von Speicherfragmentierungsproblemen, zur Speicherzuordnung dynamischer Hardwaregeräte usw. Es virtualisiert das Speichersubsystem. In den meisten Fällen benötigen Sie eine MMU nur, wenn Sie ein Betriebssystem mit einem vollständigen Satz von Multiprocessing-Funktionen ausführen möchten. Beispielsweise benötigen Sie eine MMU, um den vollständigen Linux-Kernel auszuführen, obwohl es uClinux gibt, das so modifiziert wurde, dass es ohne MMU ausgeführt werden kann.
Ist es in Ordnung, ein externes Eeprom, das im SPI/IIC-Modus arbeitet, mit einem Steckbrett zu versehen? Ich freue mich darauf, den Flash-Speicher meiner MCU mit 24c64 IC zu erweitern.
Es würde schwierig sein; Sie brauchen ein gutes Steckbrett, sehr kurze Drähte (z. B. 1 Zoll) und sehr langsame Takte (vermeiden Sie alles über 2 MHz, würde ich sagen). Ich würde für alle Fälle 200-Ohm-Widerstände anstelle von Drähten verwenden, um langsamere Anstiegs- / Abfallzeiten zu erzielen. Denken Sie daran, dass GND auch zwischen den Chips kurz sein sollte. Dies würde keine Rekorde brechen, aber Ihnen einen Machbarkeitsnachweis liefern, den Sie auf ein besseres Board übertragen können.

Die größere Serie von STM32-Prozessoren (32-Bit-Cortex-M3-Kern) verfügt über einen FSMC, einen flexiblen statischen Speichercontroller. Damit können Sie Flash, RAM und andere Speicherperipheriegeräte wie LCD und dergleichen anschließen.

Ich kann das STM32F103ZET6 empfehlen, wie tcrosley auch sagte, und Sie können ein Entwicklungsboard einschließlich Flash und Sram bei ebay für 68 $ bekommen - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411

Warnung, jeder externe Speicher, den Sie einem STM32x hinzufügen, wird nicht so schnell sein wie der interne SRAM oder interne Flash. Wie 6-9X langsamer. Wenn Sie schnellen Speicher benötigen, stellen Sie sicher, dass er intern ist. Ich mache ein Projekt mit 16 MB PSRAM auf einem STM32 und es ist ziemlich langsam, wenn Sie es als Allzweckspeicher verwenden.
Sie können den FSMC/PSRAM schneller machen, aber Sie können ihn nicht einfach auf normalen Speicherplatz abbilden, dh auf Heap-Speicher. Sie müssen dedizierte DMA-Zugänge verwenden.

Ich hatte kürzlich eine ähnliche Anforderung für ein neues Projekt und entschied mich für den STMicro STM32F103ZET6 (ARM 32-Bit Cortex-M3) mit 512 KB internem Flash und 64 KB internem RAM für eine Menge von etwa 10 US-Dollar. Es verfügt über einen Speichercontroller, der bis zu 64 MB externen Speicher (26 Adressbits) adressieren kann. Verfügbar in einem 144-poligen LQFP-Gehäuse. (Ich mag es nicht, BGA für Prototypen zu verwenden.) Ich werde es mit einem 2 MB Cypress SRAM verbinden, ohne dass ein anderer Kleber erforderlich ist (kein Multiplexing).

Cool! Benutzt du ein Entwicklungsboard oder hast du dein eigenes gemacht?
Mein lokaler STMicro-Vertreter gab mir ein „IAR KickStart Kit für STM32“ iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 zum Spielen; Das Mikro ist jedoch nur ein 64-Pin-Gehäuse, sodass es keine FSMC-Pins hat, sodass ich möglicherweise die Platinen mit dem 144-Pin-Gehäuse bekomme.
Übersehe ich etwas? 26 Bits können direkt 2^6 = 64 M Stellen adressieren. 512 MB würden damit 8-Byte-Wörter bedeuten. Sollten das 512 MB sein?
@XTL: Guter Fang, ich habe meine Antwort korrigiert.

Vielleicht ein Atmel AT91SAM9G20 ?

Es ist ein ziemliches Biest (217-poliges BGA-Gehäuse), aber für den Preis ein großartiger Chip. Wenn Sie nach etwas Menschenfreundlicherem suchen, versuchen Sie es vielleicht mit dem Atmel AT91M42800A . Ich denke, das ist die kleinste MCU, die externe Speicherhardware hat, zumindest von Atmel. Es ist ein 144-poliges LQFP-Gehäuse.

Atmel hat einen parametrischen Selektor: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Ich denke, ich sollte hinzufügen, dass ich nicht für Atmel arbeite; ich bin nur zufällig mit ihren Sachen vertraut.)