适合嵌入式stm32的五大操作系统解析

发布者:DelightfulSmile最新更新时间:2023-01-03 来源: zhihu关键字:嵌入式  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是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。

  μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。

  μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。

  在对硬件的支持上,由于μClinux继承了Linux的大部分性能,所以至少需要512KB的RAM空间,lMB的ROM/Flash空间。

  在μClinux的移植方面,。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了需要修改与处理器相关的代码外,还需要足够容量的外部ROM和RAM。

  综上可知,μ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适合用于一些商业级或工业级对成本敏感的嵌入式系统,例如消费电子领域中的一些应用。

  4、FreeRTOS

  由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。

  作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。 FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。 FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用 时间。

  FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当 FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当 FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行 效率。

  FreeRTOS的移植:

  FreeRTOS操作系统可以被方便地移植到不同处理器上工作,现已提供了ARM、MSP430、 AVR、PIC、C8051F等多款处理器的移植。FrceRTOS在不同处理器上的移植类似于μC/0S一II,故本文不再详述FreeRTOS的移 植。此外,TCP/IP协议栈μIP已被移植到FreeRTOS上,具体代码可见FreeRTOS网站

  FreeRTOS的不足:

  相对于常见的μC/OS—II操作系统,FreeRTOS操作系统既有优点也存在不足。其不足之处, 一方面体现在系统的服务功能上,如FreeRTOS只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方 面,FreeRTOS只是一个操作系统内核,需外扩第三方的GUI(图形用户界面)、TCP/IP协议栈、FS(文件系统)等才能实现一个较复杂的系统, 不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等无缝结合。

  5、都江堰操作系统(djyos)

  都江堰操作系统,简称djyos,得名于一个伟大的水利工程:都江堰。

  与传统操作系统不同,djyos不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。djyos的调度算法使程序员可以摆脱线程和进程的束缚,djyos没有有关线程的api,一个完全不懂线程知识的程序员也可以顺利地在djyos下编写应用程序。

  djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。

  普通操作系统中,调度是以线程为核心的,事件被作为线程的数据,标榜为“事件触发”的软件模型,也是由线程在一旁候着,待特定事件发生时线程恢复运行并把它作为输入数据加以处理。

  以事件为核心的调度,则像设备和内存一样,把线程虚拟机作为处理事件所需要的资源看待,当某事件需要处理时,分配或者创建一个线程虚拟机给该事件,并启动该线程虚拟机处理事件。

  djysiV0.4.2发布,增加stm32版本的支持,能够移植到cortex-m3 上(芯片为 stm32f103 )。该系统适合于工业控制。系统源代码开放,但并不是永久免费。

  由上所述,对于stm32f103来说,移植μC/OS-II、eCos、FreeRTOS、都江堰操作系统是合适的。


关键字:嵌入式  stm32  操作系统 引用地址:适合嵌入式stm32的五大操作系统解析

上一篇:STM32 DMA串口发送模式配置及使用简单分享
下一篇:STM32的几种输入模式以及外部中断的配置

推荐阅读最新更新时间:2024-11-11 10:29

