2012-05-18 20 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版本。實際上,現在在內核中提供了配置選項,用戶可以指定內存佈局和訪問權限。

乾杯!