没有MMU,微内核是否可行?

时间:2017-01-23 02:49:33

标签: microkernel

在以下链接中; https://www.openhub.net/p/f9-kernel F9 Microkernel在Cortex M上运行,但Cortex M系列没有MMU。我对MMU和虚拟内存的了解有限,因此存在以下问题。

  1. 如何在没有MMU的情况下阻止整个物理内存的可见性?
  2. 是否可以在没有MMU的情况下使用某些静态内存设置实现隔离。 (有足够的片上RAM来运行我的应用程序和内核,只有不同的硬编码内存区域用于我的有限进程)。但是我仍然不会阻止访问吗?

2 个答案:

答案 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. 内存池,表示具有特定属性的PAS区域(在mem map表中硬编码)。
  2. 地址空间 - 绑定到特定线程的fpages的排序列表。
  3. 灵活页面 - 与L4中的传统页面不同,fpage代表MPU区域。

答案 1 :(得分:0)

是,但是....

根本不需要MMU,只是事情变得不太方便和灵活。实际上,任何提供某种形式的隔离(例如MPU)的东西都足以使系统正常工作-假设您确实需要隔离。如果您出于某种原因不需要它,而只想让内核进行调度,那么内核也可以在没有MMU或MPU的情况下执行此操作。