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

2019-12-14 13:31发布

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

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
Excellence
1楼-- · 2019-12-17 07:06
kaixinlaohe 发表于 2018-8-6 20:40
我想,这也是uclinux没有大量推广的原因。在这方面应用,uclinux和freertos是一个道理,没有什么不同。 ...

你的意思,FREERTOS运行时间长或任务多,也会死机了???
浮华一生
2楼-- · 2019-12-17 12:41
日日♂夜夜 发表于 2018-8-6 18:05
linux基本除了进程和mmu相关的都是支持的
理论上你可以移植web服务器什么的 ...

其实我觉得意义也不太大,毕竟STM32的内存就那么点, 而Linux下大部分应用的内存使用都比较大的说。 能移植到STM32上来的 也应该有限。 当然扩展SDRAM另说
日日♂夜夜
3楼-- · 2019-12-17 15:32
浮华一生 发表于 2018-8-7 08:40
其实我觉得意义也不太大,毕竟STM32的内存就那么点, 而Linux下大部分应用的内存使用都比较大的说。 能移 ...

必须要外挂的..不然内核都加载不下
还有在普通arm移植一个小应用物理内存占用不是很高,但是虚拟内存占用是比较高的
对应到stm32就是要把所有的虚拟内存占用全部换成物理内存占用,所以对于内存的压力还是很高的
在stm32下64M内存可能都没有arm9下32M内存好用
浮华一生
4楼-- · 2019-12-17 20:35
日日♂夜夜 发表于 2018-8-7 09:11
必须要外挂的..不然内核都加载不下
还有在普通arm移植一个小应用物理内存占用不是很高,但是虚拟内存占用 ...

还有就是速度。不知道STM32的SDRAM能跑到好多。还有cache的加成。 实际效果感觉小牛拉大车。linux主要也是组件多,但是STM32有是有些吃力。 定位在单片机,还是干单片机的活比较好。 哈哈。
日日♂夜夜
5楼-- · 2019-12-18 01:22
 精彩回答 2  元偷偷看……
htjgdw
6楼-- · 2019-12-18 06:55
大家多虑了,我两年前就在STM32F429上运行了linux(我的STM32F429开发板成功运行Linux4.2(uClinux)),写点单片机级别的小程序在linux上运行完全没有问题(如果让STM32运行应用处理器运行的程序另当别论)。
我觉得Linus Torvalds大神肯定都想到了这些,要是问题这么明显,它也不会让Linux主线支持noMMU的。

一周热门 更多>