Was ist eine gute Wahl, wenn ein ARM eine Schnittstelle zum externen Speicher herstellen soll?


13

Ich habe gerade ein Projekt mit dem LPC2132-Chip abgeschlossen, bin jedoch auf Probleme mit der Auslastung des gesamten 64-KB-Arbeitsspeichers gestoßen.

Für mein nächstes Projekt möchte ich etwas verwenden, das sich auf einen externen, viel größeren Speicherchip beziehen kann. Welche Art von ARM kann dies und was muss ich tun, um die beiden Geräte zum Sprechen zu bringen?


1
Welche Art von Speicher sprechen wir über SRAM, SDRAM, DDR, DDR2, DDR3?
Jay Atkinson

1
Keine besondere Art. Etwas größer als 64k ...
Samoz

Antworten:


10

Sie benötigen keine MMU für den externen RAM-Speicher. Der entscheidende Faktor für den Bedarf ist ein völlig anderes Problem als einfach mehr Speicherplatz zu benötigen. Wenn Sie direkt auf das Metall codiert haben, kann dies Ihr Leben erleichtern, wenn Sie keine MMU haben. Ich möchte auch darauf hinweisen, dass eine MMU so gut wie nie eine externe Komponente ist, sondern auf dem SoC-Chip.

Sie finden ARM-SoCs in vielen Familien, die externen Speicher vom ARM7 bis zum NXP LPC2212 zulassen. Dies gilt nicht nur für den ersten ARM7-SoC, der in Google mit einer externen Speicherschnittstelle eingeführt wurde. Es gibt viele Optionen .

Ich würde den Funktionen der verschiedenen Kerne in den ARM-Familien mehr Aufmerksamkeit schenken, da Sie fast alle in SoCs mit externen Speichercontrollern finden können.

Welchen Speichertyp Sie nun benötigen und wie Sie ihn zum Laufen bringen, hängt vom ausgewählten SoC und dem vom externen Speichercontroller unterstützten Speicher ab. Zum Beispiel unterstützt der ARM7 SoC i linked externe SRAMs sowie Flashs und ROMs und unterstützt bis zu 4 16-MB-Bänke, sodass Sie externe Flashs und SRAMs gleichzeitig daran anschließen können.

Sie können separate RAM- und Flash-ICs verwenden. Es gibt auch Pakete mit der Bezeichnung 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 definieren.

Wie einfach dies ist, hängt von der Geschwindigkeit ab, die Sie benötigen. Die meisten externen Speichercontroller verfügen über programmierbare Taktraten. Die Taktraten der Speicherschnittstelle könnten bei mindestens 10 MHz sehr hoch und wahrscheinlich viel höher sein. Kurz gesagt, wenn Sie wahrscheinlich so etwas nicht braten, müssen Sie eine Leiterplatte entwerfen und den Problemen mit der Signalintegrität für diese Leitungen besondere Aufmerksamkeit schenken.

Wählen Sie am besten einen Core aus, mit dem Sie spielen möchten, und suchen Sie eines der zahlreichen Entwicklungsboards mit externem Speicher.


Danke für die Antwort Mark. Ich war verwirrt, ob eine MMU notwendig war oder nicht. Mit Blick auf Sparkfun haben sie derzeit einen LPC 2294 im Angebot, der über einen externen Speicherbus verfügt. Ich denke, ich werde damit weitermachen.
Samoz

4
Eine MMU wird verwendet, um einen virtuellen Adressraum physischen Geräten zuzuordnen. Es wird von Betriebssystemen verwendet, um den Speicher verschiedener Prozesse zu isolieren, um Paging durchzuführen, Speicherfragmentierungsprobleme zu lösen, dynamische Hardwaregeräte zuzuordnen usw. Es virtualisiert das Speichersubsystem. In den meisten Fällen benötigen Sie eine MMU nur, wenn Sie ein Betriebssystem mit einer Reihe von Multiprozessorfunktionen ausführen möchten. Beispielsweise benötigen Sie eine MMU, um den vollständigen Linux-Kernel auszuführen, obwohl uClinux so geändert wurde, dass es ohne MMU ausgeführt werden kann.
Mark

Ist es in Ordnung, einen externen EEPROM, der im SPI / IIC-Modus arbeitet, zu stecken? Ich freue mich darauf, den Flash-Speicher meiner MCU mit 24c64 IC zu erweitern.
0xakhil

Es würde schwierig sein; Sie brauchen ein gutes Steckbrett, sehr kurze Drähte (z. B. 1 Zoll) und sehr langsame Uhren (vermeiden Sie alles, was über 2 MHz hinausgeht, würde ich sagen). Ich würde 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 Proof of Concept geben, den Sie in ein besseres Board übersetzen können.
Guillermo Prandi

5

Die größere Serie von STM32-Prozessoren (32-Bit-Cortex-M3-Core) 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 auch Tcrosley sagte, und Sie können ein Entwicklungsboard mit Flash und SRAM bei eBay für 68 US-Dollar erwerben - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


Warnung: Jeder externe Speicher, den Sie einem STM32x hinzufügen, ist nicht so schnell wie der interne SRAM oder der interne Flash. Wie 6-9X langsamer. Wenn Sie schnellen Speicher benötigen, stellen Sie sicher, dass es sich um einen internen Speicher handelt. Ich mache ein Projekt mit 16 MB PSRAM auf einem STM32 und es ist ziemlich langsam, wenn Sie es als Allzweckspeicher verwenden.
Mark Lakata

1
Sie können den FSMC / PSRAM schneller laufen lassen, aber Sie können ihn nicht einfach einem normalen Speicherbereich zuordnen, z. B. einem Heap-Speicher. Sie müssen dedizierte DMA-Zugriffe verwenden.
Mark Lakata

4

Vor kurzem hatte ich eine ähnliche Anforderung für ein neues Projekt und entschied mich für das STMicro STM32F103ZET6 (ARM 32-Bit-Cortex-M3) mit 512 KB internem Flash und 64 KB internem RAM für etwa 10 USD. Es verfügt über einen Speichercontroller, der bis zu 64 MB externen Speicher (26 Adressbits) adressieren kann. Erhältlich in einem 144-poligen LQFP-Gehäuse. (Ich verwende BGA nicht gerne für Prototypen.) Ich werde es mit einem 2 MB großen Cypress-SRAM verbinden, ohne dass ein anderer Klebstoff erforderlich ist (kein Multiplexing).


Cool! Verwenden Sie ein Entwicklungsboard oder haben Sie ein eigenes entwickelt?
Samoz

Mein örtlicher STMicro-Vertreter gab mir ein "IAR KickStart Kit for 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, daher hat es keine FSMC-Pins, sodass ich möglicherweise die Boards mit dem 144-Pin-Gehäuse bekomme.
Tcrosley

Vermisse ich etwas? 26 Bits können 2 ^ 6 = 64 M Stellen direkt adressieren. 512 MB mit dem würde 8-Byte-Wörter bedeuten. Sollte das 512Mb sein?
XTL

1
@XTL: Guter Fang, ich habe meine Antwort korrigiert.
Tcrosley

3

Vielleicht ein Atmel AT91SAM9G20 ?

Es ist ein kleines Biest (217-Pin-BGA-Gehäuse), aber für den Preis ein großartiger Chip. Wenn Sie etwas suchen, das ein wenig menschlicher ist, probieren Sie vielleicht den Atmel AT91M42800A . Ich denke, das ist die kleinste MCU mit externer Speicherhardware, zumindest von Atmel. Es ist ein 144-poliges LQFP-Paket.

Atmel verfügt über 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 kenne mich einfach mit ihren Sachen aus.)

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.