2
\$\begingroup\$

I am new to electronics and microcontroller programming and need either confirmation that my understanding on a few items is correct, or I am in desperate need of correction on them!

I have a C-based server that requires about 2GB RAM to function properly. I am interested in seeing if there's any way to flash this program to an ARM-based MCU, such as the Raspberry Pi or the STM32. If my understanding of MCU componentry is correct, the Raspberry Pi simply cannot handle this RAM demand, because its a Broadcom/ARM chip affixed to an SoC with fixed memory ICs.

However, it is also my understanding that non-SoCs such as the STM32 can be wired up to any kind of memory chip. I found these 4GB memory cards, and am wondering if it is possible to place one of these on a PCB alongside an ARM-based MCU, thereby allowing the ARM chip to actually run a very large program on it.

So I ask: is this possible to do? If not, why? How are they incompatible with each other? If so, how are they typically wired up? Does an engineer look at the datasheets for both chips and figure out the wiring/IO between them?

I guess at the end of the day, I'm wondering why there aren't more MCUs out there with crazy big memory; and I'm thinking it's either because most embedded/MCU programs don't need that much memory, or its because - for some reason - they can't.

\$\endgroup\$
  • \$\begingroup\$ While there certainly are ARM chips designed for external memory, the STM32 series isn't really an example - typically those have a few ten's of K of on-chip RAM, and talking off-chip would involve real compromises. You might look at development boards based on moderately current smartphone chips, but it's not clear that you'd save money over some small form factor PC motherboard. \$\endgroup\$ – Chris Stratton May 20 '15 at 1:58
2
\$\begingroup\$

The answer is economy.

The optimal processes for CPU and RAM are different, so when both are on the same chip some compromise must be found. For a small chip (not that much RAM) this does not hurt so much, less than adding an external RAM and using a lot of IO pins to interface to it. For a large RAM (currently the switchover seems to be at ~ 100Kb) it makes more sense to put the CPU and RAM on different chips. Making large RAMs is a very specialized high-volume buisiness, so better use what is there in the market than developm a new chip.

The RAM you link to is PC-style DDR3 dynamic RAM module. Such a module has a specific interface which is not compatible with the (old) standard address-lines + data-lines + control bus found on most MCU's. I think you would need a glue chip (bridge) to make such a connection. And yes, engineers read the specs and make the wiring (including anyb glue chips needed, power supply things, careful timing etc.) This might sound simple but it is not.

\$\endgroup\$
2
\$\begingroup\$

DRAM modules need a memory controller in order to both trigger refreshes and arbitrate access. That controller comes at a cost in wafer real estate, power consumption, and pin count.

SRAM modules do exist, but lose out to DRAM on both capacity (SRAM cells need 6 transistors versus DRAM's one transistor and one capacitor) and economy (lower demand = higher cost). But they're much easier to interface with, and almost every MCU family has at least one device with a simple external memory bus.

\$\endgroup\$
1
\$\begingroup\$

At 2GB, that's ceased to be "micro" (in the present day). There are plenty of phones shipping with less than that. Are you sure you really have 2Gb of live data? Can you swap it out to Flash? What on earth is it doing?

Have a look at What is a good choice for an ARM to interface with external memory? - but I think your best option is to get a single-board computer of some sort.

You can get SoCs with DRAM interfaces. They will tend to be unavailable in small quantities and in BGA packages.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.