Jaki jest dobry wybór ARM do połączenia z pamięcią zewnętrzną?

13

Właśnie ukończyłem projekt przy użyciu układu LPC2132, ale miałem problemy z wykorzystaniem całego 64kb pamięci RAM.

W moim następnym projekcie chciałbym użyć czegoś, co może odnosić się do zewnętrznego, znacznie większego układu pamięci. Jaki rodzaj ARM może to zrobić i co muszę zrobić, aby oba urządzenia mogły mówić?

samoz
źródło
1
o jakiej pamięci mówimy o SRAM, SDRAM, DDR, DDR2, DDR3?
Jay Atkinson
1
W szczególności żaden rodzaj. Coś większego niż 64k ...
samoz

Odpowiedzi:

10

Nie potrzebujesz MMU dla zewnętrznej pamięci RAM, decydujący czynnik, jeśli potrzebujesz, jest zupełnie odrębnym zagadnieniem niż po prostu potrzeba więcej miejsca. Jeśli kodowałeś bezpośrednio do metalu, może ci to ułatwić życie bez posiadania MMU. Chciałbym również zauważyć, że MMU praktycznie nigdy nie jest zewnętrznym komponentem, a raczej kością SoC.

Możesz znaleźć ARM SoCs w wielu rodzinach, które pozwalają na pamięć zewnętrzną od ARM7 w górę, na przykład NXP LPC2212 Series nie mówi, że jest najlepszy, tylko pierwszy ARM7 SoC, który pojawił się w Google z interfejsem pamięci zewnętrznej, istnieje wiele opcji .

Zwróciłbym większą uwagę na funkcje różnych rdzeni w rodzinach ARM, ponieważ prawie wszystkie z nich można znaleźć w SoC z zewnętrznymi kontrolerami pamięci.

Teraz, jaki typ pamięci potrzebujesz i jak ją uruchomić, zależy to od wybranego SoC i jakiej pamięci obsługuje zewnętrzny kontroler pamięci. Na przykład podłączony ARM7 SoC i obsługuje zewnętrzną pamięć SRAM oraz pamięć flash i ROM i obsługuje do 4 banków 16 MB, dzięki czemu można podłączyć do niej zewnętrzną pamięć flash i pamięć SRAM.

Możesz użyć oddzielnej pamięci RAM i pamięci flash. Istnieją również pakiety o nazwie MCP (Multi Chip Package), które mogą zawierać zarówno pamięć flash, jak i ram w 1 pakiecie. To, jak wybierzesz te urządzenia, zależy od wielu czynników, musisz dokładniej określić swoją aplikację.

To, jak łatwo jest to podłączyć, zależy od potrzebnej prędkości. Większość zewnętrznych kontrolerów pamięci ma programowalne częstotliwości zegara. Częstotliwości zegara interfejsu pamięci mogą być bardzo wysokie, co najmniej 10 MHz i prawdopodobnie znacznie wyższe. Krótko mówiąc, najprawdopodobniej coś takiego nie ma, musisz zaprojektować płytkę drukowaną i zwrócić szczególną uwagę na problemy z integralnością sygnału dla tych linii.

Najlepszym wyborem jest wybranie rdzenia, z którym chcesz grać, i znalezienie jednej z wielu dostępnych tam kart rozwoju z pamięcią zewnętrzną.

