ucLinux VS uc/os

ucLinux

编译后的可执行文件可以控制在几百K量级

uClinux的内核可以在Flash上直接运行:就是把uClinux的内核的可执行映象烧写到flash上,系统启动时从 Flash的某个地址开始逐句执行;也可以加载到内存中运行:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。

采用了romfs文件系统作为root文件系统:这种文件系统相对于一般的ext2文件系统要求更少的空间,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,建立文件系统superblock需要更少的存储空间。Romfs文件系统不支持动态擦写,对于系统需要动态保存的数据采用RAM盘的方法处理,RAM盘采用ext2文件系统。

对硬件要求如下:

1.SDRAM 8M及以上

2.一个简易的串口

3.Flash 2M及以上

4.一个以太网接口(可选)

SRAM 2M以上。

还需要有片外FLASH或者SDRAM

创建进程其使用vfork()函数,使用其创建的进程相当于线程,所以其任务基本以线程进行

芯片要求:stm32f429及以上

uClinux可以使用Rt-linux的patch,从而增强uClinux的实时性,使得uClinux可以应用于工业控制、进程控制等一些实时要求较高的应用

uClinux重写了应用程序库,相对于越来越大且越来越全的glibc库,uClibc对libc做了精简

可以外扩SDRAM

能支持Compact Flash、SRAM、PSRAM、NOR、 NAND以及现在的SDRAM存储器。

MCU可提供从512MB的双块Flash到2MB的双块Flash

uClinux:开发者可以使用几乎所有的Linux API函数

它具有体积小、稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持

进程调度沿用Linux的时间片轮转方式

uclinux没有mmu管理存储器,所以对内存的访问是直接的,对于任务数量没有限制

uclinux继承了linux网络操作系统的优势,可以很方便的支持网络文件系统且内嵌tcp/ip协议。

关于移植

uClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂;相对uC/OS,uClinux的移植也复杂得多。

uClinux的移植大致可以分为3个层次。

结构层次的移植:如果待移植处理器的结构不同于任何已经支持的处理器结构,则需要修改linux/arch目录下相关处理器结构的文件。虽然uClinux内核代码的大部分是独立于处理器和其体系结构的,但是其最低级的代码也是特定于各个系统的。这主要表现在它们的中断处理上下文、内核映射的维护、任务上下文和初始化过程都是独特的。这些例行程序位于lunux/arch/目录下。由于Linux所支持体系结构的种类繁多,所以对一个新型的体系,其低级例程可以模仿与其相似的体系例程编写。

平台层次的移植:如果待移植处理器是某种uClinux已支持体系的处理器,则需要在相关体系结构目录下建立相应目录并编写相应代码。

板级移植:如果所用处理器已被uClinux支持,就只需要板级移植了。板级移植包括驱动程序的编写和环境变量设置等内容

大部分开发处于板级移植

Uc/os

编译后仅有几十K量级

对于芯片要求低,51也能跑。

实时性操作系统

任务调度方式:剥夺型

最多支持64个任务

uc/os内核是针对实时系统的要求设计实现的,

相对简单,可以满足较高的实时性要求.

没有网络协议,需要自行添加轻量级TCP/IP协议

没有MMU,所以对内存的访问也是直接访问。

Uc/os主要实现了任务管理机制。

系统本身并没有对文件系统的支持,但是具有良好的扩展性能,如果需要的话也可自行加入文件系统的容。

关于移植

要移植uC/OS,目标处理器必须满足以下要求:

处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断;

处理器支持中断,并能产生定时中断;

处理器支持足够的RAM(几KB),作为多任务环境下的任务堆栈;

处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。

总结

通过对uC/OS和uClinux的比较可以看出,这两种操作系统在应用方面各有优劣。uC/OS占用空间少、执行效率高、实时性能优良,且针对新处理器的移植相对简单。UClinux则占用空间相对较大,实时性能一般,针对新处理器的移植相对复杂。但是,uClinux具有对多种文件系统的支持能力、内嵌了TCP/IP协议,可以借鉴Linux丰富的开源资源,对一些复杂的应用,uClinux具有相当优势。操作系统的选择是由嵌入式系统的需求决定的。简单地说就是,小型控制系统可充分利用uC/OS小巧且实时性强的优势;如果开发PDA和互联网连接终端等较和为复杂的系统,则uClinux是不错的选择。

