Virtual memory and MMU confusion in embedded systems

时间:2018-04-18 18:07:14

标签: memory-management embedded microcontroller mmu cortex-a

Does it make sense, or can we benefit from having an MMU (Memory Management Unit) on a microcontroller if not running an Operating System of any sort?

Take for example the ARM Cortex A8 based chip used on the beaglebone board for example which includes an MMU. From my understanding, this provides the benefit that can allow us to run embedded Linux for example or some other OS.

My confusion is, is the MMU much use to us if we don't use an OS? From my understanding, virtual memory is a memory management technique that is provided by both hardware and software working together. Do we need the OS to continuously update and change the mapping of physical addresses to virtual addresses, or can this be done in just hardware? Thanks in advance.

1 个答案:

答案 0 :(得分:3)

MMU可以分配诸如只读,读写,无效和可缓存性等属性。例如,如果在启用缓存的系统上使用DMA传输,后者是必不可少的,如果应用程序访问不存在的内存,则设置地址范围无效可以确保异常。它还可以用于阻止访问您的应用程序未使用的外围设备 - 再次更可能为错误的应用程序生成异常。将ROM空间设置为只读具有类似的错误捕获优势。

这些可能不是很大的好处,但是如果你有一个MMU,你也可以使用它,即使它是一个很大程度上是静态的配置。例如,在低端Cortex-M器件上使用MPU可以实现相同的好处 - 基本上将MMU用作MPU。

这种简单的MMU使用方法适用于无操作系统和相对简单的RTOS / IPC执行程序 - 其中许多都没有全面的MMU支持。

甚至可以在没有操作系统的情况下实现交换文件系统,但如果您需要那么大的地址空间,您的应用程序可能会从操作系统中受益,或者您将自己构建自己的一半。