Что является хорошим выбором для взаимодействия ARM с внешней памятью?


13

Я только что завершил проект с использованием чипа LPC2132, но столкнулся с проблемами при использовании всей 64 КБ ОЗУ.

Для моего следующего проекта я хотел бы использовать что-то, что может ссылаться на внешний, гораздо больший чип памяти. Какой тип ARM может сделать это, и что мне нужно сделать, чтобы два устройства разговаривали?


1
о какой памяти речь идет о SRAM, SDRAM, DDR, DDR2, DDR3?
Джей Аткинсон

1
Нет, в частности. Нечто большее, чем 64k ...
samoz

Ответы:


10

Вам не нужен MMU для внешней оперативной памяти, определяющий фактор, если он вам нужен, - это совершенно отдельная проблема, а не просто больше места. Если вы программируете прямо на металл, это может фактически облегчить вашу жизнь без MMU. Я также хотел бы отметить, что MMU практически никогда не является внешним компонентом, а скорее на кристалле SoC.

Во многих семействах можно найти SoC ARM, которые позволяют использовать внешнюю память от ARM7, например, серии NXP LPC2212, не говоря о своем лучшем, просто первая ARM7 SoC, которая появилась в Google с интерфейсом внешней памяти, есть много вариантов ,

Я бы уделил больше внимания возможностям различных ядер в семействе ARM, поскольку почти все из них можно найти в SoC с внешними контроллерами памяти.

Теперь вопрос о том, какой тип памяти вам нужен и как он работает, зависит от выбранного вами SoC и от того, какую память поддерживает внешний контроллер памяти. Например, подключенный к ARM7 SoC i поддерживает внешнюю SRAM, а также флэш-диски и диски и поддерживает до 4 банков по 16 МБ, поэтому вы можете подключить к ней внешнюю флэш-память и SRAM одновременно.

Вы можете использовать отдельные ОЗУ и флэш-микросхемы. Есть также пакеты, называемые MCP (Multi Chip Package), которые могут включать в себя как флэш-память, так и оперативную память в одном пакете. То, как вы выбираете эти устройства, зависит от многих факторов, вам нужно быть более конкретным в отношении вашего приложения.

Насколько легко это сделать, зависит от скорости, которая вам нужна. Большинство контроллеров внешней памяти имеют программируемые тактовые частоты. Тактовые частоты интерфейса памяти могут быть очень высокими, по крайней мере, 10 МГц и, вероятно, намного выше. Короче говоря, вы, скорее всего, не макетируете что-то подобное, вам нужно спроектировать печатную плату и обратить особое внимание на проблемы целостности сигналов для этих линий.

Лучше всего выбрать ядро, с которым вы хотите играть, и найти одну из множества плат для разработки с внешней памятью.


Спасибо за ответ Марк. Я был смущен, если MMU был необходим или нет. Глядя на Sparkfun, у них на самом деле есть в продаже LPC 2294, который имеет внешнюю шину памяти. Я думаю, что я пойду с этим.
Самоз

4
MMU используется для сопоставления виртуального адресного пространства с физическими устройствами. Он используется операционными системами для изоляции памяти различных процессов, для подкачки страниц, решения проблем фрагментации памяти, отображения динамических аппаратных устройств и т. Д. Он виртуализирует подсистему памяти. В большинстве случаев вам понадобится MMU, только если вы хотите запустить операционную систему с полным набором функций многопроцессорной обработки. Например, вам понадобится MMU для запуска полного ядра Linux, хотя есть uClinux, который был изменен для работы без MMU.
Марк

Это нормально, чтобы макетировать внешний EEPROM, работающий в режиме SPI / IIC? Я с нетерпением жду расширения флэш-памяти моего MCU с помощью 24c64 IC.
0xahil

Это было бы сложно; вам нужен хороший макет, очень короткие провода (например, 1 дюйм) и очень медленные часы (я бы сказал, избегайте всего, что находится за пределами 2 МГц). Я бы использовал резисторы 200 Ом вместо проводов на всякий случай, чтобы уменьшить время нарастания / падения. Помните, что GND должен быть коротким между чипами. Это не побьет рекорды, но даст вам подтверждение концепции, которую вы можете перевести на более качественную доску.
Гильермо

5

Большая серия процессоров STM32 (32-битное ядро ​​Cortex-M3) имеет FSMC, который представляет собой гибкий статический контроллер памяти. При этом вы можете подключить флэш-память, оперативную память и другие периферийные устройства памяти, такие как ЖК-дисплей и тому подобное.

Я могу порекомендовать STM32F103ZET6, как сказал также tcrosley, и вы можете получить плату для разработки, включающую flash и sram на ebay, за 68 долларов - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


Предупреждение: любая внешняя память, которую вы добавляете в STM32x, не будет такой же быстрой, как внутренняя SRAM или внутренняя Flash. Как в 6-9 раз медленнее. Если вам нужна быстрая память, убедитесь, что она внутренняя. Я делаю проект с 16 МБ PSRAM на STM32, и он довольно медленный, если вы используете его как память общего назначения.
Марк Лаката

1
Вы можете заставить FSMC / PSRAM работать быстрее, но вы не можете просто сопоставить его с обычным пространством памяти, то есть с кучей памяти. Вам придется использовать выделенный доступ DMA.
Марк Лаката

4

Недавно у меня появилось аналогичное требование для нового проекта, и я выбрал STMicro STM32F103ZET6 (32-битный Cortex-M3 ARM) с 512 КБ встроенной флэш-памяти и 64 КБ встроенной оперативной памяти примерно за 10 долларов. Он имеет контроллер памяти, который может адресовать до 64 МБ внешней памяти (26 бит адреса). Доступен в 144-контактном корпусе LQFP. (Я не люблю использовать BGA для прототипов.) Я буду сопрягать его с 2 МБ Cypress SRAM, без какого-либо другого клея (без мультиплексирования).


Здорово! Вы используете доску для разработки или вы сделали свою собственную?
Самоз

Мой местный представитель STMicro дал мне «IAR KickStart Kit для STM32» iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 для игры; однако micro - это всего лишь 64-контактная упаковка, поэтому в ней нет контактов FSMC, поэтому я могу в итоге получить платы с 144-контактной упаковкой.
tcrosley

Я что-то пропустил? 26 бит могут напрямую адресовать 2 ^ 6 = 64 M местоположения. 512MB с этим будет означать 8-байтовые слова. Это должно быть 512Mb?
XTL

1
@XTL: хороший улов, я исправил свой ответ.
tcrosley

3

Может быть, Atmel AT91SAM9G20 ?

Это немного чудовище (217-контактный корпус BGA), но это отличный чип по цене. Если вы ищете что-то более удобное для человека, возможно, попробуйте Atmel AT91M42800A . Я думаю, что это самый маленький MCU с аппаратным обеспечением внешней памяти, по крайней мере, от Atmel. Это 144-контактный корпус LQFP.

У Atmel есть параметрический селектор: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Думаю, я должен добавить, что я не работаю на Atmel; я просто знаком с их вещами.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.