STM32 I2C总线通信与SPI总线通信专题讲解
总线介绍: I2C(Inter-Integrated Circuit)总线(也称IIC或I2C)是由PHILIPS公司开发的两线式串行总线(单双工),用于连接微控制器及其外围设备,在这两根线上可以挂很多设备,同一时刻只能有一个节点处于主机模式,其他节点处于从机模式,总线上数据的传送都由主机发起。I2C总线没有片选信号线,所以需要通过协议来找到对应操作的芯片。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,期间封装形式少,通信速率高等优点。 总线特征: 1.两条总线线路:一条串行数据SDA,一条串行时钟线SCL(主从设备使用同一时钟,属于同步通信)来完成数据的传输及外围器件的
[单片机]
<font color='red'>STM32</font> I2C总线通信与SPI总线通信专题讲解
泰克为嵌入式系统、航空和汽车工程设计提供分析解决方案
测量解决方案提供商——泰克科技公司日前为5系列混合信号示波器(MSO)推出多种新型选项,包括面向航空和汽车市场的功率分析解决方案、汽车以太网测试解决方案以及串行触发和解码解决方案。这些最新解决方案全面利用5系列混合信号示波器(MSO)的关键创新,包括最多8条输入通道、12位分辨率及大型高清容性触控显示器和高度直观的直接访问用户界面。 重新定义中端示波器 新功能扩展了5系列混合信号示波器(MSO)支持的应用,提供了大量的创新技术,重新定义了中端示波器。这些创新技术包括:业界第一个FlexChannelTM技术,支持4、6或8个模拟通道及最多64个数字通道,集成协议分析和信号发生器,新型12位ADC信号采集系统,15.6英寸容
[测试测量]
ARM嵌入式孤立词语音识别系统电路设计
语音识别技术就是能使计算机“听瞳“人类的语言,然后根据其义来执行相应的命令,从而实现为人类服务。随着语音识别的深入研究,对它的技术应用主要有两个方面:一个方向是大词汇量连续语音识别系统,主要应用于计算机的听写机,以及与电话网或互联网相结合的语音信息查询服务系统,这些系统都是在计算机平台上实现的;另外一个重要的发展方向是小型化、便携式语音产品的应用,这些应用系统大都使用专门的硬件系统实现。随着后PC年代的到来,后一种发展将成为语音识别技术和嵌入式系交叉研究的一个非常热门的话题,将进一步推动语音识别技术往智能化方向发展。 音频接口原理图 系统采用的音频编解码器是UDAl341t33I。UDAl341是一个单片模数和数模转换器,带
[单片机]
ARM<font color='red'>嵌入式</font>孤立词语音识别系统电路设计
发现STM32的SPI2有问题(invalid)
最近需要用到SPI1和SPI2协同工作,想弄个2位的SPI通信: 硬件的接线如下: SPI1.SCK - DEV.SCK SPI1.SCK - SPI2.SCK SPI1.MOSI - DEV.MOSI SPI1.MISO - DEV.MISO SPI2.MISO - DEV.MOSI SPI2.MOSI - DEV.MISO 将SPI1设置为Master方式,将SPI2设置为Slave。 设置为CPOL=0,CPHA=0(就是不传输的时候时钟是低电平,上升沿采样,下降沿更新数据)。 具体的配置就不贴了,在stm32fwlib的例子里面有。 注意:官方和网上能用的配置都是SPI1是Slave、SPI2为Master!接下来会说。
[单片机]
发现<font color='red'>STM32</font>的SPI2有问题(invalid)
STM32系统时钟硬件仿真查看
前几天回校调试基于407的程序,以前都是在别人的程序基础上面改写只要能实现想要的功能不会管其他的,结果基本就没用用过硬件JLINK的硬件仿真,那晚蔡师姐帮忙一直弄到夜里12点多,真的很感谢她 后来师姐帮我发现那块板子的系统时钟不是原以为的时钟168MHZ。后来用107程序查看了下发现那种查看系统时钟的方法是可行的,今晚我用103也查看了下系统时钟也是所想象的72MHZ. 闲话少说,下面粘上一个简单查看当前单片机系统时钟的小技巧,希望得到更多指引 1.在主程序里面的最前面假如下面俩行代码: int main(void) { RCC_ClocksTypeDef RCC_Clocks; RCC
[单片机]
<font color='red'>STM32</font>系统时钟硬件仿真查看
使用STM32GPIO端口点亮LED灯(库函数)
1,先定义GPIO端口结构体 GPIO_InitTypeDef LED_GPIOA_InitStruct; 2,使用GPIO端口指定要使用的结构体 LED_GPIOA_InitStruct.GPIO_Pin = GPIO_Pin_2; //指定第2引脚 3,同上设置输出或输入的方式 LED_GPIOA_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出 4,同上设置输出速度 LED_GPIOA_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //设置速度为50HZ 5,调用GPIO初始化函数,完成上述设置的初始化 GPIO_I
[单片机]
使用STM32GPIO端口点亮LED灯(库函数)
STM32启动文件总结
一、ARM控制器一些启动简介 ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令,执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况: 1、通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处; 2、通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处; 3、通过boot引脚设置可以将中断向量
[单片机]
基于DSP的嵌入式数字摄像夜间能见度测量系统
摘要: 数字摄像夜间能见度仪的关键技术之一在于高速、实时地处理CCD采集的目标光源和黑体的图像信息。设计了一种基于TMS320DM642的小型化、便携嵌入式能见度测量系统,从硬件和软件上给于实现,并将其应用到数字摄像夜间能见度测量中。利用CCD采集25帧/s的PAL制视频流,数字化后送入DSP处理器,通过DSP实现目标光源与黑体的图像分割与定位算法,完成数字摄像夜间能见度的测量。实验结果表明设计的嵌入式系统能较好完成夜间能见度的测量。    关键词: DSP;图像处理;夜间能见度;嵌入式系统    0 引言   能见度是气象观测中的重要参数,其对于航空航天、铁路、公路等具有重要的应用价值。数字摄像法是根据能见度定义以及人眼视
[模拟电子]
基于DSP的<font color='red'>嵌入式</font>数字摄像夜间能见度测量系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved