linux 在stm32等没有mmu机器上的运行原理

2019-12-14 13:31发布

最近论坛有个linux移植stm32 的帖子 ,然后谷歌了一下看到
http://nommu.org/
总结一下:
1.没有mmu的机器将会使用直接使用物理地址,所有程序将使用统一的地址空间
2.所有的应用程序必须编译成完全可重定向,就是动态链接库的编译原理,这样程序就可以被加载到任何地址运行
3.编译阶段必须固定栈区大小还必须要小,不然分配内存会有很大问题
4.内存频繁使用后将产生大量的内存碎片

简单的说多跑两次程序可能就没有足够多的连续空间可以用的了,看来没有mmu跑linux最大的问题还是内存碎片,现在也没什么好的解决方案

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
日日♂夜夜
1楼-- · 2019-12-16 08:27
 精彩回答 2  元偷偷看……
日日♂夜夜
2楼-- · 2019-12-16 14:06
myxiaonia 发表于 2018-8-6 15:24
请问用的什么原理来整理内存碎片,我感觉没有mmu,很难搞这个内存碎片整理啊,比如一段内存被某个程序占 ...

这个还没看到解决办法,也就是说没有mmu的很容易被内存碎片堵死
kaixinlaohe
3楼-- · 2019-12-16 17:37
内存碎片,没有mmu是非常难整理的。难点就在于,mmu将虚地址的那一次映射非常非常重要,它实际是将各个应用程序的空间隔离了。目前在没有mmu的芯片上,最好的办法就用一个内存池。这个ucLinux已经实现了。
kaixinlaohe
4楼-- · 2019-12-16 22:09
但问题是,ulinux实现的非常不完善。不规范的程序造成死机的现象大量的存在。大家都明白,用C写程序的人,是非常牛B,哪管保护不保护。都是往死里整。
kaixinlaohe
5楼-- · 2019-12-16 23:18
我想,这也是uclinux没有大量推广的原因。在这方面应用,uclinux和freertos是一个道理,没有什么不同。
kaixinlaohe
6楼-- · 2019-12-17 04:38
 精彩回答 2  元偷偷看……

一周热门 更多>