0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32嵌入式开发中的RTOS,你用过哪些?

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-09-18 16:21 次阅读

1、FreeRTOS

由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。

相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。

作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。

FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。

FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

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

wKgZomUD9NKAE7_VAAMiYz10eHc405.png

STM32CubeIDE中直接可以配置FreeRTOS,如上图。STM32使用FreeRTOS的相关文章,请移步此处:使用STM32CubeMx工具,写FreeRTOS的demo程序。

FreeRTOS资料多、生态活跃,在Cube中通过配置界面,三两下上手这款操作系统,推荐拿来入门。

基于不同的需求,下文再介绍下其他RTOS。

2、μClinux

μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。

同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。

μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。

综上可知,μClinux最大特点在于针对无MMU处理器设计,这对于没有MMU功能的STM32F103来说是合适的,但移植此系统需要至少512KB的RAM空间,1MB的ROM/FLASH空间,而STM32F103拥有256K的FLASH,需要外接存储器,这就增加了硬件设计的成本。

μClinux结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux是一个不错的选择。

wKgZomUD9NSAd9wjAAMrLmaZx6c078.png

3、μC/OS-II

μC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。

在文件系统的支持方面,由于μ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上移植。

wKgaomUD9NaAMDBEAAVVQrT8Bgs748.png

4、eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。

最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。

每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。

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

5、mbed OS

开源嵌入式操作系统,ARM公司将mbed OS免费提供给所有厂商使用,mbed提供了一个相对更加系统和更加全面的智能硬件开发环境。

主要功能:

提供用于开发物联网设备的通用操作系统基础,以解决嵌入式设计的碎片化问题。支持所有重要的连接性与设备管理开放标准,以实现面向未来的设计。使安全可升级的边缘设备支持新增处理能力与功能。通过自动电源管理解决复杂的能耗问题。

主要特点:

开发速度快,功能强大,安全性高,为了量产化而设计,可离线开发,也可以在网页上编辑。

wKgaomUD9NmAG4wqAAIRbFCsMMs185.png

6、RTX

是ARM公司的一款嵌入式实时操作系统,使用标准的C结构编写,运用RealView编译器进行编译。不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。

主要功能:

开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。

主要特点:

支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。

7、都江堰

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

与传统操作系统不同,djyos不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。

djyos的调度算法使程序员可以摆脱线程和进程的束缚,djyos没有有关线程的api,一个完全不懂线程知识的程序员也可以顺利地在djyos下编写应用程序。

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

wKgaomUD9NuAPmsSAAWqd7anE60098.png

8、RT-Thread

嵌入式操作系统RTOS介绍,RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。

RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

国内最有可能成为Top 1,优势在于丰富的组件,中立立场!赶上了时机,得到诸多芯片厂商的支持,也挺受开发者喜欢的。缺点在于本身的教程文档和freertos等之类的比还是很弱。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206560
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121877
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • 嵌入式开发
    +关注

    关注

    18

    文章

    977

    浏览量

    46958
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118796
收藏 人收藏

    评论

    相关推荐

    嵌入式开发要学什么内容 嵌入式开发学习路线介绍

    ,原理,以及其汇编指令,我们在嵌入式开发,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。  5、系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植
    发表于 03-01 10:13

    嵌入式开发要学什么内容 嵌入式开发学习路线介绍

    其汇编指令,我们在嵌入式开发,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。  5、系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部
    发表于 06-30 10:07

    嵌入式开发要学什么内容 嵌入式开发学习路线介绍

    其汇编指令,我们在嵌入式开发,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。  5、系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件
    发表于 07-27 09:49

    什么是嵌入式开发?

     近几年,计算机嵌入式受到越来越多的人青睐,那么什么是嵌入式开发呢,嵌入式开发有很多个层次,大致有以下步骤:  硬件道路:  第一步: 嵌入式开发 pcb设计,一般为
    发表于 10-13 15:27

    labview嵌入式开发STM32 (ARM)

    `简介labview的开发能力用过的人都知道,很强大,当labview遇上ARM嵌入式开发时又会碰撞出什么样的火花?开发教程请参考《STM32
    发表于 05-07 15:43

    嵌入式开发累不累?

    、高频、通信……会做你就上!给你个嵌入式工程师的头衔就是软件硬件小能手,堪比全栈工程师。嵌入式实际上是软硬结合的一项领域,既要懂硬件又要懂软件。做
    发表于 09-15 16:04

    EG3关于嵌入式开发的站点

    1.EG3 关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp
    发表于 07-13 09:51

    ThreadX-RTOS嵌入式开发

    的。ThreadX还包含了NETX、GUIX、FILEX、USBX等丰富的组件,几乎包含了嵌入式开发的所有场景,这些组件和ThreadX-RTOS能够完美的配合完成一条龙的开发。Th
    发表于 08-24 06:04

    如何从单片机转做嵌入式Linux开发

    最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看来读者圈做单片机,RTOS的不少。尽管我目前从事Linux/Android方面的嵌入
    发表于 11-04 07:58

    浅析单片机和嵌入式开发

    对单片机和嵌入式开发的一点理解本文记录自己学习的一些理解,只谈自己的理解,欢迎讨论和指正。基于单片机标准库源码的开发在自己做项目的过程,使用st
    发表于 11-05 09:24

    嵌入式开发调试经验分享

    嵌入式开发过程中的一点调试经验嵌入式开发最麻烦的在现场调试过程或实际运营过程中出现问题很难定位。我在实际开发过程中一点经验分享给大家嵌入式开发
    发表于 11-05 08:15

    嵌入式开发就业方向的问题

    近几年来随着物联网的快速发展,嵌入式开发技术在我们的生活随处可见,目前嵌入式开发工程师在市场上的需求量大,薪资也是水涨船高。上海尚观科技今天主要是想给一些嵌入式开发的初学者们,具体说
    发表于 11-08 07:58

    如何从单片机转为嵌入式Linux开发

    最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发。看来读者圈做单片机,RTOS的不少。尽管小编目前从事Linux/Android方面的
    发表于 11-22 07:08

    嵌入式开发的基础知识和入门必要步骤

    ARM嵌入式开发嵌入式开发领略比较热门的技术,本文针对ARM嵌入式开发的入门者给出嵌入式开发的基础知识和入门必要步骤。1. 做个最小系统板:如果
    发表于 12-14 07:32

    STM32嵌入式开发中的RTOS,你用过哪些?

    嵌入式系统中,有很多方式实现任务调度。功能有限的小系统中,无限循环足够实现系统功能。当软件设计变得庞大且复杂时,设计师应该考虑使用RTOS(实时操作系统)
    的头像 发表于 10-20 09:38 442次阅读