Qual è una buona scelta per un ARM di interfacciarsi con la memoria esterna?


13

Ho appena completato un progetto utilizzando il chip LPC2132, ma ho riscontrato problemi con l'utilizzo dell'intero 64kb di RAM.

Per il mio prossimo progetto, vorrei usare qualcosa che possa fare riferimento a un chip di memoria esterno molto più grande. Che tipo di ARM può fare questo e cosa devo fare per far parlare i due dispositivi?


1
che tipo di memoria stiamo parlando di SRAM, SDRAM, DDR, DDR2, DDR3?
Jay Atkinson,

1
Nessun tipo in particolare. Qualcosa di più grande di 64k ...
samoz,

Risposte:


10

Non hai bisogno di una MMU per la memoria RAM esterna, il fattore determinante se ne hai bisogno è un problema completamente separato dal semplice bisogno di più spazio. Se stai codificando direttamente sul metallo, potrebbe effettivamente semplificarti la vita non avere un MMU. Vorrei anche notare che un MMU non è praticamente mai un componente esterno ma piuttosto sul die SoC.

È possibile trovare SoC ARM in molte famiglie che consentono la memoria esterna dall'ARM7 in su, ad esempio la serie LX2212 NXP non dicendo che è la migliore, solo il primo SoC ARM7 che è arrivato su Google con un'interfaccia di memoria esterna, ci sono molte opzioni .

Presterei maggiore attenzione alle caratteristiche dei vari core nelle famiglie ARM, poiché è possibile trovarle quasi tutte nei SoC con controller di memoria esterni.

Ora, quale tipo di memoria è necessario e come farlo funzionare, dipende dal SoC scelto e dalla memoria supportata dal controller di memoria esterno. Ad esempio, il SoC ARM7 collegato supporta SRAM esterni, nonché flash e rom e supporta fino a 4 banchi da 16 MB, in modo da poter collegare contemporaneamente flash esterno e SRAM.

Puoi usare RAM separate e circuiti integrati flash, ci sono anche pacchetti chiamati MCP (pacchetto multi-chip) che possono includere sia flash che ram in 1 pacchetto. Il modo in cui scegli questi dispositivi dipende da molti fattori, dovresti essere più specifico sulla tua applicazione.

Quanto sia facile collegarsi dipende dalla velocità di cui hai bisogno. La maggior parte dei controller di memoria esterni ha frequenze di clock programmabili. Le frequenze di clock dell'interfaccia di memoria potrebbero essere molto alte almeno 10 MHz e probabilmente molto più alte. In breve, molto probabilmente non stai cercando qualcosa del genere, devi progettare un PCB e prestare particolare attenzione ai segnali di integrità per queste linee.

La tua scommessa migliore è scegliere un core con cui vuoi giocare e trovare una delle tante schede di sviluppo là fuori con memoria esterna.


Grazie per la risposta Mark. Ero confuso se fosse necessario o meno un MMU. Guardando Sparkfun, attualmente hanno in vendita un LPC 2294, che ha un bus di memoria esterno. Penso che ci andrò.
samoz,

4
una MMU viene utilizzata per mappare uno spazio di indirizzi virtuali su dispositivi fisici. Viene utilizzato dai sistemi operativi per isolare la memoria di diversi processi, per il paging, la risoluzione di problemi di frammentazione della memoria, la mappatura della memoria di dispositivi hardware dinamici, ecc. Virtualizza il sottosistema di memoria. Nella maggior parte dei casi, è necessario un MMU solo se si desidera eseguire un sistema operativo con un set completo di funzionalità di elaborazione multipla. Per esempio, avresti bisogno di una MMU per eseguire il kernel linux completo, sebbene ci sia uClinux che è stato modificato per funzionare senza una MMU.
Segna il

è okeyboard una breadboard esterna che funziona in modalità SPI / IIC? Non vedo l'ora di estendere la memoria flash della mia MCU utilizzando l'IC 24c64.
0xakhil,

Sarebbe difficile; hai bisogno di una buona breadboard, fili molto corti (ad es. 1 pollice) e orologi molto lenti (direi che evita qualsiasi cosa oltre i 2 MHz). Userei resistenze da 200 ohm invece di fili per ogni evenienza, per ottenere tempi di salita / discesa più lenti. Ricorda che anche GND dovrebbe essere corto tra i chip. Ciò non infrangerebbe alcun record, ma ti darebbe una prova del concetto che puoi tradurre in una scheda migliore.
Guillermo Prandi,

5

La più grande serie di processori STM32 (core Cortex-M3 a 32 bit) ha un FSMC, che è un controller di memoria statica flessibile. Con questo sei in grado di collegare Flash, RAM e altre periferiche di memoria come LCD e simili.

Posso consigliare STM32F103ZET6 come ha detto anche tcrosley e puoi ottenere una scheda di sviluppo che include flash e sram su ebay per $ 68 - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


attenzione, qualsiasi memoria esterna aggiunta a un STM32x non sarà veloce come la SRAM interna o il Flash interno. Come 6-9 volte più lento. Se hai bisogno di memoria veloce, assicurati che sia interna. Sto facendo un progetto con PSRAM da 16 MB su un STM32 ed è piuttosto lento se lo usi come memoria per scopi generici.
Mark Lakata,

1
Puoi ottenere FSMC / PSRAM per andare più veloce, ma non puoi semplicemente mapparlo sullo spazio di memoria normale, cioè per la memoria heap. Dovrai utilizzare accessi DMA dedicati.
Mark Lakata,

4

Di recente ho avuto un requisito simile per un nuovo progetto e ho scelto STMicro STM32F103ZET6 (ARM 32-bit Cortex-M3), con 512 KB di Flash interno e 64 KB di RAM interna per circa $ 10 in quantità. Ha un controller di memoria che può indirizzare fino a 64 MB di memoria esterna (26 bit di indirizzo). Disponibile in un pacchetto LQFP a 144 pin. (Non mi piace usare il BGA per i prototipi.) Lo interfaccerò con un Cypress SRAM da 2 MB, senza bisogno di altra colla (nessun multiplexing).


Freddo! Stai usando una scheda di sviluppo o ne hai creata una tua?
samoz,

Il mio rappresentante locale STMicro mi ha dato un "Kit IAR KickStart per STM32" iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 con cui giocare; tuttavia il micro è solo un pacchetto a 64 pin, quindi non ha i pin FSMC, quindi potrei finire per ottenere le schede con il pacchetto a 144 pin.
Tcrosley,

Mi sto perdendo qualcosa? 26 bit possono indirizzare direttamente 2 ^ 6 = 64 M posizioni. 512 MB con questo significherebbe parole a 8 byte. Dovrebbe essere 512 Mb?
XTL,

1
@XTL: buona cattura, ho corretto la mia risposta.
Tcrosley,

3

Forse un Atmel AT91SAM9G20 ?

È un po 'una bestia (pacchetto BGA a 217 pin), ma è un ottimo chip per il prezzo. Se stai cercando qualcosa di un po 'più adatto alle persone, prova Atmel AT91M42800A . Penso che sia la MCU più piccola che abbia hardware di memoria esterna, almeno da Atmel. È un pacchetto LQFP a 144 pin.

Atmel ha un selettore parametrico: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Immagino che dovrei aggiungere che non lavoro per Atmel; ho solo familiarità con le loro cose.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.