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

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),如下图:
未使用mmu   如果处理器启用了mmu,cpu执行单元发出的内存地址将被mmu截获,从cpu到mmu的地址称为虚拟地址(virtual address),而mmu将这个地址翻译成另一个地址发到cpu芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址,如下图:
使用了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也是做了很好的支持。
关于uclinux如何应用在stm32上,这里不详细讲述,感兴趣的可以自行网上了解,有很多相关资料。


WiMAX在IPTV接入中的优势分析
D类放大器的多级EMI消减技术
信号继电器的选型要求,信号继电器的选型注意事项
多种PLC之间跨网段通讯的解决方案
用于12/48V DC/DC转换的正确封装
用于单片机的uCLinux和Linux有什么区别?
什么是DPT中的Odd Cycle问题?它会有什么问题?该如何解决?
BOE(京东方)助力北京环球度假区打造智慧化主题园区
iOS10.3.3正式版发布 或许是最后一个iOS10版本
AR/VR热潮下 各种新设备层出不穷
泰克TEKTRONIX交直流电流探头TCP0150的安装及使用方法
基于CMOS的图像传感器如何在不影响分辨率的情况下扩大模具尺寸
中国联通联合各家合作伙伴共同发布了基于GBA的证书配置白皮书
沃尔玛推出名为Alphabot的自动仓储机器人
NP2018DR(20v n沟道增强型MOSFET)
北航校友企业四象科技成功发射三颗卫星
一个不输于手机触控显示屏的市场将要出现
2024年日本半导体制造商将新建晶圆制造工厂
串口屏的工作原理及应用领域
医疗废物智能收集车实用性