znak
źródło
Dzięki za odpowiedź Mark. Byłem zdezorientowany, czy MMU było konieczne, czy nie. Patrząc na Sparkfun, obecnie mają w sprzedaży LPC 2294, który ma zewnętrzną magistralę pamięci. Myślę, że pójdę z tym.
samoz
4
MMU służy do mapowania wirtualnej przestrzeni adresowej na urządzenia fizyczne. Jest używany przez systemy operacyjne do izolowania pamięci różnych procesów, do stronicowania, rozwiązywania problemów związanych z fragmentacją pamięci, dynamicznego mapowania pamięci urządzeń sprzętowych itp. Wirtualizuje podsystem pamięci. W większości przypadków potrzebujesz MMU tylko wtedy, gdy chcesz uruchomić system operacyjny z pełnym zestawem funkcji wieloprocesowych. Na przykład potrzebujesz MMU, aby uruchomić pełne jądro Linuksa, chociaż istnieje uClinux, który został zmodyfikowany do działania bez MMU.
Mark
czy dobrze jest wyłożyć zewnętrzny eeprom działający w trybie SPI / IIC? Nie mogę się doczekać, aby rozszerzyć pamięć flash mojego MCU za pomocą 24c64 IC.
0xakhil
To byłoby trudne; potrzebujesz dobrej płyty chlebowej, bardzo krótkich drutów (np. 1 cal) i bardzo wolnych zegarów (powiedziałbym, że unikaj niczego poza 2 MHz). Na wszelki wypadek użyłbym rezystorów 200 omów zamiast przewodów, aby uzyskać wolniejsze czasy narastania / opadania. Pamiętaj, że GND powinien być również krótki między chipami. Nie pobiłoby to żadnych rekordów, ale dałoby dowód koncepcji, którą można przetłumaczyć na lepszą płytę.
Guillermo Prandi
5

Większa seria procesorów STM32 (32-bitowy rdzeń Cortex-M3) ma FSMC, który jest elastycznym kontrolerem pamięci statycznej. Dzięki temu możesz podłączyć Flash, RAM i inne urządzenia peryferyjne pamięci, takie jak LCD i tym podobne.

Mogę polecić STM32F103ZET6, jak również powiedział tcrosley, i możesz dostać płytę programistyczną, w tym Flash i Sram w serwisie eBay za 68 USD - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


źródło
Uwaga, żadna pamięć zewnętrzna dodana do STM32x nie będzie tak szybka jak wewnętrzna SRAM lub wewnętrzna Flash. Jak 6-9X wolniej. Jeśli potrzebujesz szybkiej pamięci, upewnij się, że jest ona wewnętrzna. Robię projekt z 16 MB PSRAM na STM32 i jest dość wolny, jeśli użyjesz go jako pamięci ogólnego przeznaczenia.
Mark Lakata
1
Możesz sprawić, aby FSMC / PSRAM działał szybciej, ale nie możesz po prostu zmapować go do normalnej pamięci, tj. Pamięci sterty. Będziesz musiał użyć dedykowanego dostępu DMA.
Mark Lakata
4

Ostatnio miałem podobny wymóg dotyczący nowego projektu i wybrałem STMicro STM32F103ZET6 (32-bitowy ARM Cortex-M3), z 512 KB wewnętrznej pamięci Flash i 64 KB wewnętrznej pamięci RAM za około 10 USD w ilości. Ma kontroler pamięci, który może adresować do 64 MB pamięci zewnętrznej (26 bitów adresu). Dostępne w 144-pinowym pakiecie LQFP. (Nie lubię używać BGA do prototypów.) Będę łączył go z 2 MB Sypką Cypress, bez żadnego innego kleju (bez multipleksowania).

tcrosley
źródło
Chłodny! Używasz płyty programistycznej lub stworzyłeś własną?
samoz
Mój lokalny przedstawiciel STMicro dał mi „IAR KickStart Kit dla STM32” iar.com/web1/1.0.1.0/658/1/?item=prod_prod-s1/225 do zabawy; jednak micro jest tylko pakietem 64-pinowym, więc nie ma pinów FSMC, więc mogę w końcu uzyskać płyty z pakietem 144-pinowym.
tcrosley
Czy coś brakuje? 26 bitów może bezpośrednio adresować 2 ^ 6 = 64 M lokalizacji. 512 MB oznacza 8-bajtowe słowa. Czy powinno to być 512 Mb?
XTL
1
@XTL: dobry haczyk, poprawiłem swoją odpowiedź.
tcrosley,
3

Może Atmel AT91SAM9G20 ?

To trochę bestia (217-pinowy pakiet BGA), ale to świetny układ w tej cenie. Jeśli szukasz czegoś bardziej przyjaznego człowiekowi, może wypróbuj Atmel AT91M42800A . Myślę, że to najmniejszy MCU, który ma sprzęt pamięci zewnętrznej, przynajmniej od Atmel. To 144-pinowy pakiet LQFP.

Atmel ma selektor parametryczny: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Chyba powinienem dodać, że nie pracuję dla Atmel; akurat znam ich rzeczy.)

pingswept
źródło