2
\$\begingroup\$

The Cortex-M processors are getting faster and more powerful. The Cortex-M7 has just been announced. Yet these cannot run Linux (other than uCLinux) because the chips lack an MMU - Memory Management Unit.

Is there an external MMU chip? Wikipedia refers to the Motorola 68851 and Zilog z8015, but both are rather old. Ideally, an up-to-date version would allow you to add DIMM memory modules to an Arduino Due (as an example).

Is such a chip available? Or is this the kind of custom task you can only do with an FPGA?

\$\endgroup\$

migrated from stackoverflow.com Oct 6 '14 at 14:40

This question came from our site for professional and enthusiast programmers.

  • \$\begingroup\$ If you wanted to do it as a learning project, an FPGA would be a good choice. But this is seems unlikely to exist as a current product, since placing it in an external package would drastically increase costs. If you are designing something that needs a processor with an MMU, you simply chose one of the many offerings that has one. At an extreme, you license the core of interest and put in on your own chip next to your MMU design. \$\endgroup\$ – Chris Stratton Oct 6 '14 at 14:55
3
\$\begingroup\$

TL;DR: There's nothing which makes it technically impossible, but there are a number of limitations, and "real" ARM CPUs do a better job of this anyway.

The biggest difference between the older CPUs that were often paired with these MMUs and modern Cortex-M microcontrollers is that the memory bus was fully external on those CPUs: all memory reads and writes were visible on the bus, and could be manipulated by the MMU. This is not the case on Cortex-M microcontrollers: quite a bit of the 32-bit address space is reserved for internal memory and peripherals, and cannot be remapped.

Even where external memory interfaces are available, they only appear in part of the address space, and are often quite limited in size and application. For instance, on STM32F1xx microcontrollers, the FSMC can address up to 4 SRAM banks of up to 64 MB each, leaving you with only 256 MB of remappable address space.

The long and the short of it is that, if you want a MMU, you don't use a Cortex-M. You use one of the higher-end ARM CPUs that have an integrated MMU.

\$\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.