Как MCU и RAM подключаются для программного доступа?

Я новичок в программировании электроники и микроконтроллеров, и мне нужно либо подтверждение того, что я правильно понимаю некоторые пункты, либо я отчаянно нуждаюсь в их исправлении!

У меня есть сервер на основе C, для правильной работы которого требуется около 2 ГБ ОЗУ. Мне интересно посмотреть, есть ли способ прошить эту программу на микроконтроллер на базе ARM, такой как Raspberry Pi или STM32. Если я правильно понимаю компоненты MCU, Raspberry Pi просто не может справиться с такой потребностью в ОЗУ, потому что это чип Broadcom/ARM, прикрепленный к SoC с микросхемами с фиксированной памятью.

Однако я также понимаю , что не-SoC, такие как STM32, могут быть подключены к любому типу микросхемы памяти. Я нашел эти карты памяти на 4 ГБ, и мне интересно, можно ли разместить одну из них на печатной плате рядом с микроконтроллером на базе ARM, тем самым позволяя чипу ARM фактически запускать на нем очень большую программу.

Вот я и спрашиваю: можно ли это сделать? Если нет, то почему ? Как они несовместимы друг с другом? Если да, то как они обычно подключаются? Просматривает ли инженер таблицы данных для обоих чипов и выясняет ли проводка / ввод-вывод между ними?

Думаю, в конце концов, мне интересно, почему так мало микроконтроллеров с безумно большой памятью; и я думаю, что это либо потому, что большинству встроенных/MCU-программ не требуется столько памяти, либо потому, что по какой-то причине они не могут.

Хотя, безусловно, есть чипы ARM, предназначенные для внешней памяти, серия STM32 на самом деле не является примером — обычно они имеют несколько десятков тысяч встроенной оперативной памяти, и разговор вне чипа потребует реальных компромиссов. Вы можете посмотреть на платы для разработки, основанные на современных чипах для смартфонов, но неясно, сэкономите ли вы деньги на какой-нибудь материнской плате для ПК с малым форм-фактором.

Ответы (3)

Ответ - экономия.

Оптимальные процессы для ЦП и ОЗУ различны, поэтому, когда оба находятся на одном чипе, необходимо найти какой-то компромисс. Для небольшого чипа (не так много ОЗУ) это не так сильно повредит, меньше, чем добавление внешней ОЗУ и использование большого количества выводов ввода-вывода для взаимодействия с ним. Для большой оперативной памяти (в настоящее время переключение, похоже, составляет ~ 100 КБ) имеет смысл разместить процессор и оперативную память на разных чипах. Изготовление больших ОЗУ — это очень специализированный бизнес с большими объемами, поэтому лучше использовать то, что есть на рынке, чем разрабатывать новый чип.

Оперативная память, на которую вы ссылаетесь, представляет собой модуль динамической оперативной памяти DDR3 в стиле ПК. Такой модуль имеет специфический интерфейс, который несовместим со (старыми) стандартными адресными линиями + линиями данных + шиной управления, присутствующими в большинстве микроконтроллеров. Я думаю, вам понадобится клеевой чип (мост), чтобы сделать такое соединение. И да, инженеры читают спецификации и делают проводку (включая любые необходимые клеевые чипы, элементы питания, тщательную синхронизацию и т. д.). Это может показаться простым, но это не так.

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

Модули SRAM существуют, но проигрывают DRAM как по емкости (ячейкам SRAM требуется 6 транзисторов, а в DRAM — один транзистор и один конденсатор), так и по экономичности (меньший спрос = более высокая стоимость). Но с ними гораздо проще взаимодействовать, и почти в каждом семействе микроконтроллеров есть хотя бы одно устройство с простой внешней шиной памяти.

При 2 ГБ это перестало быть «микро» (в наши дни). Есть много телефонов, поставляемых с меньшими затратами. Вы уверены, что у вас действительно есть 2 Гб оперативных данных? Можно ли его заменить на Flash? Что он делает?

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

Вы можете получить SoC с интерфейсами DRAM. Они, как правило, недоступны в небольших количествах и в корпусах BGA.