良许Linux教程网 干货合集 用于MCU/MPU的uCLinux与Linux有什么区别?

用于MCU/MPU的uCLinux与Linux有什么区别?

前不久,我给大家分享了一篇文章《为什么Linux比Windows更适合嵌入式系统》,主要从安全性和稳定性方面介绍了Linux和Windows之间的一些差异。

本文将进一步讲述uCLinux与Linux之间的一些差异。

一、关于uCLinux

uCLinux是指”micro-Control Linux”,是专为没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经成功地移植到许多不同的平台上。由于没有MMU,对于多任务的实现需要一定的技巧。

据百度百科的介绍,uClinux是一种针对控制领域的嵌入式Linux操作系统,它基于Linux 2.0/2.4内核,并继承了主流Linux的大部分特性。它适用于那些没有内存管理单元(MMU)的微处理器/微控制器。事实上,没有MMU的支持是uCLinux与主流Linux的基本差异之一。

二、有无MMU区别

如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到芯片引脚上,被内存芯片接收,这称为物理地址(Physical Address),如下图:

image-20231220210212060
image-20231220210212060

未使用MMU

如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址,如下图:

image-20231220210209422
image-20231220210209422

使用了MMU

对uCLinux 来说,其设计针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术。uCLinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。在加载应用程序时程序分页加载。但是由于没有MMU管理,所以实际上uCLinux采用实存储器管理策略。

uCLinux系统对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。

二、uCLinux与Linux其他区别

uCLinux与Linux相比,MMU是最基础的区别,其实还有很多区别。

1.没有内存保护

没有内存保护的操作会导致这样的结果:

即使由无特权的进程来调用一个无效指针,也会触发一个地址错误,并潜在地引起程序崩溃,甚至导致系统的挂起。显然,在这样的系统上运行的代码必须仔细编程,并深入测试来确保健壮性和安全。

对于普通的Linux来说,需要运行不同的用户程序,如果没有内存保护将大大降低系统的安全性和可靠性;然而对于嵌入式uClinux系统而言,由于所运行的程序往往是在出厂前已经固化的,不存在危害系统安全的程序侵入的隐患,因此只要应用程序经过较完整的测试,出现问题的概率就可以控制在有限的范围内。

2.没有自动生长的堆栈

uCLinux没有自动生长的堆栈,也没有brk()函数,这样,用户空间的程序必须使用mmap() 命令来分配内存。为了方便,在uclinux的C语言库中所实现的malloc()实质上就是一个mmap()。在编译时,可以指定程序的堆栈大小。

3.通用架构的内核不同

在uCLinux的发布中,/linux/mmnommu目录取代了/linux/mm目录.前者是修改后的内存管理子系统 被修改,去除了MMU的硬件依赖,并在内核软件自身提供基本的内存管理函数。

更多区别,大家可以进一步研究。

四、uCLinux和STM32

uCLinux主要用于MCU和MPU,对于市面上常见的STM32也是做了很好的支持。

image-20231220210205867
image-20231220210205867

关于uCLinux如何应用在STM32上,这里不详细讲述,感兴趣的可以自行网上了解,有很多相关资料。

image-20231220210203312
image-20231220210203312

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部