Quel est le bon choix pour un ARM de s'interfacer avec la mémoire externe?

13

Je viens de terminer un projet en utilisant la puce LPC2132, mais j'ai rencontré des problèmes avec l'utilisation de la totalité des 64 Ko de RAM.

Pour mon prochain projet, j'aimerais utiliser quelque chose qui puisse référencer une puce mémoire externe beaucoup plus grande. Quel type d'ARM peut faire cela et que dois-je faire pour faire parler les deux appareils?

samoz
la source
1
de quel type de mémoire parle-t-on de SRAM, SDRAM, DDR, DDR2, DDR3?
Jay Atkinson
1
Aucun type en particulier. Quelque chose de plus grand que 64k ...
samoz

Réponses:

10

Vous n'avez pas besoin d'une MMU pour la mémoire RAM externe, le facteur déterminant si vous en avez besoin est un problème complètement distinct du simple besoin de plus d'espace. Si vous avez codé directement sur le métal, cela peut en fait vous faciliter la vie sans avoir de MMU. Je voudrais également noter qu'une MMU n'est pratiquement jamais un composant externe mais plutôt sur la puce SoC.

Vous pouvez trouver des SoC ARM dans de nombreuses familles qui autorisent la mémoire externe de l'ARM7, par exemple la série NXP LPC2212 ne dit pas que c'est le meilleur, juste le premier SoC ARM7 qui est apparu dans google avec une interface de mémoire externe, il y a beaucoup d'options .

J'accorderais plus d'attention aux caractéristiques des différents cœurs des familles ARM, car vous pouvez les trouver presque tous dans les SoC avec des contrôleurs de mémoire externes.

Maintenant, en ce qui concerne le type de mémoire dont vous avez besoin et comment le faire fonctionner, cela dépend du SoC que vous choisissez et de la mémoire prise en charge par le contrôleur de mémoire externe. Par exemple, l'ARM7 SoC i linked prend en charge la mémoire SRAM externe ainsi que les flashs et les roms et prend en charge jusqu'à 4 banques de 16 Mo. Vous pouvez donc y raccorder simultanément une mémoire flash externe et une mémoire SRAM.

Vous pouvez utiliser des RAM et des circuits intégrés flash séparés. Il existe également des packages appelés MCP (Multi Chip Package) qui peuvent inclure à la fois flash et ram dans un package. La façon dont vous choisissez ces appareils dépend de nombreux facteurs, vous devez être plus précis sur votre application.

La facilité de connexion dépend de la vitesse dont vous avez besoin. La plupart des contrôleurs de mémoire externe ont des fréquences d'horloge programmables. Les fréquences d'horloge de l'interface mémoire peuvent être très élevées d'au moins 10 MHz et probablement beaucoup plus élevées. En bref, il est très probable que vous ne montiez pas quelque chose comme ça, vous devez concevoir un PCB et porter une attention particulière aux problèmes d'intégrité du signal pour ces lignes.

Votre meilleur pari est de choisir un noyau avec lequel vous voulez jouer et de trouver l'une des nombreuses cartes de développement avec de la mémoire externe.

marque
la source
Merci pour la réponse Mark. J'étais confus si une MMU était nécessaire ou non. En regardant Sparkfun, ils ont actuellement un LPC 2294 en vente, qui a un bus de mémoire externe. Je pense que j'irai avec ça.
samoz
4
une MMU est utilisée pour mapper un espace d'adressage virtuel à des périphériques physiques. Il est utilisé par les systèmes d'exploitation pour isoler la mémoire des différents processus, pour la pagination, la résolution des problèmes de fragmentation de la mémoire, le mappage de la mémoire des périphériques matériels dynamiques, etc. Il virtualise le sous-système de mémoire. Dans la plupart des cas, vous n'avez besoin d'une MMU que si vous souhaitez exécuter un système d'exploitation avec un ensemble complet de fonctionnalités de multitraitement. Par exemple, vous auriez besoin d'une MMU pour exécuter le noyau Linux complet, bien qu'il y ait uClinux qui a été modifié pour fonctionner sans MMU.
Mark
est-il acceptable de tester une eeprom externe fonctionnant en mode SPI / IIC? J'ai hâte d'étendre la mémoire flash de mon MCU en utilisant un circuit intégré 24c64.
0xakhil
Ce serait difficile; vous avez besoin d'une bonne planche à pain, de fils très courts (par exemple 1 pouce) et d'horloges très lentes (évitez tout ce qui dépasse 2 MHz, je dirais). J'utiliserais des résistances de 200 ohms au lieu de fils au cas où, pour obtenir des temps de montée / descente plus lents. N'oubliez pas que GND doit également être court entre les puces. Cela ne battrait aucun record, mais vous donnerait une preuve de concept que vous pouvez traduire en un meilleur tableau.
Guillermo Prandi
5

