2012-05-18 19 views
9

我正在为我的系统使用ARM Cortex-R4。它有一个内存保护单元,而不是一个内存管理单元。实际上,这意味着有专门的硬件来保护内存,但是物理地址和虚拟地址之间存在一对一的映射关系。我有点困惑,我应该选择哪种Linux - 禁用MMU或uCLinux的标准Linux内核。在ARM Cortex-R4上运行无MMU的Linux

在ARM的评估板上,我运行了标准内核,禁用了MMU编译。我使用了官方ARM网站上提供的cramfs文件系统。内核启动后,我在外壳中,但我无法做太多的实验,因为我发现大多数情况下,外壳会停止响应(特别是当我按“选项卡”进行自动完成时)。

因此,如果我使用正确的文件系统,我仍然不确定无MMU内核是否应该顺利运行。另外,我应该使用哪个发行版(buildroot?)用于no-VM Linux?

欢迎任何想法或建议。

+0

听起来就像你需要弄清楚究竟是什么崩溃以及为什么,而不是猜测它是内核还是文件系统。如果你能获得第二条进入董事会的路径 - 比如说uart和网络,这将有所帮助,因为你可以看到一个人是否仍然活着,即使其他人挂起。你也可以做一些事情,比如让一个用户空间守护进程定期写入终端(甚至是内核模块printk)来说“还在这里” - 至少这会帮助你确定在系统的其他部分运行时你的shell是否挂起,或者内核挂起。或者响应一个gpio按钮... –

+0

printk()建议可能比用户空间进程更好。在真实模式下运行=虚拟模式充满挑战。我的投票是针对uCLinux的。 –

回答

2

uClinux的是一个Linux发行版,它使用Linux内核与MMU“关闭”,并增加了在上面的一些应用程序和库建成的。你不会选择一个或两个,因为它们是最好的。

如果你有一个shell运行的点,你已经设法在你的主板上启动Linux sans MMU,但遇到了一个bug。

6

我问这个问题已经有2年多了。现在是我应该写我为自己找到的东西的时候了。

ucLinux是Linux内核的一个分支项目,旨在为MMU less系统开发内核。但是,经过一段时间后,它被合并到了父Linux分支。所以,今天不存在任何活跃的ucLinux发行版。

因此,如果您从主线内核配置中禁用MMU,您将获得无MMU版本。实际上,现在在内核中提供了配置选项,用户可以指定内存布局和访问权限。

干杯!