0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用于单片机的uCLinux和Linux有什么区别?

strongerHuang 来源:strongerHuang 2023-05-17 10:45 次阅读

uCLinux:micro-Control linux,即“针对微控制器领域中的Linux系统”。

uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。 ---来自百度百度

分享正文之前,给大家推荐一些嵌入式相关的招聘信息

uClinux是针对控制领域的嵌入式linux操作系统,它从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。适合不具备内存管理单元(MMU)的微处理器/微控制器,没有MMU支持是 uClinux与主流Linux的基本差异。

有无MMU区别

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

ce83bb08-f45b-11ed-90ce-dac502259ad0.png

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

ce890676-f45b-11ed-90ce-dac502259ad0.png

使用了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和STM32uCLinux主要用于MCU和MPU,对于市面上常见的STM32也是做了很好的支持。

ce9089d2-f45b-11ed-90ce-dac502259ad0.jpg

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

ce96f344-f45b-11ed-90ce-dac502259ad0.jpg

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7489

    浏览量

    151047
  • 单片机
    +关注

    关注

    6032

    文章

    44516

    浏览量

    632995
  • Linux
    +关注

    关注

    87

    文章

    11229

    浏览量

    208926
收藏 人收藏

    评论

    相关推荐

    用于单片机uCLinuxLinux什么区别

    uCLinux: micro-Control linux,即“针对微控制器领域中的Linux系统”。
    发表于 05-17 10:45 565次阅读
    <b class='flag-5'>用于</b><b class='flag-5'>单片机</b>的<b class='flag-5'>uCLinux</b>和<b class='flag-5'>Linux</b><b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    ARM和单片机什么区别

    ARM和单片机什么区别
    发表于 03-12 06:58

    单片机学习与基于ARM+Linux裸机学习什么区别

    单片机学习与基于ARM+Linux裸机学习什么区别
    发表于 01-19 07:44

    FPGA和单片机什么区别

    FPGA和单片机什么区别?好像性能参数上也差不了太多。
    发表于 11-02 07:34

    FPGA和单片机什么区别呢?

    到底FPGA和单片机什么区别呢?根据我的经验,可以用下面进行概述。
    发表于 02-11 08:00 4.3w次阅读

    单片机通信uart和modbus什么区别

    单片机通信uart和modbus什么区别,modbus是一个应用层的协议,他是构建在串口,网线等底层传输基础上的。uart只是串口协议而已。
    的头像 发表于 04-11 17:02 2w次阅读

    瑞萨单片机和51单片机什么区别

    瑞萨单片机和51单片机什么区别? 瑞萨单片机8位32位
    发表于 10-10 08:00 45次下载

    DSP与单片机到底什么区别

    什么区别看到某论坛一篇关于DSP和单片机区别的帖子,经过仔细整理,现在再次介绍DSP与单片机区别,同时让自己重温一下 DSP与
    发表于 09-24 17:18 6次下载
    DSP与<b class='flag-5'>单片机</b>到底<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>

    单片机中C51的关系与&&和位&的什么区别

    本文档的主要内容详细介绍的是单片机中C51的关系与&&和位&的什么区别
    发表于 07-09 17:40 1次下载
    <b class='flag-5'>单片机</b>中C51的关系与&&和位&的<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>

    51单片机中变量的存储类型什么区别

    本文档的主要内容详细介绍的是51单片机中变量的存储类型什么区别
    发表于 07-03 17:41 0次下载
    51<b class='flag-5'>单片机</b>中变量的存储类型<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>

    单片机中断与CPU的轮询什么区别

    单片机编程过程中,经常会使用到中断。那么,什么是单片机中断,它与CPU的轮询什么区别?在本文中,单片机开发工程师将对
    发表于 06-29 11:30 3595次阅读

    单片机和plc什么区别

    单片机和plc之间什么区别?首先单片机是芯片,不能独立使用。而PLC是由单片机组成的通用控制器,可以直接使用。
    发表于 07-20 09:47 9559次阅读

    单片机和PLC什么区别

    单片机和PLC什么区别
    发表于 11-13 19:21 11次下载
    <b class='flag-5'>单片机</b>和PLC<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    单片机和PLC什么区别

    单片机和PLC什么区别
    发表于 11-23 16:21 79次下载
    <b class='flag-5'>单片机</b>和PLC<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    Linux基础入门:单片机Linux什么不同吗

    我发现很多初学者只有单片机基础,甚至没有单片机基础。在学习Linux时,对很多概念比较陌生,导致不知道学什么,也不知道学了之后有什么用。所以小编在此分享此文。第1章 单片机
    发表于 12-07 17:36 4次下载
    <b class='flag-5'>Linux</b>基础入门:<b class='flag-5'>单片机</b>和<b class='flag-5'>Linux</b><b class='flag-5'>有</b>什么不同吗