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

2019-12-14 13:31发布

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

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
modbus
1楼-- · 2019-12-18 10:06
现在的ARM9比M4单片机还便宜,既然都上linux,还有必要吊死在单片机上
日日♂夜夜
2楼-- · 2019-12-18 10:10
modbus 发表于 2018-8-7 09:31
现在的ARM9比M4单片机还便宜,既然都上linux,还有必要吊死在单片机上

这倒是,我们用的海思成品板卡也就60多还有8Mflash和网卡..
唯一的问题是达不到我们老板说的1S启动和工业温度...
jameszxj
3楼-- · 2019-12-18 11:23
内存碎片的问题应该没有那么大吧,以前的很多片子都没有MMU,
1、内存碎片算法是有一定的作用的,
2、内存池
3、尽量避免动态内存分配

我更同意楼上moudbus大虾的观点,我用MCU基本都是考虑单片就能搞定的应用,
何必在单片机上跟Linux较劲呢,上CMSIS-RTOS、freertos等系统多好,多快好省。
考虑linux下的开源应用支持就上个MPU算了。

dr2001
4楼-- · 2019-12-18 12:56
 精彩回答 2  元偷偷看……
modbus
5楼-- · 2019-12-18 17:59
日日♂夜夜 发表于 2018-8-7 09:40
这倒是,我们用的海思成品板卡也就60多还有8Mflash和网卡..
唯一的问题是达不到我们老板说的1S启动和工业 ...

这启动速度要求太变态了
yunqing_abc
6楼-- · 2019-12-18 18:52
modbus 发表于 2018-8-7 12:03
这启动速度要求太变态了

我现在用单片机,光初始化一堆参数,都不止1S了

一周热门 更多>