La plus grande série de processeurs STM32 (cœur Cortex-M3 32 bits) possède un FSMC, qui est un contrôleur de mémoire statique flexible. Avec cela, vous pouvez connecter Flash, RAM et autres périphériques de mémoire comme LCD et autres.

Je peux recommander le STM32F103ZET6 comme l'a également dit tcrosley, et vous pouvez obtenir une carte de développement comprenant flash et sram sur ebay pour 68 $ - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


la source
Attention, toute mémoire externe que vous ajoutez à un STM32x ne sera pas aussi rapide que la SRAM interne ou la Flash interne. Comme 6-9X plus lent. Si vous avez besoin d'une mémoire rapide, assurez-vous qu'elle est interne. Je fais un projet avec 16 Mo de PSRAM sur un STM32 et c'est assez lent si vous l'utilisez comme mémoire à usage général.
Mark Lakata
1
Vous pouvez obtenir le FSMC / PSRAM pour aller plus vite, mais vous ne pouvez pas simplement le mapper à l'espace mémoire normal, c'est-à-dire pour la mémoire de tas. Vous devrez utiliser des accès DMA dédiés.
Mark Lakata
4

J'ai récemment eu une exigence similaire pour un nouveau projet, et j'ai choisi le STMicro STM32F103ZET6 (ARM 32-bit Cortex-M3), avec 512K de Flash interne et 64K de RAM interne pour environ 10 $ en quantité. Il possède un contrôleur de mémoire qui peut adresser jusqu'à 64 Mo de mémoire externe (26 bits d'adresse). Disponible dans un boîtier LQFP à 144 broches. (Je n'aime pas utiliser le BGA pour les prototypes.) Je vais l'interfacer avec une SRAM Cypress de 2 Mo, sans autre colle requise (pas de multiplexage).

tcrosley
la source
Cool! Utilisez-vous une carte de développement ou avez-vous fait la vôtre?
samoz
Mon représentant STMicro local m'a donné un "Kit IAR KickStart pour STM32" iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 pour jouer avec; cependant, le micro n'est qu'un paquet 64 broches, donc il n'a pas les broches FSMC, donc je peux finir par obtenir les cartes avec le paquet 144 broches.
tcrosley
Suis-je en train de manquer quelque chose? 26 bits peuvent adresser directement 2 ^ 6 = 64 M emplacements. 512 Mo avec cela signifieraient des mots de 8 octets. Cela devrait-il être 512 Mo?
XTL
1
@XTL: bonne prise, j'ai corrigé ma réponse.
tcrosley
3

Peut-être un Atmel AT91SAM9G20 ?

C'est un peu bête (boîtier BGA 217 broches), mais c'est une excellente puce pour le prix. Si vous cherchez quelque chose d'un peu plus convivial, essayez peut-être l' Atmel AT91M42800A . Je pense que c'est le plus petit MCU qui dispose d'un matériel de mémoire externe, au moins d'Atmel. Il s'agit d'un boîtier LQFP à 144 broches.

Atmel dispose d'un sélecteur paramétrique: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Je suppose que je devrais ajouter que je ne travaille pas pour Atmel; il se trouve que je connais juste leurs affaires.)

pingswept
la source