在以下链接中; https://www.openhub.net/p/f9-kernel F9 Microkernel在Cortex M上运行,但Cortex M系列没有MMU。我对MMU和虚拟内存的了解有限,因此存在以下问题。
答案 0 :(得分:1)
ARM Cortex-M处理器缺少MMU,在某些实现中有可选的存储器保护单元(MPU),如STMicroelectronics的STM32F系列。
与其他L4内核不同,F9 microkernel专为仅MPU环境而设计,针对Cortex M3 / M4进行了优化,支持ARMv7受保护内存系统架构(PMSAv7)模型。符合PMSAv7标准的系统的系统地址空间受MPU保护。此外,可用RAM通常较小(大约256 KB),但可以借助bit-banding使用更大的物理地址空间(最多32位)。
受MPU保护的内存被划分为一组区域,支持的区域数量为IMPLEMENTATION DEFINED。例如,STM32F429提供了8个独立的内存区域。在PMSAv7中,最小保护区域大小为32字节,最大值为4 GB。 MPU提供完全访问权限:
MPU不匹配和权限违规会调用可编程优先级MemManage错误处理程序。
F9微内核中的内存管理可以分为三个概念:
答案 1 :(得分:0)
是,但是....
根本不需要MMU,只是事情变得不太方便和灵活。实际上,任何提供某种形式的隔离(例如MPU)的东西都足以使系统正常工作-假设您确实需要隔离。如果您出于某种原因不需要它,而只想让内核进行调度,那么内核也可以在没有MMU或MPU的情况下执行此操作。