Я новичок в программировании электроники и микроконтроллеров, и мне нужно либо подтверждение того, что я правильно понимаю некоторые пункты, либо я отчаянно нуждаюсь в их исправлении!
У меня есть сервер на основе C, для правильной работы которого требуется около 2 ГБ ОЗУ. Мне интересно посмотреть, есть ли способ прошить эту программу на микроконтроллер на базе ARM, такой как Raspberry Pi или STM32. Если я правильно понимаю компоненты MCU, Raspberry Pi просто не может справиться с такой потребностью в ОЗУ, потому что это чип Broadcom/ARM, прикрепленный к SoC с микросхемами с фиксированной памятью.
Однако я также понимаю , что не-SoC, такие как STM32, могут быть подключены к любому типу микросхемы памяти. Я нашел эти карты памяти на 4 ГБ, и мне интересно, можно ли разместить одну из них на печатной плате рядом с микроконтроллером на базе ARM, тем самым позволяя чипу ARM фактически запускать на нем очень большую программу.
Вот я и спрашиваю: можно ли это сделать? Если нет, то почему ? Как они несовместимы друг с другом? Если да, то как они обычно подключаются? Просматривает ли инженер таблицы данных для обоих чипов и выясняет ли проводка / ввод-вывод между ними?
Думаю, в конце концов, мне интересно, почему так мало микроконтроллеров с безумно большой памятью; и я думаю, что это либо потому, что большинству встроенных/MCU-программ не требуется столько памяти, либо потому, что по какой-то причине они не могут.
Ответ - экономия.
Оптимальные процессы для ЦП и ОЗУ различны, поэтому, когда оба находятся на одном чипе, необходимо найти какой-то компромисс. Для небольшого чипа (не так много ОЗУ) это не так сильно повредит, меньше, чем добавление внешней ОЗУ и использование большого количества выводов ввода-вывода для взаимодействия с ним. Для большой оперативной памяти (в настоящее время переключение, похоже, составляет ~ 100 КБ) имеет смысл разместить процессор и оперативную память на разных чипах. Изготовление больших ОЗУ — это очень специализированный бизнес с большими объемами, поэтому лучше использовать то, что есть на рынке, чем разрабатывать новый чип.
Оперативная память, на которую вы ссылаетесь, представляет собой модуль динамической оперативной памяти DDR3 в стиле ПК. Такой модуль имеет специфический интерфейс, который несовместим со (старыми) стандартными адресными линиями + линиями данных + шиной управления, присутствующими в большинстве микроконтроллеров. Я думаю, вам понадобится клеевой чип (мост), чтобы сделать такое соединение. И да, инженеры читают спецификации и делают проводку (включая любые необходимые клеевые чипы, элементы питания, тщательную синхронизацию и т. д.). Это может показаться простым, но это не так.
Модули DRAM нуждаются в контроллере памяти, чтобы запускать обновления и разрешать доступ. За этот контроллер приходится платить недвижимым имуществом пластины, энергопотреблением и количеством выводов.
Модули SRAM существуют, но проигрывают DRAM как по емкости (ячейкам SRAM требуется 6 транзисторов, а в DRAM — один транзистор и один конденсатор), так и по экономичности (меньший спрос = более высокая стоимость). Но с ними гораздо проще взаимодействовать, и почти в каждом семействе микроконтроллеров есть хотя бы одно устройство с простой внешней шиной памяти.
При 2 ГБ это перестало быть «микро» (в наши дни). Есть много телефонов, поставляемых с меньшими затратами. Вы уверены, что у вас действительно есть 2 Гб оперативных данных? Можно ли его заменить на Flash? Что он делает?
Посмотрите, что является хорошим выбором для ARM для взаимодействия с внешней памятью? - но я думаю, что ваш лучший вариант - получить какой-нибудь одноплатный компьютер.
Вы можете получить SoC с интерфейсами DRAM. Они, как правило, недоступны в небольших количествах и в корпусах BGA.
Крис Стрэттон