1
\$\begingroup\$

Please forgive my ignorance, as am very new to this. I am looking to build a custom PCB and have found several low-power modules with internal MCUs.

Is there an easy/quick way to determine whether these MCUs support external memory? From my research, they tend to have embedded RAM/ROM, but my application will require 4 - 8G.

This chips in particular are: 1. http://www.ti.com/product/cc430f5137 2. http://www.atmel.com/devices/AT90USB1286.aspx

Thank you!

\$\endgroup\$
8
  • 3
    \$\begingroup\$ Any MCU can support external memory. You should describe how you're going to use it instead. \$\endgroup\$ Commented Apr 28, 2014 at 5:49
  • \$\begingroup\$ 4-8 G. "G" what? Giga-bytes? (1 GB = 1'073'741'824 bytes). If parallel bus is used: 4GB requires 32 lines of address. 8GB=33. \$\endgroup\$
    – Blup1980
    Commented Apr 28, 2014 at 6:01
  • 1
    \$\begingroup\$ Key question is how you'd like to address the memory. Is access using a SPI, I2C or other bus ok using a specific function in software, or do you need the external RAM mapped to the MCU's memory addresses so your code can use it as if it were normal RAM? Do you need volatile (RAM) or non-volatile memory? Do you want to store and run code from the memory? \$\endgroup\$
    – RJR
    Commented Apr 28, 2014 at 6:11
  • \$\begingroup\$ @IgnacioVazquez-Abrams, I'd like to install a linux kernel on it. \$\endgroup\$
    – user40845
    Commented Apr 28, 2014 at 6:19
  • 1
    \$\begingroup\$ Umm...... you need more than just external memory for that. You also need an architecture that the kernel supports (or at least be willing to port it). \$\endgroup\$ Commented Apr 28, 2014 at 6:22

2 Answers 2

4
\$\begingroup\$

The chips you referred to are in the TI 430 family which is a 16-bit architecture. You are going to need either 32 or 64-bit chips to support GB of external memory.

If you want the external memory to be mapped into the address space of the MCU, then you need to find one that has an MMU (memory management unit). The widest selection of processors that have MMUs (besides the 80x86 and AMD processors used in PCs) are the various ARM architectures.

For RAM, You will want to look at various ARM processors with external memory interfaces, such as 32-bit DDR3, which is the same kind of RAM you might find in a PC. You should search for "32-bit ARM DDR3" or similar.

Here is an example of an ARM processor with such an interface, and here is a document that explains the memory interface in detail. This is an older processor (ARM5) and older memory (DDR2), but I chose it because of the good explanation of the processor-memory interface.

Most Linux systems boot up from some a bootloader, and then copy the Linux kernel etc. off of a filesystem contained on an SD card (for example) into RAM to execute. If you added a battery back-up system to your external RAM, you could make it non-volatile, and not have to boot up every time.

Its not clear from your post whether you want external RAM, Flash, or both. In addition to the RAM options you can also check out external flash options by searching for "ARM ECC NAND flash". (The ECC stands fro error-correcting code, which is needed for large flash memories.)

Unless you really really want to build your own Linux-compatible system, which is going to be a lot of work, I suggest you look at one of the existing open-source systems such as BeagleBone Black. It has less memory than you are looking for, but since the design is open-source, you might be able to expand it.

Typical Linux systems have maybe half a GB of RAM and a couple GB's of Flash. What is your application that requires 4 to 8 GB of external memory?

\$\endgroup\$
2
  • \$\begingroup\$ But even so, the limit would be 4GB. And there aren't many AArch64 chips in the wild yet. \$\endgroup\$ Commented Apr 28, 2014 at 6:42
  • \$\begingroup\$ @IgnacioVazquez-Abrams His lower limit is 4 GB. In any case, he's got quite a project ahead of him. \$\endgroup\$
    – tcrosley
    Commented Apr 28, 2014 at 6:45
4
\$\begingroup\$

You ask about MCUs, which means microcontroller unit. The definition of a microcontroller is pretty much that it has internal self-contained program and data memory. There are a few relatively unusual microcontrollers out there that allow extending the program or data address space via external memory, but then you're not really using them as microcontrollers anymore. In fact, this is often referred to as microprocessor mode. Even then, you are still likely left with the relatively small address space of the microcontroller.

However, you can implement any size memory you want with just about any microcontroller, just that the CPU won't be able to natively access it via its instructions. There is nothing preventing you from using some of the microcontroller I/O pins to implement memory access busses for external memory. It then takes code that you write on the micro to read and write words of that memory. Reading and writing the memory from the application would then be via subroutine calls or possibly macros.

This method is fine if the memory is used for data. Access to it will be slower than to the native data memory, but its size is only limited to what you choose to implement externally. Addresses to this memory can use as many bits inside the micro as you need.

If you are thinking this memory would contain programs, then that won't work as well. The micro won't be able to natively execute instructions from the memory. However, if program size is the main issue and speed is not so important, then you can have your own code act as a interpreter to execute instructions stored in the external memory in a virtual machine implemented in native code.

However, none of this will likely get you what you want since you say "my application will require 4-8 G". You don't say what "G" means, but if that is just a erroneous way of saying GB then a larger more general purpose microprocessor is more suited to your problem. Designing a computer using a general purpose microprocessor is a lot more complicated than hooking up a microcontroller. I'd look into off the shelf single-board computers for this need. Unless this needs to be physically small, a normal PC seems to fit your requirements.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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