嵌入式系统之ucLinux与uc/os-II的比较
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的比较相关推荐
- 【嵌入式系统—实时操作系统】uC/OS II源码的官网下载
要下载源码为:STM32F107-uC/OS-II源码包 Micrium官网的下载地址:Micrium_uC-Eval-STM32F107_uCOS-II 怎么找? 到官网的产品专区目录入口查找STM ...
- UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机
UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...
- Lab 6:uC/OS II
为什么80%的码农都做不了架构师?>>> 目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...
- uc/OS II——多任务设计
uc/OS II--多任务设计 (1)设计 开始任务 [1]/声明 开始任务 任务块 static OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE]; ...
- uc os ii与linux,uC/OS-II嵌入式实时操作系统的几大特点
uC/OS-II嵌入式实时操作系统的几大特点 出处:网络 发布于:2018-09-12 14:46:03 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,主要 ...
- 【嵌入式系统—实时操作系统】uC/OS-II 及其STM32F103移植
你经历过吗? 背景 踏入嵌入式领域,我们往往首先接触的都是单片机编程,而51也往往成为了入门首选. 而这种单片机编程通常都是指裸机编程(轮询系统/前后台系统),即没有加入 RTOS (多任务的实时操作 ...
- linux串口互斥,UART0串口编程之在UC/OS—II中遭遇的危机
一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来接收数据. 2.在进行串行通信时,双方遵循相同的通信 ...
- 关于任哲的《嵌入式实时操作系统uC/OS II原理及应用(第二版)》开发环境搭建和第一个例子
第一步 需要下载一个BC3.1精简版搭配书上的开发环境 .下载地址:云盘链接 提取码 0a44.这儿下载下来的bc文件夹可以 放在任何位置,楼主将其放在了C盘的根目录下. 第二步 就是文件的代码了,代 ...
- 【 uC/OS II 】uC/OS II 源代码阅读(os_task.c)任务管理
前言 这个任务管理源代码,是整个系统最核心的部分,也是最难的部分,多看几遍吧.其中的核心结构体是: typedef struct os_tcb {OS_STK *OSTCBStkPtr; /* Poi ...
最新文章
- TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
- 角色与网站地图的结合
- mysql添加两种数据类型_MySQL入门(二) 数据库数据类型详解
- 【深度学习笔记】Batch Normalization 以及其如何解决梯度消失问题
- python turtle库输出文字_python turtle库学习笔记
- ajax一直返回 error
- C4D插件X-Particles粒子特效(七)
- 常见计算机蓝屏代码,史上最全蓝屏代码分析,快速解决电脑常见故障,值得收藏!...
- 小项目2——(未登录)指定微博账号基本公开信息的搜集
- 莘城苑:面包种类选择
- CISC(复杂指令集)与RISC(精简指令集)的区别
- 改进排队买票多线程问题
- 【论文精读CVPR_2022】High-resolution Face Swapping via Latent Semantics Disentanglement
- 555定时器及其应用
- Dockerfile实践之多阶段构建
- 常用元器件参数解读1——二极管
- STC15系列单片机SPI使用教程(一)
- win8系统设置杜比音效的详细步骤--win7w.com
- 凡事过往,皆为序章2021-01-11
- 输入一段英文 然后统计一共有多少个单词(C语言)