嵌入式系统之ucLinux与uc/os-II的比较相关推荐

  1. 【嵌入式系统—实时操作系统】uC/OS II源码的官网下载

    要下载源码为:STM32F107-uC/OS-II源码包 Micrium官网的下载地址:Micrium_uC-Eval-STM32F107_uCOS-II 怎么找? 到官网的产品专区目录入口查找STM ...

  2. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

  3. Lab 6:uC/OS II

    为什么80%的码农都做不了架构师?>>>    目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...

  4. uc/OS II——多任务设计

    uc/OS II--多任务设计 (1)设计 开始任务 [1]/声明 开始任务 任务块 static OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE]; ...

  5. uc os ii与linux,uC/OS-II嵌入式实时操作系统的几大特点

    uC/OS-II嵌入式实时操作系统的几大特点 出处:网络 发布于:2018-09-12 14:46:03 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,主要 ...

  6. 【嵌入式系统—实时操作系统】uC/OS-II 及其STM32F103移植

    你经历过吗? 背景 踏入嵌入式领域,我们往往首先接触的都是单片机编程,而51也往往成为了入门首选. 而这种单片机编程通常都是指裸机编程(轮询系统/前后台系统),即没有加入 RTOS (多任务的实时操作 ...

  7. linux串口互斥,UART0串口编程之在UC/OS—II中遭遇的危机

    一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来接收数据. 2.在进行串行通信时,双方遵循相同的通信 ...

  8. 关于任哲的《嵌入式实时操作系统uC/OS II原理及应用(第二版)》开发环境搭建和第一个例子

    第一步 需要下载一个BC3.1精简版搭配书上的开发环境 .下载地址:云盘链接 提取码 0a44.这儿下载下来的bc文件夹可以 放在任何位置,楼主将其放在了C盘的根目录下. 第二步 就是文件的代码了,代 ...

  9. 【 uC/OS II 】uC/OS II 源代码阅读(os_task.c)任务管理

    前言 这个任务管理源代码,是整个系统最核心的部分,也是最难的部分,多看几遍吧.其中的核心结构体是: typedef struct os_tcb {OS_STK *OSTCBStkPtr; /* Poi ...

最新文章

  1. TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
  2. 角色与网站地图的结合
  3. mysql添加两种数据类型_MySQL入门(二) 数据库数据类型详解
  4. 【深度学习笔记】Batch Normalization 以及其如何解决梯度消失问题
  5. python turtle库输出文字_python turtle库学习笔记
  6. ajax一直返回 error
  7. C4D插件X-Particles粒子特效(七)
  8. 常见计算机蓝屏代码,史上最全蓝屏代码分析,快速解决电脑常见故障,值得收藏!...
  9. 小项目2——(未登录)指定微博账号基本公开信息的搜集
  10. 莘城苑:面包种类选择
  11. CISC(复杂指令集)与RISC(精简指令集)的区别
  12. 改进排队买票多线程问题
  13. 【论文精读CVPR_2022】High-resolution Face Swapping via Latent Semantics Disentanglement
  14. 555定时器及其应用
  15. Dockerfile实践之多阶段构建
  16. 常用元器件参数解读1——二极管
  17. STC15系列单片机SPI使用教程(一)
  18. win8系统设置杜比音效的详细步骤--win7w.com
  19. 凡事过往,皆为序章2021-01-11
  20. 输入一段英文 然后统计一共有多少个单词(C语言)

热门文章

  1. C语言一些有趣的现象(例子) (译)
  2. 一直都在用的rgba与hex颜色系统你了解过吗?
  3. docker提交腾讯云标准模式
  4. python编程:从入门到实践(持续更新)
  5. 关于 @Aspect 注解的使用
  6. 区块链应用 | 一篇文章让你搞懂区块链,非标通证应用将首先落地
  7. 11个你不应该错过的JavaScript库
  8. Oracle日期函数add_months()、last_day()、months_between()的用法
  9. ArcGIS利用Model批量裁剪
  10. 软件工程师资格认证,你合格吗?