stm32中用到的实时系统_适合STM32的三大嵌入式操作系统。
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。
1、μClinux
μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。
μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。
μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。
μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。
综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的stm32f103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而stmf103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。μClinux结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux是一个不错的选择。
2、μC/OS-II
μC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。
对于实时性的满足上,由于μC/OS-II内核是针对实时系统的要求设计实现的,所以只支持基于固定优先级抢占式调度;调度方法简单,可以满足较高的实时性要求。
在内存管理上,μC/OS-II把连续的大块内存按分区来管理,每个分区中都包含整数个大小相同的内存块,但不同分区之间内存的大小可以不同。用户动态分配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块放回到以前所属的分区,这样就消除了因多次动态分配和释放内存所引起的碎片问题。
μC/OS-II中断处理比较简单。一个中断向量上只能挂一个中断服务子程序ISR,而且用户代码必须都在ISR(中断服务程序)中完成。
ISR需要做的事情越多,中断延时也就越长。
内核所能支持的最大嵌套深度为255。
在文件系统的支持方面,由于μC/OS-II是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II具有良好的扩展性能,如果需要也可自行加入文件系统的内容。
在对硬件的支持上,μC/OS-II能够支持当前流行的大部分CPU,μC/OS-II由于本身内核就很小,经过裁剪后的代码最小可以为2KB,所需的最小数据RAM空间为4 KB,μC/OS-II的移植相对比较简单,只需要修改与处理器相关的代码就可以。
综上可知,μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,针对于没有MMU功能的CPU,它是非常合适的。它需要很少的内核代码空间和数据存储空间,拥有良好的实时性,良好的可扩展性能,并且是开源的,网上拥有很多的资料和实例,所以很适合向stm32f103这款CPU上移植。
3、eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。
在实时性反面,由于eCos调度方法丰富,提供了两种基于优先级的调度器(即位图调度器和多级队列调度器),允许用户在进行配置时选择其中一个调度器,适应性好。因此在实时性方面表现良好。
在内存管理上eCos对内存分配既不分段也不分页,而是采用一种基于内存池的动态内存分配机制。通过两种内存池来实现两种内存管理方法:一种是变长的内存池;另一种是定长的内存池,类似于VxWorks的管理方案。
在中断管理上eCos使用了分层式中断处理机制,把中断处理分为传统的ISR(中断服务程序)和滞后中断服务程序DSR(递延服务程序)。类似于μClinux的处理机制,这种机制可以在中断允许时运行DSR,因此在处理较低优先级中断时允许高优先级的中断和处理。为了极大地缩短中断延时,ISR应当可以快速运行。如果中断引起的服务量少,则ISR可以单独处理中断;如果中断服务复杂,则ISR只屏蔽中断源,然后交由DSR(递延服务程序)处理。
eCos操作系统的可配置性非常强大,用户可以自己加入所需的文件系统。eCos操作系统同样支持当前流行的大部分嵌入式CPU,eCos操作系统可以在16位、32位和64位等不同体系结构之间移植。eCos由于本身内核就很小,经过裁剪后的代码最小可以为10 KB,所需的最小数据RAM空间为10 KB。
在系统移植方面 eCos操作系统的可移植性很好,要比μC/OS-II和μClinux容易。
综上所述,eCos最大特点是配置灵活,并且支持无MMU的CPU的移植,开源且具有很好的移植性,也比较合适于移植到stm32平台的CPU上。但eCOS的应用还不是太广泛,还没有像μC/OS-II那样普遍,并且资料也没有μC/OS-II多。eCos适合用于一些商业级或工业级对成本敏感的嵌入式系统,例如消费电子领域中的一些应用。
stm32中用到的实时系统_适合STM32的三大嵌入式操作系统。相关推荐
- stm32中用到的实时系统_基于STM32平台的实时操作系统
基于STM32平台且满足实时控制要求操作系统,有以下5种可供移植选择,分别为μClinux.μC/OS-II.eCos.FreeRTOS和都江堰操作系统(djyos). 下面分别介绍这五种嵌入式操作系 ...
- stm32中用到的实时系统_基于STM32的实时语音处理系统设计
基于 STM32 的实时语音处理系统设计 [摘要]设计一个基于 STM32 的实时语音处理系统.硬件模块通过放大. 除杂完成将语音信号转换成处理器能够进行高效处理的有效数字信号, 软件部分 主要涉及到 ...
- 优先级调度算法实现_一篇讲透嵌入式操作系统任务调度
进互联网公司操作系统和网络库是基础技能,面试过不去的看,这里基于嵌入式操作系统分几章来总结一下任务调度.内存分配和网络协议栈的基础原理和代码实现. 处理器上电时会产生一个复位中断,接下来会执行复位中断 ...
- 嵌入式操作系统_一个C++版的嵌入式操作系统
现世面上流传着很多嵌入式操作系统,都已经非常优秀,但本人(Sam的博客-博客园)还是自己编写了一个RTOS,不敢说优秀,但绝对是使用起来最简单的.先看一个工程截图与一段main.cpp代码 #incl ...
- 基于stm32的简单小项目_适合小白做的创业3个小项目,简单上手
现在每一位为了能够让自己和家人过上更好地生活,都会不满足于现状的单方面地工作,想要通过创业来改变如今的局面,这种想法也是好的,但是我们需要知道想要创业,并不是那么的容易,需要有一定的技能和管理水平才能 ...
- stm32中用到的实时系统_RALM: 实时 look-alike 算法在推荐系统中的应用
0. 导语 本论文题为<Real-time Attention based Look-alike Model for Recommender System>,作者 Yudan Liu, K ...
- 适合STM32的三大嵌入式操作系统
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择.分别为μClinux.μC/OS-II.eCos.FreeRTOS和都江堰操作系统(djyos).下面分别介绍这五种嵌入式操作系统的特 ...
- stm32怎么加载字库_收藏 | STM32单片机超详细学习汇总资料(二)
点击"蓝字"关注我们 3110月 收藏 | STM32单片机超详细学习汇总资料(一) ◆41.DMA仲裁器分为软件和硬件两种.软件部分分为4个等级,分别是很高优先级.高优先级.中等 ...
- stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...
这是我第一次在这个论坛上发表东西,其实本人进入芯片的世界的时间并不长,从接触51单片机到现在还不到一年,所以可以算是小白啦~想了很久,总算拿出在论坛大牛前献丑的无比勇气,写起该帖:dizzy::diz ...
最新文章
- ​Xamarin iOS教程之视图显示图像
- 启动Mysql时发生的一个关于PID文件错误问题
- css入门教程 网页首字下沉,CSS制作首字下沉_CSS Inline Layout Module, initial-letter, CSS3 教程_w3cplus...
- 工作108:vue里面wangEdit编辑器使用
- 1049. 数列的片段和(20)
- win10系统同时安装python2和python3
- 【LeetCode】剑指 Offer 48. 最长不含重复字符的子字符串
- LeetCode算法题-Design LinkedList(Java实现)
- windows全部启动项
- 最简单解决jpa自动生成表后字段乱序问题
- matlab神经网络常用函数
- Win10企业版激活方法
- ant如何形成时间轴和图库_弯弓新媒体创始人梅波:企业如何构建私域流量
- 树莓派开发笔记(十):Qt读取ADC模拟量电压(ADS1115读取电压模拟量)
- DBeaver打开sql文件中文乱码问题解决
- 计算机室英语单词怎么读,计算机英语单词怎么读
- centos7 安装mysql5.7.37 实操说明
- 打麻将技巧测试软件apk,打麻将技巧学习,记住这10句打麻将技巧,让你稳赢不输...
- 祝福计算机学院十周年快乐用英语怎么说,计算机学院自动化专业十周年 庆典及颁奖典礼隆重举行...
- 浏览器缓存 from memory cache与from disk cache详解
热门文章
- golang go build 报错 import cycle not allowed
- linux c 命令行解析函数 getopt getopt_long
- 3W法—what,why,how的运用
- ARM通用NEON多媒体处理SIMD引擎
- VC 中字符串比较和查找
- hypercall的实现机制与硬件虚拟化
- socket sock inet_sock 等关系
- hypercall的实现机制
- juddi MySQL_JUDDI v3部署并连接MySQL数据库
- 英雄探长的机器人怎么拼_LOL路人局都畏惧的辅助英雄,新版机器人布里兹上手指南...